pengjin 2019-12-21
今天分享一位应届毕业生的校招面经,大家可以看看查漏补缺。
很多忘记了,能回忆起来的就尽量写多一些。
1.内存泄漏的场景,Handler机制
2.四大组件
3.进程间通信
4.自定义view
5.Binder的使用
6.性能优化
7.fragment的生命周期
8.事件分发机制,以及涉及到的设计模式
1.接口和抽象类区别
2.继承和重写
3.ArrayList和LinkedList区别
4.死锁产生条件和应用场景
5.Java的修饰符的使用,static final修饰原理
6.多线程空指针解决方法
7.异常处理流程,何时必须要catch
1.进程和线程区别
2.多线程同步和异步问题
3.同步死锁应用场景
1.代理模式
2.单例模式以及双重锁原理
3.观察者模式应用场景
1.无序数组建立二叉搜索树
2.前序和中序遍历二叉树(我写了递归和非递归)
1.四大引用区别和引用场景
2.内存泄漏的场景,Handler内存泄漏的原因以及解决方法
3.Handler机制,主线程如何向子线程发送消息,Handler能否多进程通信
4.多线程并发,sychronized,类锁和对象锁
5.线程安全类,StringBuffer和StringBuilder
6.jvm工作内存和主内存,volatile原理,jvm的静态块,内存屏障的实现原理
7.一个m * n的棋盘,一个虫子从左上走到右下方,只能向右或者向下,有多少种走法,可以用组合数学的知识解答
8.静态广播和动态广播区别,service启动的两种方式区别
9.onMeasure的测量模式与特点
10.线程间通信和进程间通信
11.ArrayList删除元素
12.写出你认为最优的懒汉式单例模式
13.activity意外退出时信息的储存与恢复,onCreate正常进入时的判断。
14.JS的交互理解吗?平时工作用的多吗,项目中是怎么与Web交互的?
15.MVC -> MVP -> MVVM 这样变化的原因,MVP的不足,MVVM为什么代替了MVP
16.MVC的情况下怎么把Activity的C和V抽离
17.各个网络框架之间的差异和优缺点,网络框架代替进化的原因
18.图片缓存框架的差异和优缺点,有没有比Glide更好的图片加载框架?
19.项目框架里有没有Base类,BaseActivity和BaseFragment这种封装导致的问题,以及解决方法
20.框架里是怎样实现MVC的
21.Reftofit用过没有,注解实现的好处?
22.项目中的的界面既然是基于View的,有没有动画的处理?
为什么不推荐软引用,软引用在dvm上的垃圾回收机制和jvm上一样吗?
23.LRUCache的删除条件,LRU是什么意思
24.启动页缓存设计 白屏问题
25.网络图片怎么加载?Glide如何确定图片加载完毕
26.项目框架中对多View的支持?
27.Http的request和response的协议组成
28.RecyclerView和ListView相比有哪些好处,为什么ListView被RecyclerView代替?
1.将知道的操作系统说一遍,引入操作系统的最终目的(计算的功能),进线程区别,虚拟地址的原理和作用,指针是物理地址还是虚拟地址,指针的地址长度的影响因素,32位系统是4个字节,64位系统是8个字节。
2.Java的三大特性,写一个多态的例子,注意命名的规范
3.一个很大的数组,其中有一个数出现的次数是奇数次,其他都是偶数次。求这个数。除了异或写另外一种方法
1.Android的体系架构,深入到framework,native层
2.单例模式的几种实现具体的区别,工厂模式的种类以及区别
3.对C语言的理解
4.Android的触摸事件分发流程
5.Android第三方框架的源码实现原理
京东的面试题感觉都差不多,难度一般。
印象深刻的如下:
1.对着我的项目问了一些具体实现的问题
2.一些基础的问题就不想再重复了,比如ArrayList和LinkedList区别
3.最后一道简单的算法题作为结束:求两个字符串的最长公共子串
1.也是跟一面差不多Java和Android,比如Activity的启动模式,类加载的过程
2.设计模式
2.Activity的启动流程,这个有点意思
很多真的忘记了,只记得下面这些了。
1.讲一下项目,主要是深入框架的源码
2.Java忘记问啥了,Android问启动模式的时候,对四种启动模式的实际运用问得比较深,还有触摸事件的细节问得深
3.sp的commit和apply区别
4.左连接和右连接区别
5.算法:输出二叉树每层的最大值
1.集合类,线程安全如何实现,写一个算法ArrayList删除所有值是50的。
这里有坑:http://blog.csdn.net/lazy_p/article/details/7365324
除了遍历还有更优的方法吗?想不出来。换成LinkedList性能如何?
2.异常类的继承结构,如何捕捉异常,如何全局捕捉异常并上报
3.数据的存储方式与其的应用场景,ContentProvider的底层实现,如何保证多进程读写安全
4.类加载,jvm内存模型
5.自旋锁
6.Linux的fork
7.数据库的ACID
8.手写反转链表
1.intent是什么来的?为什么不是动作,用来干什么的?
(什么向什么表现什么意图)
2.为什么设置tcp三次握手,四次挥手
3.hashmap的底层实现
4.场景题分析:手机扫网页端的二维码如何提起的登录的过程,是如何实现的?
5.Service的源码
6.Handler的实现,Looper怎么终止。
7.项目是MVC,那根据自己负责的项目讲下Model、View、Controller层
8.问了下昼夜模式、多语种、屏幕适配的问题,追问了下,如果要关闭昼夜模式功能怎么办?很多类的话,一个个去关吗?
9.有没有接触过JNI和NDK?
10.ListView的错位问题原因以及如何处理?
11.如何设计一个抽奖系统,比如满200抽20,满500抽50
一些基础知识和理论肯定是要背的,要理解的背,用自己的语言总结一下背下来。
虽然 Android 没有前几年火热了,已经过去了会四大组件就能找到高薪职位的时代了。这只能说明 Android 中级以下的岗位饱和了,现在高级工程师还是比较缺少的,我能明显感觉到国庆后多了很多高级职位,所以努力让自己成为高级工程师才是最重要的。
有些东西你不仅要懂,而且要能够很好地表达出来,能够让面试官认可你的理解,例如Handler机制,这个是面试必问之题。有些晦涩的点,或许它只活在面试当中,实际工作当中你压根不会用到它,但是你要知道它是什么东西。
对于程序员来说,要学习的知识内容、技术有太多太多,要想不被环境淘汰就只有不断提升自己,从来都是我们去适应环境,而不是环境来适应我们!
好了,希望对大家有所帮助。
接下来是整理的一些Android学习资料,有兴趣的朋友们可以加我wx:X1524478394 免费获取。
①Android开发核心知识点笔记
②对标“阿里 P7” 40W+年薪企业资深架构师成长学习路线图
③面试精品集锦汇总
④全套体系化高级架构视频
Android精讲视频领取学习后更加是如虎添翼!进军BATJ大厂等(备战)!现在都说互联网寒冬,其实无非就是你上错了车,且穿的少(技能),要是你上对车,自身技术能力够强,公司换掉的代价大,怎么可能会被裁掉,都是淘汰末端的业务Curd而已!现如今市场上初级程序员泛滥,这套教程针对Android开发工程师1-6年的人员、正处于瓶颈期,想要年后突破自己涨薪的,进阶Android中高级、架构师对你更是如鱼得水,赶快领取吧!
上述【高清技术脑图】以及【配套的架构技术PDF】可以 加我wx:X1524478394 免费获取