Android面试总结

从4月17号提离职到今天,已经面试了整整15家公司了,其中有二三十个人的小厂,也有像腾讯QQ音乐和OPPO这样的大厂,因为本人做的项目也是比较杂的,所有面试的类型也比较多,有做ReactNative的,也有做人工智能、机器人的,同时也有做智能家居的,所以接触到的面试题也是比较多的,为了避免自己忘记,在这里做个总结,先把面试题给列出来,之后有时间再补充答案.

  Java方面:

  1、如何停止一个线程请求;

  2、线程之间的通信方式;

  3、线程和进程的区别;

  4、进程之间的通信方式;

  5、Java的垃圾回收机制;

  6、哈希算法以及HashMap的底层原理;

  7、数组和链表的区别;

  8、读写锁和互斥锁的区别;

  9、重载和重写的区别


  Android方面:

  1、AsyncTask的原理

  2、RxJava如何进行线程切换,如何取消RxJava的请求以及RxJava的错误重试api

  3、自定义view的三个方法,invalidate和postInvalidate的区别,requestLayout会调用哪几个方法,onLayout中的三个方法

  4、Android的事件分发机制,以及如何解决滑动冲突等(ScrollView中包含ListView和GridView的滑动冲突)

  5、自述从业以来最满意的一个项目,在其中遇到什么问题,如何解决,讲一讲阅读过印象最深刻的技术博客,从中学到了什么

  6、项目中如何解决ANR

  7、做过的Android性能优化,包括包体积、内存优化、布局优化等;

  8、Android的屏幕适配;

  9、Android webview和Js的通信;

  10、ProtocolBuffer的优缺点以及底层实现;

  11、https和http,http怎么传递数据,https怎么加密数据;

  12、LeakCanary的原理;

  13、handler相关,handler底层处理消息的算法;

  14、如何实现音视频的同步;

  15、Okhttp的底层原理;

  16、RecycleView中数据复用可能会存在的问题以及如何解决;

  17、EventBus的原理;

  18、Android中四种启动模式以及应用场景;

  19、Activity的启动方式;

  20、ListView如何实现复杂布局,不同Item不同子布局;

  21、Glide的原理以及和piccasso的区别。

  22、如何给数据库添加索引;

  23、OpenCV、OpenGL等图片处理的东西;

  24、Android的Hook技术,如何不在AndroidManifest中注册启动一个Activity;

  25、Android中的四种引用方式;

  26、Jni的使用经验


  React Native:

  1、React的生命周期;

  2、Js中的事件循环;

  3、ReactNative中原生和Js的通信方式;

  4、redux的原理,如何解决action的异步操作(中间件);

  5、如何优化FaltList加载长数据;

  6、ReactNative的优缺点;

  7、setState方法可以那几个生命周期中调用;

  8、ReactNative如何进行数据缓存;

  9、React Native调用setState做了什么


暂时能想起来的就是这些了,其中Android的事件分发,Handler是问的比较多的问题,其他的就是根据你项目中做过的一些点进行一个提问了,总的来说,因为离职前都还有一直在做新需求,也没啥时间准备,被虐的还是挺惨的,不过也好,认识到了自身存在的一些问题。现在市场不缺能实现功能的码农,缺的是了解底层原理的程序员。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。