面经半栈工程师Android 面试专辑

Android面试总结

2018-05-14  本文已影响36人  康小白白

前言:

“金三银四”这句话真的不是说说而已,每年的三四月份确确实实是招聘旺季,各公司人才缺口大,市场总体需求量大增,想要换份好工作的同学们一定不要错过哦!

个人认为,每一次的跳槽经历对我们来说都是一次提升,在面试前,需要我们去回顾基础知识,深入了解各大框架,狠刷算法题等等;面试过程中,我们要沉着冷静,思路清晰,知无不言,言无不尽,也是对我们沟通能力的考验;面试过后,我们必须找个安静的地方,对整个面试过程进行复盘,同时对面试题进行记录,对自己的回答进行总结。下面是我对自己近期面试的部分总结,目前只给出了问题,之后我会尽量补上答案,希望能够帮到大家!

奇虎360:

1、Activity启动模式及应用场景

2、handler机制、以及和message、looper等之间的关系

3、与service通信的几种方式,进程间通信和进程内通信的区别

4、线程死锁、用代码实现

5、写出两种单例模式,说出优缺点

6、实现recycleview侧滑删除

7、http、tcp/ip,get和post区别

8、内部类为什么会内存泄漏?换成静态内部类为什么就解决了?

9、给recycleview加header和footer如何加,为什么能加,复杂布局实现等

10、输入字符串“abcdef”,输出“*****abcdef”,并返回号个数,代码实现,尽量用空间复杂度和时间复杂度最小的方式

11、一个整数数组中,只有两个数出现1次,其他数均出现2次,求这两个数,尽量用空间复杂度和时间复杂度最小的方式

12、谈谈项目中自己认为做的很好并有一定难度的东西

人人车:

1、activity生命周期,onsaveinstance和onrestoreinstance是成对调用的吗

2、set和list有什么区别

3、线程池的创建、使用,核心线程和非核心线程的区别

4、handler机制,looper什么时候创建?在prepare里做了什么?在loop方法里做了什么?

5、自定义view绘制,onMeasure里测量规格,测量模式和测量大小如何存在?

6、事件分发机制,onTouch、onTouchevent和onClick的调用顺序

7、okhttp的实现原理、普通拦截器和网络拦截器有什么区别,缓存拦截器和网络拦截器的调用顺序

8、retrofit的实现原理,动态代理相关

9、rxjava线程调度器有几种、如何使用?

10、如何实现进程间通信?binder原理相关

11、servicemanager的作用是什么?

12、bundle传值有限制吗?是多少?

13、抽象类和接口区别、接口中可以有方法体吗?

14、hashmap是怎么实现的?发生数据碰撞该如何处理?

15、handler的post和sendMessage有什么不同?有什么联系?

16、manifest中activity的export属性有什么作用

新东方在线:

1、自定义view流程

2、RxJava使用,原理等

3、activity间跳转时的生命周期

4、内存泄漏和内存溢出的区别

5、强软弱虚引用的区别

6、设计模式、静态内部类的单例模式为什么性能好

7、30M的大图片处理

8、字符串反转

好未来:

1、项目中是如何使用MVP模式的?实现与结构

2、自定义view流程

3、性能优化、内存泄漏、内存溢出(列举项目中遇到的)

4、本地与h5互调有哪些方式?连接桥的方式用过吗?

5、事件分发流程

6、http与https区别,post和get区别

7、两个单链表相交,找出相交的结点(手写实现)

8、获取单链表倒数第k个元素(手写实现)

9、153=13+53+3^3,求出符合上述条件的1000以内的数(手写实现)

课程格子:

1、自定义view流程,有一个宽高属性设置为wrapcontent的imageview,它的大小是如何测量的?

2、rxjava的线程切换,single和observable等的区别,subscribeOn和observeOn可以调用几次?

3、简述OKhttp的原理,如何实现?

4、handler的postDelayed内部是如何实现的?

5、简述eventbus的原理

6、arrayList和linkedList区别

7、介绍一下接口的特征

8、activity启动模式,singletask相关,任务栈相关

9、项目中框架的搭建

10、native和js互调有哪些方式?注解的方式会有问题,说说怎么解决的

狸米科技:

1、anctivity启动流程

2、广播安全性,本地广播、设置权限、绑定进程等

3、事件分发流程

4、rxJava 被观察者如何创建?有几种创建方式?如何实现线程切换的?转换用过吗?

5、设计模式用过哪些?手写单例模式

6、volatile关键字的作用

7、content provide如何使用

8、项目中做过哪些内存优化

总结:

1、java和Android基础一定要过一遍,推荐大家看这个总结,比较全面

2、Android中流行的各大框架至少要会用并了解原理,然后最好能深入源码理解,这点很加分;

3、一般大点的公司都会有两到三轮技术面试,第一轮面基础,二轮和三轮除了问的更深之外,算法题也是少不了的,建议大家平时抽空刷刷LeetCode或者剑指Offer

最后,祝每一位努力的人都能得到自己想要的结果!加油!

上一篇下一篇

猜你喜欢

热点阅读