面经
创个帖子,总结下最近面试的公司的一些面试题,希望能对现在正在找工作的朋友有帮助,会不断更新。
常见问题:
java:
- java面对对象思想
- java类加载机制:加载过程,类加载器等
- java内存模型,堆,栈,方法区等的用途
- java垃圾回收机制,回收算法以及引用算法
- java多线程,多线程方式等
- 线程池,参数的意义,有几种线程池
- 同步中volatile, synchronized, lock的作用以及区别
- 同步的方式有哪些?同步包的使用
- java中信号量的使用
- 线程的运行状态,在代码中如何进行把控?
- ArrayList,Vector,LinkedList,Hashmap, Hashtable,Treeset,Treemap,Blockingqueue等集合的实现原理以及它的衍生物。
- 平常使用的数据结构模型有哪些,各有什么用处,不同点。
- java内存泄漏以及解决方式
- final,static的作用以及原理
- Java内部类与外包类的关系,非静态的与静态的区别
- java中的异常分类,处理方式
- 链表反转,二叉树求高度
- 排序的方式,解释思路
- 接口与抽象的区别
- 死锁的原因,怎么避免
- java中的类,所有类加载器都没加载,是被什么所加载
Android:
- handler机制,handler, looper, messengequeue, messenge, threadloacl的关系,最好能从源码的角度去分析。
- Android中多线程的使用方式,区别
- Android性能优化,内存、冷热启动、卡顿、过度绘制、Apk瘦身等问题工具的使用,举些例子
- Android 四大组件的使用、生命周期,原理等
- Activity的启动模式,区别
- Activity栈的结构
- Activity的启动流程
- Android事件分发机制,三个方法,还有一些细节要注意
- ListView嵌套问题,滑动冲突,item显示问题,如何处理
- viewpager 嵌套Listview的滑动冲突解决
- 自定义view的实现方式
- 动画的实现有几种,区别在哪,高级的动画怎么实现
- 动画的性能优化
- Activity跳转时的生命周期调用
- Service的启动方式,区别
- IntentService与Service的区别,会继续问些细节如HandlerThread
- Aidl的原理以及使用
- Android跨进程通信的方式
- Android Binder的用法,架构,实现原理等
- Android中使用到的设计模式
- Android类加载机制,描述模型,各个加载器的用途
- 热修复与插件化的介绍,原理
- 项目中使用的架构,MVP,MVVM的使用,区别,原理
- AMS,PMS的作用
- AMS 与 应用之间如何进行通信,架构如何
- AMS中的消息机制
- AMS与Activity生命调度关系
- 应用运行权限的使用以及原理,可以举个蓝牙权限的申请,BluetoothService启动功能时会检查
- Android系统的启动流程
- ContentProvider的使用及原理
- Android中的数据存储
- Android架构介绍
- 开发和维护过哪些framework的业务逻辑
- Context的设计思想
- JNI的原理以及使用
- Android多语言适配
- Android多分辨率适配
- Android全面屏适配
- 根据生命周期的问题,来分析一个内存泄漏的问题, 如Context引用
- Android中网络框架的使用以及原理
- 用过的开源框架的使用以及原理
- 图片的优化,以及三级缓存机制
- Android中的动态代理
- Databinding的原理
- Android进程与Linux进程区别
- AndroidP中的用户空间以及Window空间的区别
- Android中的加密机制
- 用过SeLinux吗?如何写用例
- CTS问题你们是如何处理的
- Android手机系统研发的流程
- Handler机制中Messengequeue为空时,会如何?
- 项目中使用过组件化开发吗?用的什么框架?了解原理吗?如何设计路由的?
- Android应用安装的流程了解过吗?
其他:
- http与https的区别,如何进行加密
- http的请求方式,特点,报文结构
- socket的原理以及使用
- 手写算法,算法的效率等问题
- 职业规划
- 为什么要离职
- 项目中遇到最大的困难是什么
- 大家对你的看法是什么
- 三次握手,四次挥手
- Shell基本的使用,比如,查找某个目录下某个文件的一个方法
- git原理,本地操作后,一系列提交的过程
- git冲突的处理
- git中的merge, cherry pick, rebase区别
- repo的使用以及原理
- 开发,bug的流程,等级,周期是如何的
- 聊一聊敏捷开发
公司面试题
腾讯面试题:
热修复
listview加载复杂布局 错位
大图加载
view自定义
网络框架
缓存
内存泄露
印象最深/遇到的难点
synchronized 与 锁的区别
锁有几种
减小apk大小
混淆
Android跨进程通信的方式
笔试:
- 输入两个二进制字符串,想加,输出二进制字符串
示例:
Input: a=“11”, b=“1”
Output: “100” - 给一个语料库,按行存储,文件大小100MB,根据语料库,实现查找自动补全
示例:
语料库:
abcdefg
abcdde
acbba
aedff
abcxxx
Input: abc
返回: abcdefg, abcdde, abcxxx
要求 - 运行内存不超过100MB
- 自定义数据结构,缓存语料库,无需每次查找都加载
今日头条面试题:
blockingqueue底层实现,leankcanry底层实现
除了嵌套属性动画,怎么做更复杂的动画
final的使用,内存关系
内存泄漏,过渡绘制,启动优化
多线程,结合了blockingqueue
listview的嵌套使用:滑动冲突,item问题
mvvm底层原理
动态代理
view的绘制,事件消费的一些细节为