Thursday, January 28, 2016

J2EE Phone Interview 10

Friday, January 22, 2016

J2EE Onsite Skype Interview 2

1. Pass by Value vs Pass by Reference !!!!

2. How to make a immutable class

3. Difference between List Set and Map

4. How to commit code in Git

5. What is the difference between fetch and pull in Git

6. What is difference between snapshot version and release version.

7. How to make a compile time dependency in Maven

8. What is the difference between final finally and finalize?

9. What is static in Java?

Thursday, January 21, 2016

J2EE Onsite Skype Interview 1

Calculate Total Price Exercise
Accept 3 inputs from the user:
● How many items
● Price per item
● 2-letter state code
Output the total price. Give a discount based on the total price, add state tax based on the state and the discounted price.

Order Value
Discount Rate
$1000
3%
$5000
5%
$7000
7%
$10000
10%
$50000
15%

State
Tax Rate
UT
6.85%
NV
8.00%
TX
6.25%
AL
4.00%
CA
8.25%

Acceptance Tests:
First Test
When an item price is 493.87
And an item quantity is 15
And a state is CA
Then the total price is 7,457.87

Second Test
When an item price is 1,493.87
And an item quantity is 825
And a state is UT

Then the total price is 1,119,335.32

Implement Test Driven Development Methodology

  • 必须知道什么是TDD以及TDD的Best Practice
  • 得分点: 分成两个文件夹Test 和 Java
  • 得分点: 先写测试
  • 得分点:测试类名必须是XXXTest.java
  • 得分点:测试类和被测试类必须在同一个package里面,例如model
  • 熟悉JUnit API了解 assertEquals方法如何测试double类型
  • 计算折扣的业务逻辑非常容易搞错
  • floating point numbers are not perfectly precise
  • price 设计成 int 表示美分也是也是一个重要的点

ASD - Agile Software Development

1. 项目分成好几个 Sprint 一个Sprint 大约 2 到 3 周.

2. Project Manager 或者 Team Lead 对一个 Sprint 分成很多个 Story.

3. 一般情况下在某一个周五进行 Sprint Planning. 分析接下来2-3个星期做什么,哪些story可以做,谁来做。

4. 用 RALLY 做 Agile 的开发分配任务等.

5. 一个 Story的难度由一系列Fibonacci数列定义。所有Story加在一起的分数为一个 Sprint 的难度。一般在30几分左右。

6. 每天早上汇报昨天做了什么,今天打算做什么,预计有什么困难?

7. 一个 Story 步骤 Design, Development, Code Review, Unit Test, Functional Test, Debug, Retest, Story 结束

8. 一个 Sprint 开发结束之后需要做 DEMO, DEMO 需要经过stakeholder同意通过。

9. Sprint 开发结束之后要开一个会叫做 Agile Retrospective 总结有哪些做的好或者不好的,学到了什么经验可以用来提高以后的开发效率。

10. 做完所有的Sprint要Smoke Test 看看有没有基本的问题. 之后代码从 Dev 移到 QA.

11. 做Integration Test

12. 做Regression Test 看新的程序对旧的输入有没有影响。

13. 把代码转交给Stake Holder 一方的 QA 做 End To End Testing 和 User Acceptance Testing.

Sunday, January 17, 2016

Netflix的系统设计


NETFLIX, YOUTUBESPOTLIGHT系统设计SNAKE分析


宏观角度
微观角度
罗列功能
对所有功能进行排序
设计最重要的功能:播放电影
设计某个小模块
比如电影推荐
设计接口和方法
USER
      ·         Daily Active Users
      ·         Average Concurrent Users
      ·         Peak Users
      ·         Max Peak Users in 3 month
对方法的调用频率进行计算
计算QPS
计算需要多少server达到所需QPS

TRAFFIC
      ·         Traffic per user 3mpbs
      ·         Max Peak Traffic in 3 month
MEMORY
      ·         Memory per user 10k
      ·         Max Daily Memory if double in 3 month
STORAGE
      ·         Total Number of movies
      ·         Calculate total storage usage considering different quality of movies


应用设计模式的知识设计系统Service结构 MVC架构)
算法和数据结构


Model DAO不同文件不同数据库选择 MySQL MongoDB 以及 File
改进算法和数据结构提高QPS
改进效率,扩充性,鲁棒性
改进效率,扩充性,鲁棒性

Saturday, January 16, 2016

程序员能力的评判标准

程序员能力的评判标准
能力
LEVEL 1
入门
LEVEL 2
深度
LEVEL 3
广度
LEVEL 4
经验
LEVEL 5
预测
编程
能力
能够完成函数级开发
能够完成模块级开发
能够完成项目级开发
能够作为主程完成大规模系统的开发
能够前瞻性的预测研发的走势并作出准备
现场写代码

评分标准:
可读
有效
防御
多线程:能解决生产者消费者问题
网络:能解决爬虫问题
数据库:能够使用MySQLNoSQL
调试:发现并能够解决BUG
优化:能在时间和空间维度解决问题

评分标准:
可以举出实例,不需要都会,
至少要在2点上有深度
技术调研:介绍调研的案例
代码整合:介绍整合开源内部库的案例
突发问题:介绍解决突发问题的案例

评分标准:
体现项目级别
至少在2点上有特色
介绍你作为主程最具挑战的一个项目。

评分标准:
案例支持技术点
强调整体的把控能力
作为项目的主程,你下一步会怎么做?
设计
能力
通过算法和数据结构解决问题
能够设计基本的系统
能够设计大规模分布式系统
参与真实的系统设计并贡献重要力量
能够前瞻性的预测架构的走势并进行准备
字符串处理算法题
用面向对象方法设计消息系统
设计日活跃用户1000万的消息系统
介绍你参与的最复杂的架构设计。
有哪些经验和改进的思路?
作为首席架构师,你下一步会做什么?
理解
学习
能力
能够快速抓住对方沟通的重点
能主动学习需要掌握的技能
从更大的维度补充需要的知识
具有钻研突破难题的经验
有清晰的职业规划
能否一遍听懂面试官的问题
你进入上家公司的时候是如何上手的
你在上家公司有哪些提升,是如何提升的?
你在上家公司遇到了哪些挑战?
是怎么解决的?
如果重新来一次,有什么更好的方案?
你的职业规划是什么?
你希望提升的方向是什么?
为什么来我们公司?
总结
表达
教学
能力
能够用简约的话表达重点
能够把自己的知识教给身边的人
能从对方的角度讲问题(跨专业)
具有对公共分享的经验
沟通前瞻性,
能够预知对方的需求和疑问点,
并且主动进行沟通
介绍自己你的亮点和需要提高的地方
你是如何带新人的?
如何让他们融入团队?
如何解决意见不一致?
挑战别人的答案。
在公司和部门分享案列
自己能够通过直觉感知。


SCORE
LEVEL
ALI
BAIDU
TENCENT
8-9
L1
P5
T4
T1.2-T2.2
10-13
L2
P6
T5
T2.2-T3.1
14+
L3+
P7+
T6+
T3.1-T3.2