招聘的面试之道
简历看人
- 是否有错别字(细心、责任心)
- 是否正确、逻辑清晰(出品质量、思维能力)
- 是否特出重点(归纳能力)
- 是否有技术相关社会化活动,像开源、解答、博客(热情程度)
介绍专长
- 是否有激情
- 沟通能力是否过关
- 技术能力是否足够
- 是否符合团队文化
基础检验
基础点原理题3~4题,要能考验技术是否扎实
技术深度检验
- 你用过为止,觉得最牛逼或者最佩服的框架是哪个?介绍一下这个框架的整体工作原理流程?
符合企业文化
- 为人简单直接
- 办事专一不浮躁
- 能信任身边的团队伙伴,不孤军作战自以为是,乐于分享帮助他人
- 做最好,不做只好
行为面试
在你哪个项目,遇到过最大困难或挑战,是什么和如何解决的(是否有独立解决问题的能力)
代入工作环境,设立一个虚拟场景考验(是否有良好编码习惯、异常处理规范、代码逻辑缜密、开发效率)
示例
Android
基础
创建数组对象时预留内存空间的目的是什么?缺点是什么?
- 若空间不足时添加新元素,则需要先重新申请一块足够大的连续的内存空间,并将所有元素移到新空间上,再添加新元素(因为数组中元素地址要求连续,所以对跳跃查找十分友好)。
- 可能会浪费一部分的内存空间。
对集合的读取、插入、删除,在数组与链表两种数据结构中分别如何选用
- 数组:读取
- 链表:插入、删除
使用StringBuffer、StringBuilder、String 之间去编辑字符串的区别
- java.lang.StringBuffer是线程安全的可变字符序列。
- StringBuilder线程不安全不同步,但速度更快,一般情况下选用(超16字符时使用)
- String 是不可变的对象, 因此在每次对 String 类型进行改变的时候其实都等同于生成了一个新的 String 对象(消耗系统性能),然后将指针指向新的 String 对象。
try catch 为什么被设计出来?使用有哪些注意点?
- 需要返回错误的类型、信息,不与正常代码混淆。
- 不要在循环中使用,应移出循环外捕获异常
- 不应随便捕获,来避免不可预知的错误发生
final、protected、private修饰方法的区别
- final是任何人都不能修改方法,包括子类的重写,但可以使用;
- protected是只有自己和子类可以使用,子类可重写,而外部其它类不知道该方法的存在;
- private是只有自己可以使用,子类以及外部其它类都不知道该方法的存在。
assets目录与res目录的区别
- res:会被编译器转成R.java去编译,每个资源会有ID标识,获取资源方式:R.xx.yy(raw没被压缩存在于apk,R中的内容是其映射;drawable是失真压缩的二进制)
- assets:不会被编译,存在于apk,通过AssetManager访问,,可访问子目录,获取资源方式:文件路径+文件名
ListView与RecyclerView的区别
深度
阐述Thread+Handler+MessageQueue相互间的工作流程。
- 关系:Thread拥有Looper,Looper拥有Handler和MessageQueue,但Looper拥有Handler的前提是需要一个绑定过程,就是在实例化Handler时传指定Looper到实例方法中,不传的话默认是获取当前线程的Looper进行绑定。所以在主线程实例化Handler且不指定Looper的话,其handleMessage就会在主线程执行。
- 消息队列:线程默认都绑定着一个MessageQueue,handleMessage是依靠Looper轮询消息队列后,将消息分发下来所触发的。当队列中没消息时,线程会自动阻塞,除非我们手动销毁线程,否则等到有新消息后就继续轮询。
- 子线程:子线程默认是没有Looper的,即是不会自动开始消息轮询和分发,所以如果要在子线程实例化Handler的话,必须先给子线程创建配置Looper并将其启动。
- 通信:其它线程利用Handler向往当前目标线程发消息时,当前目标线程会将Message塞入子线程的MessageQueue去,待轮询分发消息后,触发执行handleMessage。
为什么要为线程Thread设计一个Runnable接口,去作为线程实例化时的入参?
- 避免Thread单继承的局限和多Thread之间可以共享Runnable中的资源
除了上述的方式实现多线程,还有其它哪些方式?如何实现?
- AsyncTask
- 重写几个关键函数:
- onPreExecute:执行异步线程前的回调,处理UI的初始化,是在主线程中回调
- doInBackground:执行异步线程任务,其中可调用publishProgress,从而回调onProgressUpdate,来显示进度
- onProgressUpdate:进度回调,在主线程中回调的
- onPostExecute:返回异步线程任务的执行结果,在主线程中回调
- onCancelled:将异步线程任务状态置为取消后,需自行在doInBackground判断任务的状态进行实质性的阻止中断,即回调此函数
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 mingfungliu@gmail.com
文章标题:招聘的面试之道
文章字数:1.4k
本文作者:Mingfung
发布时间:2019-10-17, 13:54:00
最后更新:2020-10-28, 14:23:26
原始链接:http://blog.ifungfay.com/uncategorized/面试之道/版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。