2024年Android最全被裁后自学三个月4个offer!深圳,5年+开发(1),2024年最新全靠这套面试题

文章详细描述了Android程序员面试中常见的技术问题,涉及框架、内存管理、跨平台技术等内容,强调了知识体系化学习的重要性,提供了一份系统化的学习资料链接,以及鼓励加入技术交流社群以共同进步。
摘要由CSDN通过智能技术生成

结尾

我还总结出了互联网公司Android程序员面试涉及到的绝大部分面试题及答案,并整理做成了文档,以及系统的进阶学习视频资料分享给大家。
(包括Java在Android开发中应用、APP框架知识体系、高级UI、全方位性能调优,NDK开发,音视频技术,人工智能技术,跨平台技术等技术资料),希望能帮助到你面试前的复习,且找到一个好的工作,也节省大家在网上搜索资料的时间来学习。

image

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

我和朋友对话

面试题分享

一面 35min

  1. 自我介绍

  2. 项目相关:

  • ①ARouter路由框架:有没有看过源码?分析一下。如果是你来设计,你会如何设计路由跳转?

  • ②Retrofit网络框架:看过源码吗?简单说下。

  • 项目难点,如何解决?

  1. JVM和DVM的区别,ART与DVM的区别。

  2. 有几种情况会产生ANR,ANR产生的原因

  3. Android控件为什么不能加锁?

  4. 线程通信:

  • ①handler简单讲一下

  • ②Asyntask的缺点是什么?为什么官方现在不推荐使用。

  • ③说一说handlerThread

  1. Binder机制,AIDL简单说一下。

  2. 如果设备内存只有1G,加载一张20G的图片,需要怎么操作?

  3. JVM GC部分:

  • 为什么不使用引用计数法而是使用可达性分析法

  • 各种GC算法的优缺点,分代回收算法

  • 内存泄漏问题,在Android一般如何定位?有使用过什么工具解决吗?

一面总结: 一面面试官人真的非常好,特别喜欢他感谢他!总体上来说,非常注重安卓基础,安卓问的比较多。我准备了很久的计算机网络和操作系统居然没问。。。

二面  38min
  1. 自我介绍

  2. 项目(项目怼了挺久的,一直深挖。建议大家要非常熟悉简历上的项目,一些细节也要注意到,这个环节差点被怼哭🤣)

  3. 有没有了解过插件化?插件化和组件化什么区别?

  4. Applicatipn Context在什么情况下不能使用。(面试官提示dialog了我还不会,这个需要重点注意一下)

  5. 加载一张特别大的图片,该如何操作?(一面面试官也问了这个问题!回答的特别流畅哈哈哈)

  6. 一定要在主线程中更新UI吗?能不能在子线程更新?(这个我有一点印象,最后是面试官疯狂提示才想出来的surfaceView)

  7. LRU的底层数据结构?双向链表如何提高查询效率?

  8. kotlin是如何兼容Java的(这个我真不会,没想到连这都问)

  9. 你觉得你最大的优势是什么?(balabala讲了一堆,主要讲自己的学习能力强,团队合作能力强)

  10. 反问环节

二面总结: 二面主要是围绕项目,然后面试官问的特别特别深。相比之下,一面比较注重广度,考察你对整个安卓体系的知识。二面比较注重深度,考察你对安卓底层源码以及框架源码有没有深入的研究。

hr面 15min
  1. 自我介绍

  2. 实习在做什么项目?有没有遇到什么困难,如何解决?

  3. 除了实习,有没有其他安卓项目,如何分工。和组员有矛盾如何解决?

  4. 你觉得你应聘这个岗位最大的优势是什么?

  5. 反问环节

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分钟

  • JVM GC:标记算法、回收算法、垃圾收集器 走一套

  • 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行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 18
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值