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