前言
回顾一下自己这段时间的经历,三月份的时候,疫情原因公司通知了裁员,我匆匆忙忙地出去面了几家,但最终都没有拿到offer,我感觉今年的寒冬有点冷。到五月份,公司开始第二波裁员,我决定主动拿赔偿走人。后续的面试过程我做了一些准备,基本都能走到hr面,后面我也顺利地拿到了offer,我给大家分享下我的求职体会,希望能给大家一些参考。
一般Android面试分为两部分:Java部分和Android部分,下面说一下自己面试过程遇到的一些具体题目和一些相关知识点。
一 Java相关
1.重载函数的签名(区别是否是重载函数) 答:方法名+参数类型+参数顺序(返回值不是) 2.finalize的工作原理 答:一旦垃圾收集器准备好释放对象占用的存储空间,它首先调用finalize(),而且只有在下一次垃圾收集过程中,才会真正回收对象的内存.所以如果使用finalize(),就可以在垃圾收集期间进行一些重要的清除或清扫工作。此外系统进行垃圾回收时并不保证一定会调用它,所以可以说它和对象被回收没有必然关系。 3.一个对象的创建过程 答:例如有一个Dog类: ?1.即使没有static,构造器其实也是静态方法,所以当首次创建Dog时或者Dog的静态域或者静态方法被访问的时候,Dog的class对象会被加载。 ?2.在加载Dog的class的时候可能会发现其有基类,此时先暂停Dog的加载,转而去加载其基类。所以基类的static域比子类先初始化。 ?3.载入class文件之后,会创建一个该该类的class对象,所有关于静态初始化的动作会被执行,所以静态初始化只在Class对象首次加载时进行一次。 ?4.当使用new的时候,首先为Dog对象在堆上分配足够内存空间。这块内存控件会被清零,所有实例都被初始化成了默认值,包括基类。 ?5.执行所有字段定义处的初始化,从基类开始。 ?6.执行构造器。(在第一行会执行基类的构造器) 4.对象的销毁是按照创建的逆序来进行的。 5.final的方法和类都不允许覆盖和继承。private默认实现了final。 6.简述内部类的特点 7.形式参数可被视为local variable,也就是说形式参数相当于在方法中定义了一个局部变量a,当传入c时,只是将c指向的对象给a 8.finally 语句块是在 try 或者 catch 中的 return 语句之前执行的 9.简述jvm中默认的classLoader与功能 10.switch语句后的控制表达式只能是short、char、int、long整数类型和枚举类型,不能是float,double和boolean类型。String类型是java7开始支持 11.重写的特性 12.!=和==,当用于基本类型时候,是比较值是否相同;当用于引用类型的时候,是比较对象是否相同,比较内存地址 13.null可以被强制类型转换成任意类型的对象,于是通过它来执行静态方法 14.如何终止一个线程 15.静态属性和静态方法是否可以被继承 16.列出各种List,Set,Map,Queue并说出他们的同与不同。 17.列出几种线程池 18.解释一下java内存模型 19.解释一下java代码的原子性 20.解释一下volatile字段 21.解释一下synchronized字段 22.Lock的使用 23.wait()和sleep()区别 24.死锁产生的条件
二 Android相关
Android部分我就不分几大块了。直接列举,但是列举到的每一项都是面试经常会问到并且会延伸问的,所以需要深入的去研究。 1.Android事件分发机制,请详细说下整个流程 2.Android view绘制机制和加载过程,请详细说下整个流程 3.Activty的加载过程 请详细介绍下 4.Activity的启动模式: 5.Activity缓存方法: 6.Service的生命周期,两种启动方法,有什么区别: 7.怎么保证service不被杀死 8.广播的两种注册方法,有什么区别。 9.Intent可以传递哪些数据类型 10.Json有什么优劣势 11.动画有哪几类,各有什么特点: 12.Handler、Loop消息队列模型,各部分的作用。 13. 怎样退出终止App:自己设置一个Activity的栈,然后一个个finish()。 14. Android IPC:Binder原理 15.android的优化 16.一个singleton如何实现线程的同步问题 17.android重要术语解释 18.理解Window和WindowManager 19.Bitmap的处理: 20.综合技术: 21.如何实现一个网络框架(参考Volley) 22.ClassLoader的基础知识: 23.插件化框架描述:dynamicLoadApk为例子 24.热修复:Andfix为例子
三 Android相关总结
上面的列的相关内容,看似很短一句话,但是每一项都需要你深入的去研究,要了解原理,最好去看一下源码实现。当然还有一些是我没写到的,可能是我写的时候没有想起来,并不代表他们不重要,你也需要重视,再来一波推荐: 《Android开发艺术探索》强烈推荐,建议细细的读,如果粗心大意建议读两到三遍,针对性的读。 《Android进阶之光》 《高级Android开发强化实战》 《Android组件化架构》 《Android热修复技术原理》 《Android插件化开发指南》
五 面试心得
1.准备要充分,知识面要尽量的广,同时深度也要够。 2.面试安排上,如果不着急,尽量给自己留多时间,两天一家,及时做总结和补充。 3.心态要放平,当做一次技术交流,面试要看一部分的运气,也要看一些眼缘,有的面试官一张嘴你就能感觉到你这次面试完了。想去的公司没有面试好,不要气馁,继续加油准备。 4.简历投递方面,拉勾上投了很多经常不匹配,可能是我学历问题(自考本),有一些打击自信心,如果有同样感受的,不妨换BOSS或者其他平台。避免打击自信心。 加油准备。 4.简历投递方面,拉勾上投了很多经常不匹配,可能是我学历问题(自考本),有一些打击自信心,如果有同样感受的,不妨换BOSS或者其他平台。避免打击自信心。
|