字节跳动4面+腾讯三面一次过,谈谈我的大厂面经

写在开头的闲言碎语

2023年已经快过半,对很多人来说,这一年经历了太多太多,可能是十年来记忆里比较浓墨重彩的一笔。过去的一年里,“熬”算是这个阶段我的关键字,确实太多时候就要放弃,好在自己“熬”过去了,在新的2023年里,也有个一个非常好的开端,我收获了心仪的offer。

简单来说,我今天也想要凡尔赛一次,原来大厂的面试也没有想象中的那么难,字节跳动3面+腾讯6面,就这么一次性过了,下面就细细聊聊我的大厂面经吧,希望能够给要面试的朋友提供一些经验。

字节跳动4轮面试场景重现

整场三轮面试下来,感觉字节的面试好像也没啥特别的,基本上都是那些东西,比较模块化了,每一块也都会问几道题,所以大家的知识狩猎要广一点,面试题如下(我没有按几面来了,实在记不得,正好给大家分版块,感受更明显一些)

  • 1.自我介绍

  • 2.Https和Http的区别

  • 3.TLS四次握手

  • 4.代码管理工具(我答git,但是不太会用,面试官就跳过了)

  • 5.经典HashMap全家桶(底层数据结构,哈希冲突,扩容,为什么1.8以后采用红黑树)

  • 6.Activity A启动Activity B,这两个Activity的生命周期回调顺序(A先onPause,B再走onCreate流程)

  • 7.Activity的onSaveInstance()

  • 8.Handler.post

  • 9.ViewGroup的事件分发

  • 10.主线程如何向子线程发送消息(在子线程创建一个Looper,主线程Handler构建的时候参数传入子线程的Looper,那主线程调用这个Handler发送的消息都会被加入到子线程的Looper中的MessageQueue中)

  • 11.场景题,ScrollView里面嵌套两个高度都为两个屏幕RecycleView,分别为RecycleView1和RecycleView2,如何处理ACTION_MOVE事件来达到只有一个RecycleView的效果(MOVE事件先交给RecycleView1处理,等到RecycleView1到达底部,将MOVE事件交给ScrollView处理,当RecycleView2完全展示屏幕上,再将MOVE事件交给RecycleView2处理)

  • 12.ViewGroup层次遍历(层次遍历可以用队列实现,但我用矩阵实现,脑子不是很清醒,没注意层次遍历,一开始直接写了一个深度遍历,好在面试官提醒了,大家一定要注意审题呀!

腾讯三面场景重现

一面:(50min)

自我介绍
项目的整个设计过程。
MVVM,MVP,MVC的区别
LiveData在项目里的实践是怎样的,遇到了什么问题;有没有想过怎么去解决LiveData膨胀的问题;
Handler,messageQueue懂多少说多少,越详细越好
事件分发机制的原理是什么,核心的几个函数有哪些,它们之间的协作方式
View绘制的三个流程;onMeasure中的measureSpec,wrapContent为什么会失效
内存泄漏是怎么避免的?LeakCanary原理是什么,没看过源码的话现在想一下该怎么实现
项目里的webView是如何优化加载速度的的
RecyclerView和ScrollView为什么不能一起使用

二面:(60min)

线程池用过吗,工作组件有哪些,OkHttp用的是什么线程池,为什么要用
synchronized锁升级的过程,为什么要设计这个锁升级
HashMap的实现,如果要自己实现多线程安全的HashMap怎么操作
如果我想要自定义个任务有优先级的线程池,应该从哪些方面入手
为啥打开一个app以后默认会显示白屏吗,为啥不是黑屏呢?
进程间通信方式有哪些,Binder讲一下,和共享内存的区别是什么
动态代理和静态代理
数据结构和23种设计模式
RecyclerView的性能优化怎么实践
堆排序实现

三面:(40min)

自我介绍 & 项目介绍
有了解过Retrofit是如何简化网络请求的吗?
Retrofit会结合一些注解进行使用,对注解有什么了解吗?
APT有听说吗?是做什么用的呢?自己有上手用过吗?
AOP的概念有了解吗?
Compose有了解过吗?
Flutter有了解过吗?

经验总结

多家面试总结下来,考察的范围都很广,包括基础知识、项目。

基础知识这块,需要花大量时间准备每一个细节,知其所以然,这样才能面试的时候问起来,都能头头是道。

项目,阿里比较注重项目,所以不仅要熟悉项目做了什么事情,而且要提炼出项目中的闪光点或者说不一样的地方,这些在面试之前都要想清楚。

然后就是要多刷题。面试了这么多公司,除了阿里,其他公司的每一轮都会要求做题,所以在面试之前要对各种常见面试题了解,有时间的话多去刷刷题找感觉。

面试题笔记分享

为了助力朋友们跳槽面试、升职加薪、职业困境,提高自己的技术,本文给大家整了一套涵盖测试所有技术栈的快速学习方法和笔记。目前已经收到了七八个网友的反馈,说是面试问到了很多这里面的知识点。

内容涉及数据结构与算法、Android架构师筑基必备技能、高级UI、Android Framework、性能优化、NDK与音视频开发、设计思想开源框架、Jetpack Compose、车载系统开发、Flutter。

通过大数据总结发现,其实现在这些都是大厂看重和常用的技术。

一、数据结构与算法

数据结构和算法是计算机科学的基础,也是Android开发中必不可少的一部分,中高级Android开发者必备技能,掌握数据结构与算法可以大大提高程序开发效率、节省空间、解决复杂问题、提高代码质量和面试成功率。
请添加图片描述

二、Android架构师筑基必备技能

Java/Kotlin因丰富的语言特性、开发工具和类库支持,成为了Android开发者的首选编程语言之一,想要成为优秀的Android开发者其Java/Kotlin基础必须要牢固,至于选择哪个作为首选语言,可根据工作需求做出选择。
请添加图片描述

三、Android 高工UI专业技术体系

Android高级工程师UI必由之路:Jetpack架构组件、四大组件内核以及UI实战体系

请添加图片描述

四、Android 底层FrameWork内核解析

Binder、Handler、系统启动流程、AMS、WMS、PKMS核心源码解析,不仅仅停留在app应用层开发。

请添加图片描述

五、性能优化观点与编程规范

Android开发的彼岸:常见app性能优化和大厂性能优化实战,选对方向,努力爬坑吧!
请添加图片描述

六、设计思想解读开源框架

了解开源框架的设计思想,熟练掌握热修复,插件化,组件化等开源框架,搭建高质量应用程序,走上人生巅峰

请添加图片描述

七、NDK与音视频开发

音视频编解码全解析,图像识别,即构实时音视频SDK,掌握高薪秘诀
请添加图片描述

八、JETPACK COMPOSE

Android UI工具包,轻松地创建和维护复杂的 UI,满足特定设计要求,app UI界面设计必备组件。
请添加图片描述

九、Android车载应用系统开发

行业新星,Android领域另一个新风向,揭开Android车载应用的神秘面纱,选对方向,努力爬坑吧!
请添加图片描述

十、Flutter

Android程序员构建高性能和跨平台的移动应用程序,堪称最美的UI跨平台应用框架。Flutter 近年来因其易用性、速度以及创建具有视觉吸引力和吸引力的移动应用程序的能力而广受欢迎。
请添加图片描述

上面就是我为大家整理出来的一份Android程序员发展方向知识架构体系图。希望大家能照着这个体系在3-4个月完成这样一个体系的构建。可以说,这个过程会让你痛不欲生,但只要你熬过去了。以后的生活就轻松很多。正所谓万事开头难,只要迈出了第一步,你就已经成功了一半,等到完成之后再回顾这一段路程的时候,你肯定会感慨良多。

最后:下方这份完整的【Android开发】视频学习教程已经整理上传完成,朋友们如果需要可以自行免费领取 【保证100%免费】

在这里插入图片描述

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值