金三银四,铜五铁六,个人面试通关秘籍(含HR)

前言:

前一段时间和大牛们交流了一下,据反馈如今Android岗位也没有之前那么多了,没这么好找了,面临着互联网的寒冬,不只仅是Android,大量公司模仿O2O模式致使死掉企业的不少,在加之培训机构大量的培训人,致使供大于求,固然这不意味着饱和,只是市场更趋于合理一些(只要技术好不用怕的)。最近结合一些面试的同窗和大牛们反馈,前几天有大牛去阿里面试顺便整理了下一些面试题目。但愿对你们有所帮助,后期会不断更新添加新的面试题。能够帮你们查漏不缺。如下是(阿里、腾讯、百度、华为、和字节跳动的试题聚集java

就算写出答案也不必(我写了部分面试答案,有须要的朋友能够浏览文末资料领取所有),由于开发与实际答案会有所不一样,再者怕误导你们,因此这些面试题答案仍是本身去理解吧!切记:不要背答案,多理解。面试

Android高级总结

1.说下你所知道的设计模式与使用场景
2.Java语言的特色与OOP思想
3.说下java中的线程建立方式,线程池的工做原理。
4.说下handler原理
5.内存泄漏的场景和解决办法
**6.如何避免OOM? **设计模式

答:1.使用更加轻量的数据结构:如使用ArrayMap/SparseArray替代HashMap,HashMap更耗内存,由于它须要额外的实例对象来记录Mapping操做,SparseArray更加高效,由于它避免了Key Value的自动装箱,和装箱后的解箱操做
2.便面枚举的使用,能够用静态常量或者注解@IntDef替代
3.Bitmap优化:
a.尺寸压缩:经过InSampleSize设置合适的缩放
b.颜色质量:设置合适的format,ARGB_6666/RBG_545/ARGB_4444/ALPHA_6,存在很大差别
c.inBitmap:使用inBitmap属性能够告知Bitmap解码器去尝试使用已经存在的内存区域,新解码的Bitmap会尝试去使用以前那张Bitmap在Heap中所占据的pixel data内存区域,而不是去问内存从新申请一块区域来存放Bitmap。利用这种特性,即便是上千张的图片,也只会仅仅只须要占用屏幕所可以显示的图片数量的内存大小,但复用存在一些限制,具体体如今:在Android 4.4以前只能重用相同大小的Bitmap的内存,而Android 4.4及之后版本则只要后来的Bitmap比以前的小便可。使用inBitmap参数前,每建立一个Bitmap对象都会分配一块内存供其使用,而使用了inBitmap参数后,多个Bitmap能够复用一块内存,这样能够提升性能
4.StringBuilder替代String: 在有些时候,代码中会须要使用到大量的字符串拼接的操做,这种时候有必要考虑使用StringBuilder来替代频繁的“+”
5.避免在相似onDraw这样的方法中建立对象,由于它会迅速占用大量内存,引发频繁的GC甚至内存抖动
6.减小内存泄漏也是一种避免OOM的方法数组

7.说下Activity的启动模式,生命周期,两个Activity跳转的生命周期,若是一个Activity跳转另外一个Activity再按下Home键在回到Activity的生命周期是什么样的
8.onRestart的调用场景
9.是否了SurfaceView,它是什么?他的继承方式是什么?他与View的区别(从源码角度,如加载,绘制等)。
10.如何实现进程保活缓存

答:a: Service设置成START_STICKY kill 后会被重启(等待5秒左右),重传Intent,保持与重启前同样
b: 经过 startForeground将进程设置为前台进程, 作前台服务,优先级和前台应用一个级别,除非在系统内存很是缺,不然此进程不会被 kill
c: 双进程Service: 让2个进程互相保护对方,其中一个Service被清理后,另外没被清理的进程能够当即重启进程
d: 用C编写守护进程(即子进程) : Android系统中当前进程(Process)fork出来的子进程,被系统认为是两个不一样的进程。当父进程被杀死的时候,子进程仍然能够存活,并不受影响(Android5.0以上的版本不可行)联系厂商,加入白名单
e.锁屏状态下,开启一个一像素Activity安全

11.说下冷启动与热启动是什么,区别,如何优化,使用场景等。
12.为何冷启动会有白屏黑屏问题?
13.Android中的线程有那些,原理与各自特色
14.ANR的缘由
15.三级缓存原理
16.LruCache底层实现原理:
17.说下你对Collection这个类的理解。
18.JVM老年代和新生代的比例
19.jvm,jre以及jdk三者之间的关系?JDK(Java Development Kit)是针对Java开发员的产品,是整个Java的核心,包括了Java运行环境JRE、Java工具和Java基础类库。
20.谈谈你对 JNIEnv 和 JavaVM 理解?
21.Serializable与Parcable的区别?数据结构

Android多线程总结

1.什么是线程
2.线程的状态
3.线程的建立
4.线程中断
5.Thread为何不能用stop方法中止线程多线程

答:1.即刻抛出ThreadDeath异常,在线程的run()方法内,任何一点都有可能抛出ThreadDeath Error,包括在catch或finally语句中。
2.释放该线程所持有的全部的锁。调用thread.stop()后致使了该线程所持有的全部锁的忽然释放,那么被保护数据就有可能呈现不一致性,其余线程在使用这些被破坏的数据时,有可能致使一些很奇怪的应用程序错误。app

6.重入锁与条件对象,同步方法和同步代码块
7.volatile关键字
8.java内存模型
9.原子性 可见性 有序性
10.线程池ThreadPoolExecutor
11.线程池的种类
12.线程同步机制与原理,举例说明
13.arrayList与linkedList的读写时间复杂度
14.为何HashMap线程不安全(hash碰撞与扩容致使)jvm

答:HashMap的底层存储结构是一个Entry数组,每一个Entry又是一个单链表,一旦发生Hash冲突的的时候,HashMap采用拉链法解决碰撞冲突,由于hashMap的put方法不是同步的,因此他的扩容方法也不是同步的,在扩容过程当中,会新生成一个新的容量的数组,而后对原数组的全部键值对从新进行计算和写入新的数组,以后指向新生成的数组。当多个线程同时检测到hashmap须要扩容的时候就会同时调用resize操做,各自生成新的数组并rehash后赋给该map底层的数组table,结果最终只有最后一个线程生成的新数组被赋给table变量,其余线程的均会丢失。并且当某些线程已经完成赋值而其余线程刚开始的时候,就会用已经被赋值的table做为原始数组,这样也会有问题。扩容的时候 可能会引起链表造成环状结构

15.进程线程的区别
16.Binder的内存拷贝过程
17.传统IPC机制的通讯原理(2次内存拷贝)
18.Java内存模型(记住堆栈是内存分区,不是模型)
19.类的加载过程
20.什么状况下会触发类的初始化
21.双亲委托模式
22.双亲委托模式的好处
23.死锁的产生条件,如何避免死锁
24.App启动流程
25.Android单线程模型
26.RecyclerView在不少方面能取代ListView,Google为何没把ListView划上一条过期的横线?
27.HashMap如何保证元素均匀分布

Android View总结

1.View的滑动方式
2.View的事件分发机制
3.View的加载流程
4.View的measure layout 和 draw流程
5.自定义view须要注意的几点

HR问题汇总

1您在前一家公司的离职缘由是什么?
2讲一件你印象最深的一件事情;
3介绍一个你影响最深的项目;
4介绍你最热爱最擅长的专业领域;
5公司实习最大的收获是什么;
6与上级意见不一致时,你将怎么办;
7本身的优势和缺点是什么?并举例说明?
8你的学习方法是什么样的?实习过程当中如何学习?实习项目中遇到的最大困难是什么以及如何解决的;
9说一件最能证实你能力的事情;
10针对你你申请的这个职位,你认为你还欠缺什么;
11若是经过此次面试咱们单位录用了你,但工做一段时间却发现你根本不适合这个职位,你怎么办;
12项目中遇到最大的困难是什么?如何解决的;
13你的职业规划以及我的目标;将来发展路线及求职定位;
14若是你在此次面试中没有被录用,你怎么打算;
15评价下本身,评价下本身的技术水平,我的代码量如何;
16经过哪些渠道了解的招聘信息,其余同窗都投了哪些公司;
17业余都有哪些爱好;
18你作过的哪件事最令本身感到骄傲;
19假如你晚上要去送一个出国的同窗去机场,可单位临时有事非你办不可,你怎么办;
20就你申请的这个职位,你认为你还欠缺什么;
21当前的offer情况;若是BATH都给了offer该如何选;
22你对一份工做更看重哪些方面?平台,技术,氛围,城市,money;
23理想薪资范围;杭州岗和北京岗选哪一个;
24理想中的工做环境是什么;
25谈谈你对跳槽的见解;
26说说你对行业、技术发展趋势的见解;
27实习过程当中周围同事/同窗有哪些值得学习的地方;
28家人对你的工做指望及本身的工做指望;
29若是你的工做出现失误,给本公司形成经济损失,你认为该怎么办;
30若上司在公开会议上误会你了,该如何解决;
31是否能够实习,能够实习多久;
32在五年的时间内,你的职业规划;
33你看中公司的什么?或者公司的那些方面最吸引你。

我是以专题的形式来分析关于Android面试经过秘籍,整理资料不易,在Android学习或者在面试方面有须要提高,准备的朋友能够加入个人技术交流群818520403里面不只仅有Android各种专题面试资料,BAT高级源码面试题,还有提供学习的系统进阶视频资料,如今面对找工做的困境,须要提高本身的朋友们推荐加入。

相关文章
相关标签/搜索