1、深入学习的能力:高级程序员一定不是仅赞迢鹣嘞仅停留在技术的表面,而应该深入技术的核心原理,只有深入原理才能够更好地开筛觐子裆发出优秀的作品,比如Android界面启动的整套流程,Framework层摸个模块的深入学习,某个开源框架的深入研究,都将成为开发利器,面试形式是:都看过那些源码,是否能大概讲解下源码的原理?面试官非常重视是否学习研究源码,因为这是高级的基础。
2、快速学习的能力:在这个学习的速度赶不上知识更新的年代,如果不能在有限的时间内快速学习新的知识豆浆被淘汰,面试体现出来的形式是:最近有没有学习什么新的技术,如果要学习某一个新的控件比如:注入需要多久?这意味着你是否能够在跟得上公司快速成长的步伐。
3、全面的知识体系:高级开发者在实际开发的工程中需要有解决各种技术问题的能力,所以面试过程中会问及到方方面面的技术点,比如联网方面http,tcp/ip,socket通信,性能方面内存管理,内存泄露,性能优化,IPC AIDL用法,静默安装,泛型等等,你确信自己都能回答的全面吗?这个意味着你是否能够快速解决各种问题。
4、数据结构和算法基础:面试中必会问道基本的数据结构和算法,比如数组,链表,队列之前的区别,一些基本的排序比如二分查找,快速排序,有的则是要求当场写出这些算法。算法功底从某方面也意味着编程功底。
5、架构能力:设计模式的熟练使用也是意味着一个工程的架构能力,架构是一种抽象但是要求更高的能力,一个优秀的程序架构对于后期程序的拓展开发非常重要,更决定了整个程序开发的质量,非常重要。面试形式:都学习过哪些设计模式,哪些有使用过,甚至会要求当场设计出一个简单的架构,比如一个计算机。单例一半都也会要求写的。
6、技术细节:有很多公司面试比较独特,痘痉颔湄那就是会让你写一些程序,比如写一个算法,写listview中getview(),要求注意性能,根据你写出的程序会问及一些细节,比如为什么要用static静态,是否还有什么更好的优化方式,从细节评价开发者的水平,这点很重要,就是说那怕一些我们常用知识点,但是有时候我们却不清楚为什么用这个技术,为什么要这么用。
7、是否会借助开源:整个编程领域博大精深,我们犹如汪洋大海中的一叶扁舟,如果仅仅凭借自己的力量,很难取得非常大的成逼钽李沿绩,站在巨人的肩膀上,多去采集众多优秀的技术为己所用,是自身成长为高级,大牛必不可少的过程,开源网站github便是这样的一个平台,面试形式:是否用过github,都有fork学习那些优秀的开源框架,是否有贡献一些开源代码?
8、沟通能力:我想一个优秀的程序员不仅仅是只会写代码而已,到了更高的级别,编程思想便显得尤为重要了,良好的沟通交流能力也是好高级必须要具备的能力,面试本身就是沟通能力的体现,带初级工程师也是,思想的交流带来的是共同的成长。
9、总结:整个面试过程还有一点需要注意的那就是,在第二面过程中往往面试官会根据面试者的经验,去发现面试者是否有一些出色的成分,也就是说在竞争力面前,你有哪些比大多数同级别的人做的更好,你的闪光点在哪里,这就是竞争力。这点很重要,因为我很多面试就是在这点上吃亏了。