前言
之前趁着金三银四跳一波槽,想来一线城市看看自己能力,本来信誓旦旦事不过三,最慢也要一周就能找到合适的新东家,没想到一个多月过去了才找到适合的。而且在这过程中不停的冒冷汗,自己离现在的行业标准真的差了蛮多,还是得多学习啊,之前真是太安逸了。所以打算把笔试面试遇到的最多的问题记录一下
基础问题:
- Activity,fragment,service的生命周期;
- view的绘制过程以及事件分发原理,自定义view;
- handle原理以及工作流程【补:handle子线程之间的通信,解析handle引起的内存泄露
- service的两种启动方式以及差别
- activity三种启动方式:冷启动、热启动、暖启动
- activity的四种启动模式:Standard,SingleTop,SingleTask,SingleInstance
- Android的三种动画:View Animation(视图动画),Drawable Animation(帧动画),Property Animation(属性动画)【问的不多
- java多线程的机制原理,以及在多线程中如何避免死锁
- 单例模式的几种类型【问的不多,不过笔试有考
- 内存优化的方法,以及内存溢出和内存泄漏的差别,如何避免
- 多线程和多并发,以及运用的场景
- Android的组件化开发和插件化开发
- http和tcp/ip的关系,tcp的三次握手和四次挥手原理
- socket相关
- 接口和抽象类的区别
- MVC,MVP,MVVM的联系和区别
- AIDL传输原理
- app保活的几种方式
加分和特殊项
这一项中包括了当前Android开发的趋势以及笔试面试的加分项
- 了解并且阅读过一些现在流行的第三方框架源码,了解它们的运行原理以及优缺点,比如:retrofit,okhttp,Rxjava,glide,ButterKnife,evenbus等
- 混合开发:现在混合开发区域流行,用这个方式可以更加灵活的开发,增加开发速度。现在主要分为几种:(1)Hybrid APP:Hybrid App主要以JS+Native两者相互调用为主,从开发层面实现“一次开发,多处运行”的机制;(2)ReactNative:一种用JavaScript开发的移动应用,做出来的东西可用于ios和android,具体的可以去官网参考;(3)Flutter:谷歌出的移动ui框架,可以用于ios和android两端;(4)直接使用webview和h5页面结合,不过中间的交互用原生写有些麻烦,推荐用codova这个第三方框架
- 音视频编解码,以及流媒体的播放:当前的网络升级有利于移动应用的流媒体开发,所以这东西最好要会一些:(1)硬编码和软编码,原始文件yuv怎么转换等问题,(2)了解音视频同步原理,I帧,P帧,B帧相互的关系,(3)RTMP、RTSP、HTTP协议之间的差别,(4)RTSP流媒体花屏问题,(5)surfaceView启动流程
- jni:jni是Android Ndk开发的基础工具,使用到C/C++进行代码的编写,在一些硬件开发中起到至关重要的作用
- 蓝牙
- 断点下载断点续传,以及多并发上传和下载
- kotlin的应用
【先记到这。。。