Android面试总结

作者: Lavie_Mo | 来源:发表于2019-05-08 22:53 被阅读376次

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

    相关文章

      网友评论

        本文标题:Android面试总结

        本文链接:https://www.haomeiwen.com/subject/unfwkxtx.html