一次Android岗社招面试经历

1、关于协程的概念

2、Handler机制如何保证消息不错乱?

3、消息延迟是如何实现的?

4、HandlerLooperMessageQueue三者对应关系?

5、内存泄漏如何避免?

6、Looper中的死循环为什么不会引器主线程ANR

7、开发过程中如果想替换第三方jar中的某个class文件,或者在开发时你的class文件与jar中的重名,但是你想使用自己的应该如何解决?如果你替换掉某个方法又该怎么解决?

8、IONIO的区别?

9、Android开发过程中的版本适配问题?

10、Android开发中的屏幕适配方案?

11、synchronizedlock的区别?

12、单例模式有几种写法以及各自的优劣?

13、ArrayList LinketList区别?

14、hashmap的实现原理?hashmaphashtable的区别?

15、gson序列化数据时如何排除某个字段?

16、多线程中sleepwait的区别?

17、ButterKnifeXutils注解的区别?以及Retrofit中的注解是如何处理的?

18、jvm的类加载机制?

19、列举一些git版本控制的常用操作符?

20、AsyncTask的原理以及弊端?AsyncTask为什么要求在主线程加载,对象为什么要在主线程创建?

21、输出字符串的最长的没有重复的字符子串,这道牛客题霸上有原题,大家可以去看看:NC41 找到字符串的最长无重复字符子串

22、对有序int数组去重,并输出去重后的长度,并打印出来,要求时间复杂度为O(n),空间复杂度为O(1)

例如:

int[] array = {-1,0,0,2,4,4,4,6};

长度为:5,打印结果为:-10246


23、ActivityActivity之间传递数据?

24、FragmentActivity之间传递数据?

25、FragmentFragment之间传递数据?

26、ThreadLocal作用?

27、深复制(深拷贝)与浅复制(浅拷贝)的区别?

28、大图的局部加载(BitmapRegionDecoder),在不使用BitmapRegionDecoder类的情况下,自己实现局部加载?

29、常见的排序算法?手写快排?对冒泡排序的优化?

30、假设有ABC三个线程,在A线程的执行过程中去执行B线程,并且等待B线程的执行结果,然后去执行C线程,然后当C线程执行完成后,返回结果给A线程。不阻塞线程,如何实现?

31、在使用git管理时,commit到本地库后,发现漏了文件,如何处理?(rebase命令合并两次commit的数据)

32、kotlin中的内联函数

33、kotlin中的两种懒加载区别?(by lazylateinit

34、kotlin中扩展函数的弊端?

35、在使用kotlin开发过程中,遇到过哪些坑?

36、Activity中的contextApplication中的context区别?

37、Activity的四种启动模式?当A配置了singleTask启动模式后,A-->B-->C-->D ,此时再启动A,会回调哪个方法?(onNewIntent()生命周期方法)

38、Activity的启动过程?(不是Activity的生命周期,或者换一种问法:应用的启动过程?)

39、jsnative互调?安全问题处理?WebViewurl的拦截?

#社招##安卓工程师##面经#
全部评论
大佬几年经验啊
点赞 回复
分享
发布于 2021-04-02 12:08

相关推荐

3 34 评论
分享
牛客网
牛客企业服务