ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

5000字超详细字节跳动Android客户端面经

5000字超详细字节跳动Android客户端面经 现在秋招马上来临在牛客网上看了不少帖子不少同学对大厂的面试有所忌惮总担心准备不够。我之前面试了好几家公司这里总结一下自己的面经和复习历程顺便谈谈我的一些感受给各位朋友提供一些参考也不要对大厂面试有抵触情绪。我对字节跳动的一些看法周围有很多人也都在用字节的拳头产品今日头条、抖音、悟空问答、西瓜视频 、火山小视频、 图虫、花熊等等这些都是字节跳动旗下的APP。字节的增速有目共睹高 速增长其实对我们求职者是一个重大利好它就意味着更多的机遇。虽然说今年一直都在传裁员毕竟大环境不好但是字节的岗位还是相对于其他大厂多上不少。还有也是机缘巧合吧在我准备投递的时候发朋友圈他看见我在找工作所以还是要多发朋友圈以前的同事帮我内推递上了简历。字节的效率还是很高的从约面试到最后一次面试一周结束战斗。现在讲讲我三面时的情况一二面和 HR 面都是凭印象回忆的也比较容易就没写了太多了字节跳动面试过程1、主要是项目经验占面试时间的40%没有问所有项目你自己挑一个最难的项目来讲突出项目难点项目特色项目突出贡献要做到通俗易懂视频面试没法画框架图2、突出三方能力要了解核心思想占面试时间的20%如果用得多可能会聊更久OkHttpretrofitRxJavaEventBusOkHttp基本原理缓存原理连接池原理如果每个请求都需要在url里添加字段如何用Interceptor实现retrofit的核心设计思想3、android基础占面试时间的20%3.1、Handler实现原理Looper.loop()源码即实现原理Handler.postDelay()实现原理基本情况是如果头部的这个Message是有延迟而且延迟时间没到的now msg.when会计算一下时间保存为变量nextPollTimeoutMillis然后在循环开始的时候判断如果这个Message有延迟就调用nativePollOnce(ptr, nextPollTimeoutMillis)进行阻塞。nativePollOnce()的作用类似与object.wait()只不过是使用了Native的方法对这个线程精确时间的唤醒。如果Message会阻塞MessageQueue的话那么先postDelay10秒一个Runnable A消息队列会一直阻塞然后我再post一个Runnable BB岂不是会等A执行完了再执行正常使用时显然不是这样的那么问题出在哪呢1、postDelay()一个10秒钟的Runnable A、消息进队MessageQueue调用nativePollOnce()阻塞Looper阻塞2、紧接着post()一个Runnable B、消息进队判断现在A时间还没到、正在阻塞把B插入消息队列的头部A的前面然后调用nativeWake()方法唤醒线程3、MessageQueue.next()方法被唤醒后重新开始读取消息链表第一个消息B无延时直接返回给Looper4、Looper处理完这个消息再次调用next()方法MessageQueue继续读取消息链表第二个消息A还没到时间计算一下剩余时间假如还剩9秒继续调用nativePollOnce()阻塞5、直到阻塞时间到或者下一次有Message进队3.2、Activity的生命周期还有各场景下各个生命周期的回调方法核心知识点onStart:start表示启动这是Activity生命周期的第二个方法。此时Activity已经可见了但是还没出现在前台我们还看不到无法与Activity交互。onResume:resume表示继续、重新开始这名字和它的职责也相同。Activity在这个阶段已经出现在前台并且可见了。onPause:pause表示暂停当Activity要跳到另一个Activity或应用正常退出时都会执行这个方法。此时Activity在前台并可见我们可以进行一些轻量级的存储数据和去初始化的工作不能太耗时因为在跳转Activity时只有当一个Activity执行完了onPause方法后另一个Activity才会启动而且android中指定如果onPause在500ms即0.5秒内没有执行完毕的话就会强制关闭Activity。onStopstop表示停止此时Activity已经不可见了但是Activity对象还在内存中没有被销毁。这个阶段的主要工作也是做一些资源的回收工作。在AActivity界面点击按钮后跳转到BActivity界面各个activity的生命周期回调顺序答(A)onPause→(B)onCreate→(B)onStart→(B)onResume→(A)onStop在A界面点击按钮后即startActivity(B)之后调了finish()方法各个activity的生命周期回调顺序答(A)onPause→(B)onCreate→(B)onStart→(B)onResume→(A)onStop→(A)onDestory在A界面启动了一个透明的B界面各个activity的生命周期回调顺序答(A)onPause→(B)onCreate→(B)onStart→(B)onResume在A界面启动了一个Dialogactivity的生命周期回调顺序答不会回调任何函数。在A界面启动了一个主题是Dialog的B界面各个activity的生命周期回调顺序答等测试4、算法题占面试时间20%面试特点链表相关算法必须顺便大厂常考题目可以刷leetcode里的题目要自己动手写别光看题目和解析只有自己真正思考题目模拟考试了才知道自己的核心问题出在哪怎么提升4.1、两个双向链表返回第一个相同节点解题思路寻找返回结果的特性第一相同节点后的内容两个链表后半段内容都一样如果是基于多个数据的计算先对齐数据关键特性这里的关键特性就是链表的长度便于依次对比节点相等解决方案就是获取链表长度先遍历长的链表让两个链表长度对齐遍历数据指针概念这里使用双指针概念一个指针遍历短的链表另外一个指针遍历长的链表参考答案publicListNodetest(ListNodelistNode1,ListNodelistNode2){if((listNode1null)||(listNode2null)){returnnull;}intlength1length(listNode1);intlength2length(listNode2);ListNodeshortListNodelength1length2?listNode2:listNode1;ListNodelongListNodelength1length2?listNode1:listNode2;intoffsetMath.abs(length1-length2);for(inti0;ioffset;i){if(longListNodenull){returnnull;}longListNodelongListNode.next;}while((longListNode!null)(shortListNode!null)(longListNode.next!shortListNode.next)){shortListNodeshortListNode.next;longListNodelongListNode.next;}returnlongListNode;}privateintlength(ListNodelistNode){ListNodetemplistNode;intlength0;while(temp!null){length;temptemp.next;}returnlength;}字节HR 面评价一下自己前三面的表现如果重来一次的话对于答不上来的问题你会怎么办介绍一下你的项目项目中遇到瓶颈是怎么解决的你觉得你这个项目对你有什么提升你觉得自己有什么优点和缺点你打算如何去改进自己的缺点呢你平常放松自己会通过什么方式呢那后续的话除了字节你还打算去哪些公司呢你是为什么打算去这些公司呢你平常会怎么安排自己一天的时间呢面试总结字节的面试体验还是相当不错的。过程中面试官会很耐心地听你讲对于答不太上来的问题给出大体思路也是可以的。回答不上来的东西面试官也会在面试过程中跟你简单介绍一下。大概这就是为什么最开始 HR 和邮件里都有说“不会的题也鼓励和面试官交流想法”吧。反问环节请面试官对面试过程进行评价以及对个人能力提出一些建议的时候面试官还是很乐意的也很能抓住我的不足废话不然为啥人家能是面试官呢。在开始面试之后HR 全程跟进的速度非常快。每场面试结束之后 HR 会询问一下面试感受还会鼓励我复盘一下。下文中提及的资料是我之前收集的Android开发复习使用及刷题合集供更多面试的朋友参考共勉。由于文章内容比较多篇幅有限资料已经被整理成了PDF文档有需要2023年Android中高级最全面试真题答案 完整文档的可扫描下方卡片免费获取~PS:文末还有使用ChatGPT机器人小福利哦大家不要错过目录第一章 Java方面●Java基础部分●Java集合●Java多线程●Java虚拟机第二章 Android方面●Android四大组件相关●Android异步任务和消息机制●Android UI绘制相关●Android性能调优相关●Android中的IPC●Android系统SDK相关●第三方框架分析●综合技术●数据结构方面●设计模式●计算机网络方面●Kotlin方面第三章 音视频开发高频面试题●为什么巨大的原始视频可以编码成很小的视频呢?这其中的技术是什么呢?●怎么做到直播秒开优化●直方图在图像处理里面最重要的作用是什么●数字图像滤波有哪些方法●图像可以提取的特征有哪些●衡量图像重建好坏的标准有哪些怎样计算搭建了一个基于chatGPT的微信群聊机器人24小时为大家解答疑难技术问题 需要的可以扫描二维码进群。
返回列表