总结一下我在面试过程中的面试题以及要求.
公司招人,会有各自的标准,但是无非就那几条:
①价值观认同,这里面包括公司的创业文化,需要大家辛苦付出,可能会有加班的情况(互联网公司的普遍现象),认同公司的理念和愿景,愿意同公司一起发展.
②学习能力
③态度,这里面包括对自己团队,自己负责的业务,以及与同事的沟通等等.容易沟通,表述精准,传达到位也是很重要的,那种吵架,磨嘴皮子,打嘴炮的,就会产生严重的内耗,得不偿失,所有的公司都不希望招这样的人.
④专业能力,也代表着你过去的经验的总结和能力,之所以放在最后,是因为,专业能力只能代表着过去,只是一个起点,真正重要的还是前面的几点要求.
通常我面试的时候,都会从两个方面考察,
①业务能力,包括管理团队和项目.
②是技术能力
业务能力包括产品思维,参与需求制定和讨论,与技术,产品,服务,设计等等,共同推进和完成需求.
技术能力当然包括自身的技术实力和更广阔的技术把控和基于实际项目的技术方案选择能力
一般会从这两个点来面试.
当然重点还是技术能力,从技术能力上来说,也分两个方向:
①技术深度
②技术广度
技术深度,会着重在面试者擅长的那些技术点,进行深入的挖掘,通过不断的深入提问和询问,来了解面试者对其中的原理了解层度,了解的深度,从而可以从侧面反映出面试者对技术热爱以及钻研程度,从这方面也大致能推断出面试者的其他方面的能力和深度,从而可以了解面试对待技术的态度和是否原理深入了解,从而判断面试者的素质
技术广度则是侧重在面试者了解的知识面,涉猎是否广泛,对自己所在行业是否有一定的技术嗅觉,一方面可以判断出面试者是否有大量实践经验,一方面是否具有一定的技术嗅觉,是否紧跟技术潮流,拥抱最新的技术,毕竟技术是第一生产力.技术广度也能最大程度上说明一个面试者的视野和高度.
虽然Android 开发现在已经具有了丰富的开发库和各种越来越越好的底层支持.但是原理依然很重要,不然写不出高质量和稳健的以及扩展性的代码.
通常我会从下面来的几个技术点来考察:
①基础的数据结构以及相应的算法,我们平常会遇到各种各样的业务场景,Android也在java的基础之上,提供了各种各样的数据结构的封装,随意更重要的是需要掌握一定的数据结构以及算法,从而更好的选择合适的数据结构
②关于内存的使用和性能优化,这是保证应用性能和稳定关键所在,怎样高效使用内存,避免泄露,以及快速和流畅的界面响应和动画,是保证应用流畅的关键
③关于并发,比如线程的相关知识,同步,锁等等相关的概念和使用场景,这跟数据结构一样,同样重要
④关于图片处理的一些技巧,比如缓存,如何节省内存,如何使用缩放模式(这是开发中的常用场景)
⑤屏幕适配
⑥设计模式的理解以及应用,比如mvp,mvvm等等,一定要讲清楚自己的理解和设计的用意,不是背书!
拔高类
①关于Android消息机制以及原理
②android中的界面渲染更新原理,如果是做应用开发,就重点2D
③关于跨进程通信,这个是android核心
④内存模型
⑤插件化开发
另外还会考察,面试者是否具备技术攻坚能力,攻克重大技术难题,解决复杂问题的能力