结尾
我还总结出了互联网公司Android程序员面试涉及到的绝大部分面试题及答案,并整理做成了文档,以及系统的进阶学习视频资料分享给大家。
(包括Java在Android开发中应用、APP框架知识体系、高级UI、全方位性能调优,NDK开发,音视频技术,人工智能技术,跨平台技术等技术资料),希望能帮助到你面试前的复习,且找到一个好的工作,也节省大家在网上搜索资料的时间来学习。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
我和朋友对话
面试题分享
一面 35min
-
自我介绍
-
项目相关:
-
JVM和DVM的区别,ART与DVM的区别。
-
有几种情况会产生ANR,ANR产生的原因
-
Android控件为什么不能加锁?
-
线程通信:
-
①handler简单讲一下
-
②Asyntask的缺点是什么?为什么官方现在不推荐使用。
-
③说一说handlerThread
-
Binder机制,AIDL简单说一下。
-
如果设备内存只有1G,加载一张20G的图片,需要怎么操作?
-
JVM GC部分:
一面总结: 一面面试官人真的非常好,特别喜欢他感谢他!总体上来说,非常注重安卓基础,安卓问的比较多。我准备了很久的计算机网络和操作系统居然没问。。。
二面 38min
-
自我介绍
-
有没有了解过插件化?插件化和组件化什么区别?
-
Applicatipn Context在什么情况下不能使用。(面试官提示dialog了我还不会,这个需要重点注意一下)
-
加载一张特别大的图片,该如何操作?(一面面试官也问了这个问题!回答的特别流畅哈哈哈)
-
一定要在主线程中更新UI吗?能不能在子线程更新?(这个我有一点印象,最后是面试官疯狂提示才想出来的surfaceView)
-
LRU的底层数据结构?双向链表如何提高查询效率?
-
kotlin是如何兼容Java的(这个我真不会,没想到连这都问)
-
你觉得你最大的优势是什么?(balabala讲了一堆,主要讲自己的学习能力强,团队合作能力强)
-
反问环节
二面总结: 二面主要是围绕项目,然后面试官问的特别特别深。相比之下,一面比较注重广度,考察你对整个安卓体系的知识。二面比较注重深度,考察你对安卓底层源码以及框架源码有没有深入的研究。
hr面 15min
hr面总结:其实hr面大家基本上如实回答就可以了,hr只是想要通过聊天对你有一个基本的了解,不要回答的太偏激太离谱就行。最终刷人也是综合一二三面的成绩排序。
腾讯
一面
1.mmap + native 日志优化?
2.广播和 EventBus 的区别?
3.常用设计模式你了解哪些?
4.跨进程通信有哪些?
5.简单讲讲 binder 驱动吧?
6.跨进程传递大内存数据如何做?
7.说说 ConcurrentHashMap 的实现原理说下,初始化大小是多少?
8.启动优化怎么优化?
9.你写的 rxpay 和 rxlogin 具体怎么实现的?
10.kotlin + fullter 方面的
二面
1.单例设计模式都写写,静态内部类是怎么保证线程安全的?
2.synchronized 底层实现原理,ReentrantLock 公平锁与非公平锁。
3.主线程等待所有线程执行完毕,再执行某个特定任务怎么实现?原理和源码看过没?
4.自定义 view 的一般流程,要注意些什么如何优化,点击事件和长按时间分别是怎么实现的?
5.四种启动模式,在源码分析中的原理是怎样的?
6.讲讲 bindService 的过程,你当初是怎么优化后台服务进程的?
7.开发中你都用到了哪些设计模式?说说当时具体的场景。为什么你要用方法工厂,另外两种呢?
8.RxJava 在使用过程中碰到了某些不友好的错误一般怎么解决?发现了内存泄露一般怎么解决分析,有没有碰到过系统服务内存泄露的问题?
9.你们用的 okhttp ?那你有没有做过一些网络优化呢?比如弱网环境。
10.给你个数 1 吧,比如 1000011 里面有几个 1 ?
11.快排了解不?最坏的情况是怎样?如果有大量重复数据怎么优化?
三面
1.讲讲 handler 的底层实现原理?
2.说说你做的日志记录优化?
3.你看过 binder 驱动的源码,说说他的内存映射过程,说说客户端等待服务端处理返回的流程,如果要跨进程传递大内存数据你具体会怎么做?简单写一写吧。
4.在公司做过哪些优化?
5.过程中遇到的一些最难解决的问题?
6.提到了动态修复替换加载 so ,那你知道怎么修复 class 吗?怎么修复资源呢?
7.还有什么要问的?
字节跳动
一、二面
时长:各1个小时,中间间隔有15分钟
-
ThreadLocal实现原理,map中的key value是什么
-
static块中能否调用实例方法
-
concurrenthashmap中是如何实现线程安全的,concurrenthashmap读的时候不加锁,那如何保证读的一致性 (Node数组用volatile修饰)
尾声
如果你想成为一个优秀的 Android 开发人员,请集中精力,对基础和重要的事情做深度研究。
对于很多初中级Android工程师而言,想要提升技能,往往是自己摸索成长,不成体系的学习效果低效漫长且无助。 整理的这些架构技术希望对Android开发的朋友们有所参考以及少走弯路,本文的重点是你有没有收获与成长,其余的都不重要,希望读者们能谨记这一点。
这里,笔者分享一份从架构哲学的层面来剖析的视频及资料分享给大家梳理了多年的架构经验,筹备近6个月最新录制的,相信这份视频能给你带来不一样的启发、收获。
PS:之前因为秋招收集的二十套一二线互联网公司Android面试真题 (含BAT、小米、华为、美团、滴滴)和我自己整理Android复习笔记(包含Android基础知识点、Android扩展知识点、Android源码解析、设计模式汇总、Gradle知识点、常见算法题汇总。)
架构篇
《Jetpack全家桶打造全新Google标准架构模式》
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
篇
《Jetpack全家桶打造全新Google标准架构模式》
[外链图片转存中…(img-JHu4TE8s-1714888461169)]
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!