背景介绍
努力了十多年,进入了一所普普通通的学校。
名校带来的不仅是title,更是环境的熏陶。
最近想找重新找份好点的工作,而一些offer给出的条件是,至少211学校,有点无奈。
虽说名校背景并不能完全代表一个人的能力,但至少证明别人在高中及之前比你付出的多。
不得不承认,在某些情况下,双非学校会受歧视。
首先的话,介绍一下自己的情况吧。双非一本毕业一年的程序员,可以说学校不太好(和985,211相比)。家中条件不好,所以没打算考研,想出来就业早点孝敬父母。毕业实习完想再找个好点的工作,从年前开始正式学习,前段时间拿到头条的offer,还不到3个月,这3个月来各种焦虑,失眠,自我怀疑都经历了一遍,实属不易。
面试经历
字节跳动是6面技术面 + 1面 HR 面,有趣的是三面都是视频面试,虽然应聘的部门就在上海,但不需要赶过去现场面。
而且整体流程非常专业:面试前会有专人打电话约时间、面试后会及时通知你面试结果并约下一面的时间、面试中是在牛客网上视频面试(网站上配置有白板可以写代码)。
再说面试内容,字节跳动或者说我们熟悉的“头条”的特点的确是面试过程中算法比重很高,但面试官绝不是无脑问算法题。
比如一面问的算法题是线段树 —— 这个数据结构我的确不熟悉,但面试官在提问过程中不断引导和考察其他方面的东西,我能比较好得回答出来,最后虽然没有命中最优解“线段树”,但还是让我过了。
如何准备头条面试?
头条面试和其他大厂可能大同小异,但就是这个小异才是关键地方,能异于其他人的地方。可以从如下几个方面去做准备:
1.特意准备几个面试题源码。像我在回答一些中规中矩面试题的时候,都会从源码角度出发。比如常见的HashMap等集合类,多线程的各种锁以及大数据框架的部分源码。
2.特意准备项目难点。面一些大厂的时候避免不了被问到项目难点,不可能用普通Bug含糊过去啊。这边可以从项目用到的技术栈出发,去寻找技术栈在项目中会存在的难点,然后套进自己的项目,找个自己能懂,最好能全懂的。
3.针对性去了解公司的技术栈使用情况。比如头条使用Go,众人皆知,那为什么我不突击学习一下呢?比如从业内人士得知头条最早使用的是Kylin框架,后面慢慢转为ClickHouse,那我必须了解一下两者的不同啊,而且可以结合头条的业务场景。
头条1面 - 基础面
- 你们 Android 开发的时候,对于 UI 稿的 px 是如何适配的?
- 两个值相等的 Integer 对象,== 比较,判断是否相等?
- Activity A 跳转Activity B,Activity B再按back键回退,两个过程各自的生命周期
- 子线程是否可以 context.startActivity() (如ApplicationContext), 会不会有什么问题?
- Handler机制整体流程; Looper.loop()为什么不会阻塞主线程; IdHandler(闲时机制); postDelay()的具体实现; post()与sendMessage()区别; 使用Handler需要注意什么问题,怎么解决的?
- Native、H5、RN页面混合跳转时,页面清栈的桥如何实现的?
- 怎么计算一个View在屏幕可