| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 移动开发 -> 这都没挂,2021字节跳动的Android研发岗也太好进了吧?(面经+经验分享) -> 正文阅读 |
|
[移动开发]这都没挂,2021字节跳动的Android研发岗也太好进了吧?(面经+经验分享) |
? 背景经历了各种尝试和挣扎,终于在今年入职了今日头条,简直是实现了人生一大梦想!! 本人基本情况是:16年毕业于211院校本科,19-21年在oppo工作,算是有大厂经验了,面试的岗位是Android应用开发工程师。 职位描述: 1、负责手机端系统应用的功能开发,维护和问题修复; 下面说说过程和面经吧。 字节跳动面试过程1、主要是项目经验(占面试时间的40%)没有问所有项目,你自己挑一个最难的项目来讲 2、突出三方能力,要了解核心思想(占面试时间的20%,如果用得多可能会聊更久)
3、android基础(占面试时间的20%)3.1、Handler实现原理
基本情况是:
1、postDelay()一个10秒钟的Runnable A、消息进队,MessageQueue调用nativePollOnce()阻塞,Looper阻塞; 2、紧接着post()一个Runnable B、消息进队,判断现在A时间还没到、正在阻塞,把B插入消息队列的头部(A的前面),然后调用nativeWake()方法唤醒线程; 3、MessageQueue.next()方法被唤醒后,重新开始读取消息链表,第一个消息B无延时,直接返回给Looper; 4、Looper处理完这个消息再次调用next()方法,MessageQueue继续读取消息链表,第二个消息A还没到时间,计算一下剩余时间(假如还剩9秒)继续调用nativePollOnce()阻塞; 5、直到阻塞时间到或者下一次有Message进队; 3.2、Activity的生命周期,还有各场景下,各个生命周期的回调方法
这个阶段的主要工作也是做一些资源的回收工作。
答:(A)onPause→(B)onCreate→(B)onStart→(B)onResume→(A)onStop
答:(A)onPause→(B)onCreate→(B)onStart→(B)onResume→(A)onStop→(A)onDestory
答:(A)onPause→(B)onCreate→(B)onStart→(B)onResume
答:不会回调任何函数。
答:(等测试) 4、算法题(占面试时间20%)面试特点:链表相关算法必须顺便,大厂常考题目,可以刷leetcode里的题目,要自己动手写,别光看题目和解析,只有自己真正思考题目,模拟考试了,才知道自己的核心问题出在哪,怎么提升 4.1、两个双向链表,返回第一个相同节点 解题思路:
这里使用双指针概念,一个指针遍历短的链表,另外一个指针遍历长的链表 参考答案:
5、其他大厂有面试,但是字节面试官没有提到的内容
总结: 1、面试官人很好,可以有你来主导部分面试内容,需要准备好项目经验,突出项目难点,痛点; 这里概括一下几个给同伴们的小建议: 1、把自身的技能练扎实, 关于内推的(同公司应该是hr伙伴的良心建议): 1、内推如果长时间没动静可能是简历没过。 我当时一共经历了四面,先是直接ld,然后hr,接下来交叉部门ld,然后最后又是hr。 这个过程其实面试官的问题都不刁钻,最主要的就是根据简历里的项目问,有没有发现过什么问题、怎么解决、最终结果怎么样这样的闭环你一定得会总结。然后要给面试官展现出你的软实力,比如快速学习、逻辑思维、沟通表达能力等等。 面经分享面试过程其实大部分时候是,面试官或者公司是主导方,大部分的节奏是跟着面试官走,但是我觉得面试其实就是一个相互探讨的过程,不仅是公司在选择你,你也在选择公司、以后工作的同事和leader。所以我这次面试中,更多的是和面试官探讨,也会反问面试官一些问题,不仅仅是最后面试官说可以问他几个问题,在面试过程中就会询问一些,优秀的面试官会跟你探讨,并且讨论出一个合理的方案或者正确的答案,整个过程非常愉悦,相互都学习到了,但是有一些面试,则不太友好,问道的问题总是说自己回去百度一下,这个很让我无语。 学历是否重要我的答案是重要,我就是学历的受益者,只要投递出的简历都会邀请面试(除了一些对工作年限限制非常严格的企业,hulu)。当然,在互联网的圈子中,核心是你本身的技术,但是有多少人的技术能达到逆天或者非常牛逼的地步,如果你是这样的人,啥都不用说了,但是我觉得绝大部分的程序员都是普通人、平常人,不要说什么3年以后公司就不看学历了,学历是一辈子的事情,那些高考能够碾压你的人,出了社会只要他们愿意,照样能碾压你,你努力,你拼命,别人也不会睡大觉等你,所以,能提升自己的学历,还是要尽量提升的。 大公司VS小公司“大公司拧螺丝、小公司独当一面,进步更快”,我不太认同这句话,当然具体情况具体分析,每个人的情况不同,但是我还是觉得大家能去大公司还是尽量去大公司,原因我总结了以下几点: 镀金,这一点我相信大部分同学都是赞同的,我就不赘言了。知识的深度和积累,在大公司你能学到的东西更深和更加系统,而且可以有时间自己去思考和学习,尤其对于工作时间不长的同学。 和优秀的人一起工作,大公司碰到优秀同事的概率更大,像我这样的普通人其实都是在模仿和学习,正是由于身边有了优秀太多的人,才会有危机感,才有机会跟着他们去学习,学习他们怎样学习、怎样思考问题甚至怎样为人处世。在华为中有到鑫和李桥,在抖音中,有夏老师、江老师还有乐华大佬等等,太多人,我从他们身上学到太多的东西,有一些能让我受益终身。 职业规划作为技术人员,我大概总结了下面三个方向,其实哪个方向都是大有可为,关键还是要看自己。
作为一个不再年轻的程序员来说,已经不能忽略薪资和福利,不再像刚毕业的同学,只要能成长、只要平台好,薪资什么的不重要。其实每个阶段都有自己的侧重点,我大概对薪资、平台、成长排了个序(自己的观点)
上面是自己不成熟的看法,从自身的一些经验出发的,仅供参考。 面试准备这是最辛苦的阶段,你不仅要把日常的工作做好,还要开始着手准备刷题、基础知识准备以及高阶知识的准备。 刷题: 我的方式还是之前的老套路LeetCode+《剑指offer》,虽然老,但是效果非常不错。LeetCode,刷了300+的题,这里的刷并不是指仅仅只刷一遍,我来回刷了四遍,手写了一遍(写了200多道),保证我看到题目或者类似的题目,我能第一时间想出最优的解题思路。 基础知识: 由于面的Android岗位,需要准备一些Java和Android方面的知识,有很多的文章都会去介绍怎么去复习基础的知识或者进阶知识,或者是阅读一些经典的面试数据,例如任玉刚的《Android开发艺术探索》,都是非常不错的。大家可以根据网上的文章和一些数据梳理一个自己的知识体系,将一个一个知识点形成点再到面,这样能更加深刻的理解,而且有自己的侧重点。 简历: 简历的重要性就不言而喻了,怎么样写好简历是个技术活,当然如果你有很好的背景(学校或者公司),那么不管你怎么写,基本上都不刷掉你,我们作为一般的人还是需要下一番功夫的。拿我的简历作为例子,大概有以下几个部分:
怎样写简历,这个开源网站不错,教你怎么写简历,而且有一个在线markdown在线网站,可以导出pdf。 面试前准备—技术积累冲击大厂Android面试会涉及到很多杂而乱的知识点,所以想要进入大厂,你不仅需要有十分扎实的基本功,还需要有完整的解答逻辑! 接下来分享的这份锦囊里还包含了百度、阿里、腾讯、京东等众多大厂的Android面试真题,详细介绍了各企业的面试重点、解决方案,帮助大家做好面试准备,斩获大厂高薪 offer!
多余的话就不讲了,接下来将分享面试的一个复习路线,如果你也在准备面试但是不知道怎么高效复习,可以参考一下我的复习路线,有任何问题也欢迎一起互相交流,加油吧! Android学习路线图 首先,对于没有学习方向,知识不体系的人,我把我工作几年整理的学习路线分享给大家,做一个借鉴作用,还不知道怎么学习的人可以直接照着我这个学习路线一个个的去学习,知识不体系的人可以参考下我整理路线的方式,总之希望能够帮到你们! 模块化学习资源 接下来是每个模块我整理出来的文档学习资料,帮助大家更细致化的学习。 《Android汇总复习资料—Java》 《Android汇总复习资料—Android》 《Android汇总复习资料—Android扩展》 《Android汇总复习资料—Kotlin》 《Android汇总复习资料—Flutter》 《Android汇总复习资料—算法》
①看视频进行系统学习 前几年的Crud经历,让我明白自己真的算是菜鸡中的战斗机,也正因为Crud,导致自己技术比较零散,也不够深入不够系统,所以重新进行学习是很有必要的。我差的是系统知识,差的结构框架和思路,所以通过视频来学习,效果更好,也更全面。关于视频学习,个人可以推荐去B站进行学习,B站上有很多学习视频,唯一的缺点就是免费的容易过时。 另外,我自己也珍藏了好几套视频,有需要的我也可以分享给你。 ②读源码,看实战笔记,学习大神思路 “编程语言是程序员的表达的方式,而架构是程序员对世界的认知”。所以,程序员要想快速认知并学习架构,读源码是必不可少的。阅读源码,是解决问题 + 理解事物,更重要的:看到源码背后的想法;程序员说:读万行源码,行万种实践。
③面试前夕,刷题冲刺 面试的前一周时间内,就可以开始刷题冲刺了。请记住,刷题的时候,技术的优先,算法的看些基本的,比如排序等即可,而智力题,除非是校招,否则一般不怎么会问。 关于面试刷题,我个人也准备了一套系统的面试题,帮助你举一反三: ④2020大厂面试高频知识点
以上这些内容均免费分享给大家,需要完整版的朋友,点这里可以看到全部内容。或者点击 【这里】 查看获取方式。 |
|
移动开发 最新文章 |
Vue3装载axios和element-ui |
android adb cmd |
【xcode】Xcode常用快捷键与技巧 |
Android开发中的线程池使用 |
Java 和 Android 的 Base64 |
Android 测试文字编码格式 |
微信小程序支付 |
安卓权限记录 |
知乎之自动养号 |
【Android Jetpack】DataStore |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年2日历 | -2025/2/5 20:14:27- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |