还原腾讯的一场 30K—50K 的 Android 高工面经(3),2024年最新高级前端开发面试题

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Android开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip204888 (备注Android)
img

正文

14、注解:Source和Class、Runtime注解的区别

15、卡顿优化

16、内存泄漏检测及优化

17、RecyclerView的缓存,局部刷新用过么?

18、List的滑动卡顿如何优化

19、Activity中的Window的初始化和显示过程

20、Application中可以显示Dialog么?为什么?

21、泛型擦除,为何会有擦除?擦除的时机。通配符。

下面这段代码有问题么?有什么问题?为何会有这个问题?

List<? extends Object> list = new ArrayList<>();

list.add(123);

Object obj = list.get(0);

22、synchronized的同步原语

23、锁的几种状态

24、Android热修复原理,tinker的patch文件如何生成,patch文件是全部加载dex文件首部么?

25、插件化原理

26、两个用单链表表示的大数相加,求他们的和。单链表元素的值为0~9。

三面

1、讲下hashmap;链表转红黑树的限制为何是8;红黑树的时间复杂度;红黑树转链表的限制为何是6;current hashmap在所有情况下都是线程安全的吗?hashtable呢?

2、synchronized实现。非静态方法A和B在同一个类中,方法A用synchronized修饰,当A方法因为多线程请求有线程阻塞在对象锁上的时候,B方法的访问受不受影响?

3、既然泛型有编译期类型擦除,那么运行时无法获取到具体类型;而反射能在运行时获取到Class的类型;它们一个获取不到,一个可以获取到,这不就是矛盾么?请解释下细节。

4、在同一个手机上,如果把drawable-xxhdpi下的图片移动到drawable-xhdpi下,图片内存是如何变的,解释原理。如果在drawable-hdpi、drawable-xxhdpi下放置了图片,但是手机是xhdpi的,会优先加载哪个,加载优先级是怎样的?如果是400_800,1080_1920这种呢,会如何查找?xhdpi和400*800同时存在时,会如何查找?布局文件呢?

5、图片内存优化;

6、Handler机制。MessageQueue中的Message是如何排列的?Msg的runnable对象可以外部设置么,比如说不用Handler#post系列方法(反射可以实现);

7、application中持有静态的用户信息,有何缺点?如何改进?

8、mvp和mvvm,jetpack

四面

1、选一个你的项目讲一下

2、技术选型是如何做的

3、优化内存

4、上传的重试机制

5、OOM和内存泄漏

6、包体积优化

7、你最擅长的点

8、你的职业规划

最后的我,很幸运,在2021的七月份,拿到我人生中第一个互联网大厂的offer。当后面HR跟我谈薪的时候,我才明白这一次我真的成功了。在高兴和惊喜同时我也想分享我的个人面试心得,希望能给到准备冲大厂的朋友一点帮助。

三、面试后的个人心得

准备周期

面试之前,最好先系统的复习一下基础知识,然后再复盘下自己的项目经历,把亮点都发掘出来。复习周期个人建议是一个月到三个月,时间不宜太久,久了就容易懈怠或者闭门造车,三个月的时候最好出去开始试水,检验一下自己的学习效果。

复习计划的制定和进度的把控也很重要,可以参考我的学习计划去学习,再根据自己的实际情况去做适当的调整。

复习技巧

我一直认为学习没有捷径可言。我信奉"好记性不如烂笔头",也信奉"书读百遍其义自见"。

一定要去实践。对于我们程序员而言,不单单是死记硬背,我们有更好的方式去学习,比如写demo去验证,比如学习源码的过程中,一定要自己去翻看源码,多翻几遍看熟了再说。

学习笔记我认为很重要,不仅要记笔记,还要写心得体会,文字笔记、画图、总结等,方式很多,但是一定要自己认真去做,不要太相信自己的记忆,只有反复记忆,加深理解才行。

学习知识点的过程中,可以遵循What、How、Why这个三板斧。即这个东西是什么?它是怎么做的?它为什么这么做,原理是什么,有没有更好的方式?

在复习的过程中,都是从一个个小的知识点开始学的,复习到一定阶段,可以尝试着去把这些东西串联起来,由点及面。

另外在复习的过程中,一定要及时跟你做过的项目结合起来,这样也可以反哺你的项目,你在面试时就知道怎么聊了,就会有项目讲到知识点,由一个知识点串联到另一个知识点,这样你的知识体系就建立起来了。

答题技巧

面试总体上是一个你跟面试官相会了解、相互交流的过程,大厂的面试官一般都很奈斯,如果你遇到不会的问题了,可以及时请教对方,不会了就问,不要怕丢面子,面试本就是一个学习和相互交流的过程,offer不是目的,只是个过程。

另外,有些时候某些技术或者知识点你不了解细节,但是大体的设计思路你是知道的,你就尽可能的答出你的理解,可以用横向的类似的技术去阐述这个技能点。

有些时候如果某个知识点一时半会想不起来了,可以迂回一下,跟递推公式一样,根据你擅长的知识点,一步一步去推导,先大胆假设,再小心求证,推导的过程也能说明一些问题。

还有需要注意的一点,对于不会的东西,可以尝试从原理角度去回答,但是尽量不要说错,回答的不全和方向错了是两个概念。

这里给大家准备一份我在家复习过的《Android面试核心知识PDF》,这份笔记是我面试之前花了二个多星期整理的,在面试过程中,这份笔记也帮了我不少的忙。但是因为简书的推荐机制,这里不能展示全部,如有需要这份资料的朋友可以私信我【面试】我发给你下载地址

四、面试常考的 Android知识点(部分)

  • Java基础方面:JVM、String、内部类、多态、抽象和接口、集合框架(Hashmap、Arraylist)、单例、线程、Synchronized、Look锁、动态代理、引用

  • Android基础方面:四大组件、View、进程、Bitmap、屏幕适配、消息机制、线程异步、WebView。

  • Android扩展方面:ART、Apk优化、Hook、Proguard、架构(MVC/MVP/MVVM)、Jetpack、NDK开发。

  • Android源码方面:Leakcanary、Eventbus

  • 设计模式方面:面向对象六大原则、工厂模式、单例模式、建造者模式、观察者模式、适配器模式、策略模式、代理模式

  • 算法方面:排序、二叉树、链表、栈和队列、二分、hash表、堆、数组/双指针、字符串处理、动态规划

  • 网络知识:Http(缓存、Https、Http2.0)、TCP(三次握手四次挥手、socket)、类加载器

PDF(部分)展示

资源分享

一线互联网面试专题

379页的Android进阶知识大全

379页的Android进阶知识大全

网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。

2020年虽然路途坎坷,都在说Android要没落,但是,不要慌,做自己的计划,学自己的习,竞争无处不在,每个行业都是如此。相信自己,没有做不到的,只有想不到的。祝大家2021年万事大吉。

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

需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注Android)
img

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

体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注Android)
[外链图片转存中…(img-kVeeQvsZ-1713364270276)]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值