前言
笔者2.17收到了面试邀请,3.4日进行了第一次抖音(抖音)面试,第四次技术面后被拒绝了,还找了其他人进行了第二次内推(主要是第一次拒绝有点不清楚)。在第二轮内,将Offer面试推给皮鞋Offer一周左右。这篇文章主要记录了从面试开始到最终面试完成的经验和经历,主要是安迪
面试TimeLine&面试主要题目
- 2020.4.17 17:00 投出简历,字节跳动,base北京
- 2020.4.17 19:21 (抖音)接到HR面试邀约,约定3.4日远程面试
- 2020.4.18 开始准备面试(Android岗)
- 2020.5.4 14:00-15:00 (抖音)第一轮技术面试由于准备时间短,再加上没有过大公司的面试经历,所以第一次面试慌得一批,面试前五六分钟心跳加速面红耳赤,还好面试开始之后面试官人不错状态有好点。一面主要是基础技术面,主要涉及到:进程&线程的区别,线程池的用法、原理,TCP三次握手、四次挥手、HTTP请求报文格式,算法是二叉树中序遍历,偏基础。
- 2020.5.4 15:20-16:30 (抖音)第二轮技术面试(交叉面)一面完了之后本来打算换衣服去打球,结果刚换一般面试官打电话让我回面试间面试,太尴尬了,二面是交叉面,是火山小视频的工程师面的,主要涉及:TCP基础、Activity启动模式、OKHttp源码讲解、java修饰符、java线程同步的方法、synchronized对不同方法加锁的区别、java中的引用、kotlin和java的区别,算法题是平衡二叉树的判断。
- 2020.5.8 15:30-16:30 (抖音)第三轮技术面试(Leader面)真正翻车就在三面,也许是前两面太顺利,导致我有点放松警惕了,结果三面被虐的体无完肤,三面面试官一看就是个技术大佬,问的问题都很基础但是让你很难回答好,主要涉及: 数据库索引、事物等的概念、sql语句的结构、java中类似c 中的析构函数、java和c 的异同点、java和c 各自传参数的方式、Android中除了线程池还有哪些多线程的实现方式、Jetpack详问、http协议介绍、最后算法做了一道DFS的题,翻车。
ps:关于Jetpack笔者结合自己阅读源码的经历整理了一篇2020Android复习资料汇总文档,希望可以帮到大家。
抖音内部Jetpack核心学习知识笔记
- 2020.5.11 14:00-15:00 (抖音)第四轮技术面试(应该是加面)三面完了之后本来以为必凉,结果过了半个小时HR打电话通知下一轮技术面试,猜想应该是前两面面的不错,三面有点差,那边想加面一次再确定一下。四面是个又年轻又帅的小哥,但是问的问题让我很难受,比如为什么把代码放在github上????我解释了半天说是为了备份,为了之后复盘什么的,不过他好像并不care我的解释…然后是给定一个View,如何拿到他的所有子孙view的数量,view和viewgroup的区别、Activity启动模式、hashmap原理、事件分发机制、java中所有类的基类是什么,其实现了哪些方法,算法题是从arg数组中找出前n大的元素四面面的一般,不过由于面试官全程没有表达我是对是错,所以给我一种以为自己都答对了的假象,结果后来一回想还是答错了很多东西,然后就是好几天没结果,打电话问了HR几次,都是让等,估计是备胎了,再等了几天就收到拒绝邮件了。
- 2020.5.15 11:48 (抖音)收到拒绝邮件,确定被刷
- 2020.5.17 17:21 (今日头条)第二次收到HR邀约面试,字节跳动,base北京第一次面试失败了之后总结了一下,主要是基础知识没复习到,再就是没有面试经验,所以不太甘心,又找人内推了字节跳动的简历,很快收到了面试邀约。
- 2020.5.19 15:00-16:00 (今日头条)第一轮技术面试一面还是基础面试,主要涉及懒加载的单例模式实现、Synchronized介绍、Handler原理、线程池介绍、Service介绍、已定义View、listview如何优化,算法是求给定数组中连续数字的最大和。
- 2020.5.20 15:00-16:00 (今日头条)第二轮技术面试(交叉面)二面交叉面,主要是java和android,开局先写一个生产者消费者模式的实现,然后问了设计模式中的代码设计原则、其他一些常见设计模式的介绍、屏幕适配方案、线程池、进程、Activity启动模式、其他四大组件介绍、接口和抽象类的区别,算法先让找链表倒数第a个节点,直接秒过,然后面试官估计觉得算法部分太没体验感,又让写了一个二叉树深度,又秒过,面试官看了看我说再见,甚至都没让我问问题,吓我一跳还以为写错了…
- 2020.5.20 16:30-17:30 (今日头条)第三轮技术面试(Leader面)Leader面不会涉及太多技术,主要比较偏重算法和基础,看你思考问题的方式,看你值不值得培养,这一面具体问题记不清了,只记得问了List中元素的删除,主要是注意考虑ConcurrentModificationException,还有介绍了一下Fragment,然后是给定一个有重复元素且有序的数组,找出target的下标,用了二分查找,算法虽然没问题,但是边界什么没考虑好,被面试官教育了一波,说写代码要重点关注异常点。
ps:关于Fragment笔者总结到了2020Android复习资料汇总这篇文档里:
- 2020.5.22 16:00 -16:20 (今日头条)HR面,谈薪资,给口头Offer三面完之后自我感觉不错,应该没太大问题,然后接到HR电话,大概聊了聊入职时间、部门工作、薪资什么的,然后说Offer在审批中,过几天批下来第一时间通知。
- 2020.5.28 17:52 正式收到今日头条Offer
面试重点&需要掌握的东西
一个月期间不仅面试了字节跳动,还参加了阿里、腾讯的几次面试,但是阿里腾讯流程太慢,每面一次常规操作就要等一周才可能有下一次面试,所以到现在都没结果,互联网公司虽然业务不同,但是面试重点基本都是一样的,Android(实习)岗主要涉及:
- Java
- Android
- 算法
- 项目经历
- 数据库
- 网络
关于这一部分,可参见 下方文档:
腾讯300多页知识点加面试题及解析,就不一一展示了,目录页放在下面,如果觉得对自己今后大厂面试,或者跳槽有帮助的可以转发后私信我【666】即可获得!
2020 一线互联网 Java 面试题解析大全
- 大厂面试必问Java知识点
是我个人面试过程整理的文档,附加我参加腾讯、阿里、京东、华为面试的一些问题。
面试感想&建议
写好简历
简历一定要简洁,写上自己的项目经历、工作经历、技术栈等就好,不要写诸如血型身高是否是党员之类有的没的,没人关心那些,还有就是写上一些主要的获奖、项目经历,这主要指的是技术类的比赛,至于奖学金之类的可有可无,再有就是尽量简历发的时候转成pdf,别发word,最好用latex写,不仅排版简洁,而且美观。
重视算法
很多人觉得只要自己技术过硬就好了,真实情况是大厂会比较看重你的算法基础,看你是否值得培养,算法这块建议起码把剑指Offer刷一遍,确保每个题都能秒过,注意算法不需要刻意追求数量,但是一定要刷一道会一道,再遇到同类型的题可以秒过。这里推荐我个人收集算法面试教程:
重视基础
现在技术迭代更新太快,很多同学为了做项目只会无脑调用各种API,知其然不知其所然,这在面试的时候会吃大亏,建议多看一些重要的源码,基本上每个面试官都会让你介绍自己看过的源码,Android这块,常用的开源框架,比如okhttp等,挑一两个深入源码看看,还有AsyncTask,最好也看看源码。
以上就是我在面试前整理搜集的面试资源和一个学习路线规划,希望能对大家有所帮助,有需要的朋友请务必麻烦大家帮忙转发一下,因为这样可以帮助更多有需要的人看见,然后在我的主页私信我【666】,才能获取这些笔记文档哦!