引子
秋招过半,在网上上看了很多大佬的面经,也加了很多交流群,受到了很多朋友的提点,今天终于轮到我来分享面经啦,面试了几家大厂,最后拿到了字节跳动客户端的 offer,总结一下自己的面经和复习历程,顺便谈谈我的一些感受,给各位朋友提供一些参考。
先说一下我的情况吧,现在就读杭州电子科技大学,本科山东农业大学,本硕都是计算机。***老区山东临沂人,平常喜欢拍照、旅游、看电影和基友一起打游戏。
我对字节跳动的一些看法
首先是因为公司,周围有很多人也都在用字节的拳头产品,像抖音、今日头条、火山。字节的增速有目共睹,高速增长其实对我们求职者是一个重大利好,它就意味着更多的机遇。字节作为一家年轻的公司,还有无限可能。
其次是我对客户端这个岗位一直就很感兴趣,平时也有自己写过 APP。空闲时间我比较喜欢看一些科技数码评测,听他们聊聊用户体验,科技肥宅。能让自己参与的程序在直接交付到用户手中,成就感爆棚。
还有也是机缘巧合吧,在我准备投递的时候,舍友帮我找了内推,递上了简历。
字节的效率还是很高的,从约面试到最后一次面试,一周结束战斗。据舍友说有时候一下午就可以结束战斗。
头条(一面 1小时)
面试官一直在摆弄自己超长的浓密头发,可能是变相施压吧在。。
- http1.1和2.0区别
- 序列化,Serializable和parceble区别,分别什么时候用
- tcp三次握手
- 内存泄露
- 双亲委派机制
- 快排
- threadlocal了解吗
- handle你怎么理解的(扯源码),post方法是怎么工作的(封装Runnable)
- okhttp讲讲
- 事件处理机制
- Activity生命周期,给了几个场景问生命周期变化
- Fragment生命周期
- Service(具体是啥记得不太清了,都学学没坏处)
- GC回收机制
- HashTable理解,初始带大小,扩容机制,HashMap
- 还有哪些安全的map
- sychronized用过吗,sychronized可以相互嵌套吗
- violatile用过吗
- 算法:之字形输出二叉树(秒了)
20分钟后 头条(二面 1小时)
- 接口和抽象类区别
- 设计模式六大原则
- handle内存泄露
- 进程调度策略
- 如何保证微信发送消息可以传达到,跳出TCP思维想想(结果还是抄了TCP思想)
- 由于网络原因信息发送速度不一,如何使接收端可以确认信息的正确顺序
- 如果让你管理APP中的线程你会怎么做(我也没太懂。。就说了线程池之类的)
- okhttp线程池怎么实现的
- 事件处理机制
- 如果添加onClick事件怎么处理事件
- 如何下载一个特别大的图片
- 如何加载一个特别大的图片
- 如何在关闭程序之后很快加载特别大的图片
- Exception和Error区别以及Exception两种类型
- 算法:求最长递增子序列(原本以为是不连续的讲了半天。。面试官说是连续的,O(n)秒了)
半小时后hr打电话约三面
头条(三面 40分钟)
面试官:那我就看看你安卓了解到什么程度吧。。(我只是自学了几个月的程度😭)
- 布局了解过哪些
- 广播讲讲,系统广播有哪些
- MVP和MVVM讲一下
- 用过哪些隐式intent
- Fragment生命周期
- touchEvent和touchListner
- targetSDKVersion,minSDKVersion,compileSDKVersion(得知我没注意过,面试官发出了肆无忌惮的笑声。。对不起这些不会是真的会被嘲笑)
- SQLite用过吗,sharedpreference用过吗,多进程使用sharedpreference
- 聊项目
- 平时有什么爱好
- 安卓看了哪些书
当天晚上收到offer call。没有HR面你没看错
滴滴(一面挂 30多分钟)
- 说一下项目
- 多线程了解吗?Lock是接口,那它有哪些方法,有什么特性
- GC机制,有哪些GC Roots
- Activity启动模式
- 线程池问了好多
- okhttp
- JAVA问了好多,抱歉记得不清了
B站(一面 40分钟) 8.15
- acm里都准备了哪些算法
- Activity生命周期
- HashTable,HashMap
- handle原理
- TCP建立连接断开连接过程
- 算法:单向链表反转,求二叉树深度
第二天下午电话通知
B站(二面 20分钟)
- 项目介绍
- 给200条弹幕,如何快速排重,除了map还有什么方法
- JAVA和C多态的实现
- okhttp进行了哪些封装
- 了解过前端吗
- vue和react区别
- 期望在什么样的公司工作
- 未来规划
没了。。。历史最快一次。。
晚上打电话约HR微信面试
B站HR面(30分钟)
- 介绍家庭情况
- 大学做过哪些实习(兼职)
- 做家教时候遇到有些笨笨的孩子时候怎么教的
- 为什么想来B站,为什么不去阿里腾讯这些大厂(对自己好一点,不要祸害身体)
- 你对二次元的定义是什么
- 有什么相对B站提的建议嘛(大会员太贵了。。注册题目太多了。。)
- 通过三轮面试你对B站有什么感觉
- 你这么佛系如果遇到BUG要加班怎么办
- 对自己面试的评分(1-10)
腾讯(一面 30分钟)
- 算法:大数相乘,让敲,十分钟后回来(成功敲成了大数相加,真的蠢。。)
- JAVA内存管理
- 动态规划思想
- 内核态和用户态区别
- 多线程使用时需要注意哪些
网易有道(一面 40分钟)
最尴尬的一次。。感觉跟面试官思路不在一条线上,,理解不了问题。哭了
- 整数反转,复杂度多少(O(n)),你这个n怎么确定是多少,n最坏情况是多少
- 整数是多少位,最大是多少
- 泛型
- 类加载机制
- okhttp看过源码吗
- 数据库加密
- handle讲一下源码,怎么确定handle在哪个线程中(通过绑定线程中的Looper),那怎么确定Looper在哪个线程中(应该是threadlocal。。这个没看过源码没答出来)
有些没写的是因为重复,有些是因为想不起来,有些是因为没用过所以印象不深(当然也没答出来)
面试前的准备
基础的准备,三四月份在家断断续续准备了一些,不过在家嘛大家懂的。回到学校后,大概六月底七月初的样子,忙完小论文的事情就赶紧开始了。 按照 GitHub 上 CS-Note 查漏补缺。
算法这方面,做做剑指 Offer,每晚刷一道 leetcode 上的题,平时看面经或者和舍友交流的时候遇到的问题也会去刷一下。
建议
在我最近面试过程中,字节给我的体验应该算是最棒的,不死板。问题的设计上,会根据自己的前面回答的情况由浅到深,由简到难,包括自己项目的一些优化,给出一些合理的建议;在思维卡壳的时候,面试官也都会给予一定的引导。一些确实没有遇到过的问题,面试官也都会做出一些解答。
面试的时候,尽可能将自己知道的全部表达出来,被问的问题看起来虽然不多,但是每个问题建议都尽可能面面俱到。比如链表确认是否有环,写过之后可以再修改一下,写一版环入口节点在哪以及这样写的推导;谈到 HTTPS,可以先讲一下 HTTP 和 HTTPS、HTTP 各个版本区别、HTTPS 的过程(这里面又会有 SSL、对称加密和非对称加密)、HTTP怎么传输大文件,顺便讲了一下自己申请域名的经历。
最后也是大家最关心的问题,没必要担心客户端没有经验,字节给我的感觉是计算机基础和学习能力比经验更重要。
学习资源
最后我在这里分享一下这段时间从朋友,大佬那里收集到的一些2019-2020BAT 面试真题解析,里面内容很多也很系统,包含了很多内容:Android 基础、Java 基础、Android 源码相关分析、常见的一些原理性问题
等等,可以很好地帮助我们深刻理解Android相关知识点的原理以及面试相关知识。
这份资料把大厂面试中常被问到的技术点整理成了PDF,包知识脉络 + 诸多细节;还有 高级架构技术进阶脑图 帮助大家学习提升进阶,也节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习。
这里也分享给广大面试同胞们,希望每位程序猿们都能面试成功~
领取:【PDF】
Android 基础知识点
Java 基础知识点
Android 源码相关分析
常见的一些原理性问题
腾讯、字节跳动、阿里、百度等BAT大厂 2019-2020面试真题解析
一键领取:【Android超硬核面试资料】
希望大家在今年的金九银十里能够发挥顺利,offer多多,进到自己想进的公司,共勉!
网友评论