前言:
“金三银四”这句话真的不是说说而已,每年的三四月份确确实实是招聘旺季,各公司人才缺口大,市场总体需求量大增,想要换份好工作的同学们一定不要错过哦!
个人认为,每一次的跳槽经历对我们来说都是一次提升,在面试前,需要我们去回顾基础知识,深入了解各大框架,狠刷算法题等等;面试过程中,我们要沉着冷静,思路清晰,知无不言,言无不尽,也是对我们沟通能力的考验;面试过后,我们必须找个安静的地方,对整个面试过程进行复盘,同时对面试题进行记录,对自己的回答进行总结。下面是我对自己近期面试的部分总结,目前只给出了问题,之后我会尽量补上答案,希望能够帮到大家!
奇虎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。
最后,祝每一位努力的人都能得到自己想要的结果!加油!