字节跳动1面Too simple2面怀疑人生,宅家修炼“65天”终获,含泪拿下华为,小米等7份年薪45w+的Offer!

个人近期面试情况

今年二月以来,我的面试除了一个用友的,基本其他都被毙了,可以说是非常残酷的。其中有很多自己觉得还面的不错的岗位,比如百度、跟谁学、字节跳动等公司。说实话,打击比较大。

情况基本上是从三月开始好起来的,这个时间点,可能疫情快过去了,国家也开启了接近40万亿的基础建设计划,在这个时间段,面试的几个代表性的公司,包括腾讯、饿了么、宝宝树、旷世科技等等,基本都成了。

最终,就在前段时间,华为给我确认了16的级别年薪53w+13薪。也算自己到了另一个奋斗的阶段了。对自己的经历,做一个面试总结。

字节一面:

  • Activity生命周期,每个回调方法的作用是什么
  • 事件的分发机制
  • 内存泄漏
  • 遇到过滑动冲突吗?滑动冲突的解决方法
  • Hashmap原理
  • Hashmap扩容机制
  • 手撕双重校验锁,volatile的作用
  • synchronized和volatile的区别
  • 线程池的参数
  • 异常机制
  • synchronized修饰static 方法和修饰普通方法有什么区别
  • 双亲委派模型,为什么要这样
  • sharedPreferences的原理,多进程下是否可以使用,apply和commit 有什么区别
    算法题:每k个反转链表

简单到怀疑人生。。。虽然双重校验锁卡壳了。。

第二天收到了二面通知

字节跳动二面:

  • 四大基本组件和作用

  • Activity生命周期,启动模式,taskAffinity,横竖屏转换,onNewIntent

  • Service两种启动模式,有什么区别。

  • 广播,广播分类。普通广播、异步广播、有序广播

  • view的绘制流程

  • Framelayout wrap_content    TextView match_parent  怎么显示

  • 约束布局和RelativeLayout的区别

  • 布局优化

  • include、viewStub、merge 的使用和区别

  • mvp、 mvc、mvvm

  • 如何创建一个viewModel

  • Handler

  • ThreadLocal

  • 怎么获取view的宽高,如何确定值是准确的,说了view.post(),补充viewTreeObserverOnGlobalLayoutListener

  • 场景题:头条列表有多个不同的card,使用RecyclerView怎么解耦getViewType,获得不同的card
    说了用个管理类映射,面试官说用注解、反射,依赖注入(我??我太菜了呜呜呜)

java:

  • 迭代器,迭代器怎么删除一个元素
  • 说一下集合框架(Set、list、map
  • Hashmap 原理,红黑树如何自平衡(不会hashmap的Concurrentmodification 异常(不会
    双亲委派模型)
  • 根类加载器加载什么类(jre包下的类
  • GC分代算法
  • GCRoots种类
  • 四种引用

算法题:二叉树查找,将这条路上的结点存储

  • 反问评价,面试官说不喜欢回答这个问题

  • 问技术栈,kotlin

  • 问跨平台技术,说是在别的地方也有用

  • 问教育业务规划,说的很详细

  • 问对字节的评价, 面试官说这是一家有方法有效率的公司,它的发展有目共睹,在这里工作能学到很多

  • 问我怎么选择客户端开发,以及看待客户端的发展。

过了几天没有收到三面的通知,看boss上就显示,已结束面试!


一般技术面到后面,面试官都是leader或者是部门老大,他们其实很关心你的职业规划、对待工作的态度、团队合作的能力、自我价值实现方面的思考,当然还有项目实现的能力,过往项目经验和深度。所以最好自己先想想怎么用简短的话表述清楚。注意围绕关键词去说。

写给看到最后码友的话

这些算是我作为过来人对于应届毕业生和刚工作不久的同学的一些小小建议吧。

(1)一定要紧跟技术前进的脚步,尤其是大数据相关的技术,在技术更迭的时候一定要学习熟悉新技术,看源码,哪怕自己在工作中用不到也一定要学。因为这是你下一份工作的敲门砖。

我作为一个老兵,在上一家公司工作4年,我没有逼迫自己学习新技术。

结果现在面试碰壁,其实大部分原因就是人家用的都是主流技术,你不会你就被淘汰。

(2)不要给自己设置舒适区,这个就是说,一个公司待久了不要懒惰,不能荒废自己,始终要保持清醒的头脑和进取心,不断学习,不断完善自己的技术,架构设计能力,项目管理能力,交付能力等。

一定要及时从项目中总结经验和不足,最好落实到日记本中,最后通过不断思考,形成自己的做事方法论。

(3)对自己的职业生涯要有一个规划,以后要做哪一块一定要有自己的想法,确定了就要从这个方向完善自己,多学多练。

目前大数据这一块,有数据中台架构的公司不是很多,除了算法岗外,大多数人在团队中都是1专多能的角色,今天干干ETL,明天搞数仓,后天又给BI出数据,可能又搞调度系统、报表系统、标签系统、反作弊平台等平台。

没有人会专一做某一块,但是自己一定要想好哪一块是自己以后要走的方向,那么这一个方向确定了就要深入的学习这一块的知识,多看源码,多做练习,如果接触到具体项目,要在项目中沉淀自己,最后形成自己的知识体系。

**(4)做事情要有担当,不要根据OKR给自己设置界限,有能力有空闲多做一定要多做,这也是别人认可你的最佳途径之一。**互联网圈子很小,大家认可你,以后去大厂,换个好工作,也许就更容易。

最后

我见过很多技术leader在面试的时候,遇到处于迷茫期的大龄程序员,比面试官年龄都大。这些人有一些共同特征:可能工作了7、8年,还是每天重复给业务部门写代码,工作内容的重复性比较高,没有什么技术含量的工作。问到这些人的职业规划时,他们也没有太多想法。

其实30岁到40岁是一个人职业发展的黄金阶段,一定要在业务范围内的扩张,技术广度和深度提升上有自己的计划,才有助于在职业发展上有持续的发展路径,而不至于停滞不前。

不断奔跑,你就知道学习的意义所在!


算法与数据结构突击手册


Android核心技术笔记

Android面试神技

Android三方库学习笔记

在我的GitHub里面有自己搜集整理的一套,进阶Android高级工程师系统学习资料可以免费分享给大家,需要完整版的朋友,【点这里可以看到全部内容。】

如果需要PDF版本可以在群文件夹里,自行领取!

整理不易,觉得有帮助的朋友可以帮忙点赞分享支持一下小编~

你的支持,我的动力;祝各位前程似锦,offer不断!!!