必知必会 - 迈向卓越

       企业是如何选拨高素质工程师(高级软件工程师or架构师)的?除了脑筋急转弯那种简单的开场白外,还需要更专业,更深邃的交流。这里,我把自己平时的思考备案分享给大家,欢迎讨论~

基础技术篇(数据结构,并发编程,JVM内存调优等)

1. 谈谈对队列offer,poll,peek操作的理解(实现,算法复杂度)

2. 谈谈对HashMap,ConcurrentHashMap,ConcurrentLinkedQueue,AbstractQueuedSynchronizer的理解(实现,核心操作,算法复杂度,使用场景)

3. 谈谈对字符集的理解
4. 谈谈对NIO编程模型的理解

5. 谈谈TCP网络编程可能会遇到的问题
6. 谈谈对序列化的理解
7. 谈谈对softReference,weakReference,PhantomReference的理解
8. 谈谈对异常的理解
9.谈谈对设计模式的理解
10.谈谈对类加载器原理的理解,child first/parent first模型优缺点如何?
11.谈谈对ASM的理解
12.谈谈JVM调优经验

13. Maven的phase,goal有什么区别?lifecycle呢?Git是如何pull request的


全局统筹篇(技术深度,广度,前沿技术敏感度,工作习惯,架构观)
1. 工作中,除了对J2SE libarary的使用外,你还会用到哪些工具库?(脚手架问题,用好了极大提升效率,也可考察出其知识面)选择这些库的标准是?举几个简单例子吧
2. 精度丢失的问题,遇到过吗?(float,double,BigDecimal) 如何避免?
3. 序列化中需要注意什么问题?对时间的序列化,又需要考虑什么?
4. Apache,Ngix,Lighttpd怎么解决高并发访问的?采用什么模型?优缺点是?如何调优?poll,select,epoll模型在各个web server中的实现情况?
5. Memcached 是分布式缓存,还是集中式缓存?实施中需要注意什么问题?
6. 工作中,设计模式用的多吗?怎么用?visitor模式应用中需要注意些啥?
7. 谈谈你对架构的理解。工作中,你是如何去架构设计一些系统的?(可以从基础框架方面谈起,也可以谈谈是如何帮助团队成员做设计评审的)

8. 架构vs.设计?如果让你设计一个IOC容器,如何用优雅的架构保证你的设计?

9. 并发编程中需要注意些什么?哪种情况下线程可以Reentrant?如何优雅的结束线程?啪啦啪啦一堆堆问题

10. Reactor模式和Proactor模式了解多少,web server中有哪几种高性能IO模式?

11. 曾经参与过或者分析过哪些开源框架,带给你最大的感受是什么?

12  如果公司让你设计一套应用监控平台(Java平台),你觉得会碰到哪些技术难点(架构或细节层面均可谈谈。可以谈谈java agent技术)?

13. 谈谈你对consistent hashing algorithm的理解,如何设置虚拟节点,如何选择hash算法(更高的命中率,有效的故障转移)?
14. 归并排序,堆排序工作中有用到吗?如何应用的?

15. 谈谈你sql优化方面的经验?可以从执行计划谈起,对choose,rule.cost进行剖析


敏捷流程篇(团队建设,人才培育,基础建设)
1. 敏捷思想能为你工作中带来什么?怎么理解coding-pair的?
2. 人,而不是流程或方法决定了软件开发过程的成功,谈谈你的看法?
3. 用JIRA来跟踪管理我们的问题和需求;用Confluence来聚集团队的想法、计划和知识?在此过程中,你遇到了哪些问题;
4. 持续集成,版本控制方面,你是如何做的?

5. 你是如何推进项目执行的?

6. 招聘是一个请进来的过程,为了找到更靠谱的人才,你的做法是?请进来之后,又是如何帮助他们成长的?


参考文献:

1.http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html

2.http://www.openwebx.org/docs/autoconfig.html

3.http://mojo.codehaus.org/

上一篇:iOS翻页视图控制器UIPageViewController的应用


下一篇:JVM调优文献参考