回忆从走出校园到现在已经整整4年!匆匆的四年如白驹过隙,我还依然记得2017年的夏天。
那个夏天,我脱下了属于大学时期的学位服,告别我的整个校园时代,成为了大家口中的社会人😂。找工作过程中,经历了从校园融入社会的坎坎坷坷!那个朝气蓬勃的时代、也是一个属于青春的年代。现在回味、无比悠长。
原谅我矫情了一会儿,现在进入正题。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-inc8fSzw-1611323596801)(https://upload-images.jianshu.io/upload_images/25222288-12d680750ade81a9.gif?imageMogr2/auto-orient/strip)]
下面给大家分享的是 “9面阿里,5面腾讯,最后入职字节” 的一个故事。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TJ0APo1F-1611323596806)(//upload-images.jianshu.io/upload_images/24388310-95ef16081b1ceea8?imageMogr2/auto-orient/strip|imageView2/2/w/500)]
===============================================![](https://i-blog.csdnimg.cn/blog_migrate/304ffcc600e49eca72710813a7f1b981.png)
我相信每一位软件开发的毕业生都梦想着进入像BAT这样一线大厂,你们都想着进入当然我也不例外,谁叫我们都是“同道中人”呢!
先说说我吧,虽然我不喜欢被别人夸但是你们夸我还是有一点小骄傲的。
双非一本毕业,虽然谈不上多么厉害但是也还行哈,别说读研我是真的不喜欢读书,读研天天要背英语单词难道你们不觉得烦吗?我比较喜欢有逻辑性的事物,正这样在之后的大厂面试中算法题基本都答对了。
我吧,接触编程接触的比较早,在高一的时候因为我哥给我带了一本自学C语言的书,我便开始沉迷在编程的海洋里,一蹶不振。到现在那本书我还没有扔掉,现在有时间的时候都会看一看,不过现在看来里面的知识点太少了,适合刚起步的新手学习。对了这本书叫**《C primer plus》**,安利一下。
因为高中三年都热爱着编程,所以我高考完以后报考的志愿确定了是计算机这一方向,别人说大学生活都是丰富多彩的,我也信了高中老师的鬼话,说什么高中三年不要玩,好好学习等到上了大学随便你玩,老师都不带管你的。以至于到现在都还没有女朋友,真气死我了…
大学四年中,我自学过Java、Andorid、C++,到后来火热的GO语言、AI,也有一定的了解,却因为大学老师的一段话走上了APP的开发之路,因为当年抖音的爆火,无数短视频APP横空出世,他说:将来做Android的程序员肯定特别吃香,就因听了老头这话一入坑便是三年。
虽然现在也挺好,在字节能到税后28K,但是我还是觉得,程序员真的需要的不是行业行情,需要的是实力和技术,经过时间的洗礼,洪流过去后剩下的只有技术的金子,但是只要你有硬实力,无论市场行情怎样,走到哪都会公司企业接纳你。内推不就是一个很好例子吗?
====================================================================================
阿里和腾讯和字节一直是我追求目标,其实毕业前,我并没有找到心仪的工作,只是找到了一家小型互联网公司做Android开发(当然,是在面试完腾讯和阿里之后我才明白了我自身实力的不足)。
但是咱不能放弃,一次不行还有第二次,两次不行还有无数次。起码我得进他们的研发部看看他们的大牛到底有多厉害才能进得去那样的大厂?
于是,我开始我的三年面试大厂之路;
==============================================================================================
我这个人最好的好处就是会在失败中总结,面试遇到不会的题目我会在心中记下,面试结束以后再网上找答案,在记录在我自己的学习笔记中。
比如面试中问到音视频h264,UI线程、view、kotlin、Future,组件化、Rxjava、热修复、插件化、jetpack、事件分发机制等等技术知识点,我都有记下来。这也为我之后成功入职字节跳动做好了铺垫。
============================================================================
一面(2017校招)
-
数据库的四大特征,数据库的隔离级别?
-
HTTP 与 HTTPS 有什么区别?
-
数据库设计中常讲的三范式是指什么?
-
说一下反转链表?
-
静态代理和动态代理的区别,什么场景使用?
-
线程池都有哪几种工作队列?
-
两个进程同时要求写或者读,能不能实现?如何防止进程的同步?
-
什么是 ANR 如何避免它?
-
APP性能稳定性是怎么做的?
-
你做了内存优化最大的感受是什么?
-
Kotlin 特性,和 Java 相比有什么不同的地方?
-
react native 有多少了解?讲一下原理。
二面(2017秋招)
-
dart是值传递还是引用传递
-
Widget和element和RenderObject之间的关系
-
widget的root节点
-
mixin extends implement之间的关系
-
jvm内存模型
-
Future和microtask执行顺序
-
await for
-
dart中…的用法
三面(2018春招)
-
怎样获取当前线程是否是主线程
-
怎样检测函数执行是否卡顿
-
常用的对称加密算法,有什么?
-
view分发反向制约的方法
-
这次的面试没及时复盘,所以后半个小时的面试题忘得差不多了。这次的面试官比较严肃,搞得我有点紧张,所以最后 还是挂了,然后就是新一轮的面试。
四面(2018年4月春招)
-
动态代理的方法怎么初始化的
-
cglib动态代理
-
三个线程wait,唤醒情况是什么样的
-
最终是谁持有的activity,handler内存泄露(内存泄漏这点真的是无比幸运,刚好找到的视频里面讲过)
-
handler的sendmessage和postdelay的区别
-
arraylist和hashmap的区别,为什么取数快
-
差不多重复的和模糊的
五面(2018年10月秋招)
-
简单介绍项目
-
了解哪些数据结构
-
了解哪些排序算法
-
堆排序
-
LinkedList与ArrayList;HashMap扩容 ConcurrentHashMap
-
TCP与UDP,区别及运用场景
-
http是用的TCP还是UDP
-
http与https的区别
-
JVM内存模型(Static方法在哪个区)
-
Activity生命周期,Activity启动模式,Handler源码
-
旋转数组
六面(2019年3月春招)
-
final、finally、finalize的区别
-
抽象类的成员变量与成员方法的继承
-
union与union all的区别
-
MySQL的索引的实现
-
B+树查找的时间复杂度,数据结构
-
在浏览器输入网址敲回车后经历了什么
-
三次握手
-
https的加密流程
-
对称加密与非对称加密原理(RSA、AES)
-
手撕DCL单例
-
还了解什么设计模式
七面(2019年四月春招)
-
Future和microtask执行顺序
-
dart中…是什么
-
await for使用
-
singleinstance的启动模式如果不指定栈名,是怎么分配的
-
wait和sleep的区别
-
jvm线程私有的有哪些
-
动态代理的方法怎么初始化的
八面(2019年9月秋招)
-
stringbuilder 和stringbuffer区别
-
lock和syncrognized原理区别,适合什么场景。
-
实现生产者,消费者
-
handler原理,是如何实现延时的。
-
一个activity启动另外一个activity的生命周期。
-
反转链表
-
归并排序
-
快速排序
九面(2020年5月春招)
-
抽象类和接口解释一下。
-
讲讲类的加载机制。
-
jvm的内存回收机制,那你了解哪些内存回收算法。主要用的那个算法。
-
抽象类和接口的区别。
-
Activity有哪些启动模式
-
Fragment的生命周期和Activity有哪些不同,执行顺序解释一下。(这个回答的有点迷,只能说大体是那么一回事)
-
线程和服务的区别,解释一下。
-
事件分发机制讲解一下,view中有个onFilterTouchEventForSecurity还是啥,小哥哥说是view中独有的一个方法,你了解吗?(英语水平不过关,没听清是啥方法,表示不清楚。)
-
充值模块如何进行的封装
-
handler的机制讲解一下。
-
模板方法讲解一下(脑袋抽了,记不起来)
-
如何保证应用的安全性,做了哪些处理。
-
加固的原理了解嘛。
============================================================================
一面
- mmap + native 日志优化?
讲了传统日志打印的两个性能问题,一个是反复操作文件描述符表,一个是反复进入内核态,然后讲了 mmap 的原理机制。
- 广播和 EventBus 的区别?
说 EventBus 的实现原理是基于反射,里面管理了两张表,且代码之间关联性不大不易于维护,EventBus 不支持跨进程通信,被面试官反问你确定不支持跨进程?我说我的看的源码是不支持,面试官说那好吧。
- 常用设计模式你了解哪些?
我开始巴拉巴拉说了一大堆,其中说到了装饰设计模式,被面试官打断了,请你具体说说装饰设计模式。
=================
一面
- mmap + native 日志优化?
讲了传统日志打印的两个性能问题,一个是反复操作文件描述符表,一个是反复进入内核态,然后讲了 mmap 的原理机制。
- 广播和 EventBus 的区别?
说 EventBus 的实现原理是基于反射,里面管理了两张表,且代码之间关联性不大不易于维护,EventBus 不支持跨进程通信,被面试官反问你确定不支持跨进程?我说我的看的源码是不支持,面试官说那好吧。
- 常用设计模式你了解哪些?
我开始巴拉巴拉说了一大堆,其中说到了装饰设计模式,被面试官打断了,请你具体说说装饰设计模式。