前言
真后悔在小公司待了3年,一直原地踏步,想要进大厂升级,想要一份月薪25K的工作也不过分吧...
如今想跳进大厂却发现难上加难,好多面试题根本答不上。大厂的面试通知倒是拿了不少,但扛过二面三面的却很少。

真没想到,现在的面试题有这么刁钻了!上来就让人手动模拟高并发场景秒杀下单超卖Bug,面试官那种严肃又疑惑的表情让我不禁怀疑自己,这么“简单”的题都不会?
第一次面以徒弟头条25K,我失败告终!!!
失败的面试经历
一面(1hour):
1、自我介绍
2、项目介绍,技术点相关。
3、C++和Java区别,GC
C++不熟,只能说内存管理相关的问题,所以就问到了GC。然后说分代收集算法。老年代担保、元数据区从JVM移到了本地内存这些。
4、线程相关,Runnable和Thread的区别。
Thread类是实现了Runnable接口,平时使用起来可以使用start方法调用。线程池基本传Runnable对象,平时也是线程池用的多,所以具体相关不太熟。
5、线程池
6、synchronized,volatile
7、继承相关,多重继承和接口
8、网络编程
9、UPD,TCP区别
10、最大的优点
11、最大的缺点
12、算法,二叉树中序遍历,真是早起毁一天,竟然没撕出来,我真想给自己两耳光。不过面试官给我总结的很好,说要利用栈的特性,先进后出,所以要保证左子树先进根结点再进,这么思考之后就顺利了很多。
二面(40mins):
1、介绍一下项目
2、Android四大组件,详细讲一下。
3、Launcher启动APP的全过程。
icon存入口Activity信息
AMS通知Launcher去pause。
Launcher通知AMS已经pause
AMS检查进程是否已经启动,如果不启动则启动进程。并且调用ActivityThread的main方法。
启动之后通知AMS已经启动
然后AMS将入口Activity信息传递给APP。
APP启动对应入口Activity,并且创建对应上下文并且调用Activity的onCreate方法。
4、进程间通信,AIDL,Binder。扯了一会说进程间通信平时怎么做的,就说了一下AIDL相关的Demo实现什么的。说到了自己程序里面有拉起微信的这个功能(也就是广播)。
5、设计模式了解吗,平时用过哪些设计模式。
6、算法题:输入一个数n,代表有n个点,一个二维数组,二维数组代表相连的点,要求输出连通起来的点。
如果n=6,数组假设是{{1,2},{2,3},{4,5}},则输出{{1,2,3},{4,5},{6}}

成功OPPO面试
一面:
- 有Android相关的经验吗
- 说一下Java集合类
- set和list有什么共同点吗,或者都实现了什么功能继承了什么类
- 集合类通常有线程安全问题,有什么解决办法
- HashMap实现原理
- 红黑树实现原理,有什么作用
- 说一说线程池你的理解
- 线程同步的问题有什么解决方案
- 安卓问题,内存只有一个G,导入一个很大的图片
- JVM内存回收机制
- 安卓内存泄漏有哪些场景 (答成了内存溢出 OOM,说要具体的场景,不要笼统)
- 你的项目有什么亮点,有什么难点,是怎么解决的
- 你同学怎么评价的或者说你自己怎么评价你这个项目的
- 代码题(剑指offer,两数相加不用加法,两次提示都没写出来)
- 还有什么问题。(如果能过后面还有几轮面试,两轮,一轮技术和hr,提示下次可能还会有很多android问题,然后进来不想做Android可以转岗
二面
1.你目前做过最满意的项目
2.是Nodejs项目,为什么要用Node.js
3.Nodejs和java语言区别
4.说说你的java项目(以下几个问题都是关于我的项目)
5.为什么要加salt
6.怎么生成的salt
7.怎么验证密码
8.salt存在哪里、存在数据库里有什么弊端。
9.加了salt有什么好处 ,md5不是动态的么(下面开始不是项目问题)
10.有没有安卓的经验
11.Java你了解哪一块
12.Java线程的安全性访问
13.乐观锁和悲观锁
14 sychroinzed是悲观锁吗
15.是可重入锁吗
16.你有使用过可重入锁吗
17.一般你的项目是用什么方法线程同步
18.等待另一个线程用什么方法(答了Thread.join())
19.如果另外一个线程是线程池呢(答了wait和notify方法)
20.具体怎么用
21.你的学习方式
- 博客有看哪些
- github看过哪些开源项目(被问结巴了 捂脸)
24.你有什么优势,不足
25.实习的工作是做什么
26.遇到问题怎么解决
hr面:
比较平常的问题,成绩排名,形容自己,团队合作的案例,做过有挑战性的事,为什么要来oppo之类的

字节跳动

一面:
-
内部类
非静态的内部类怎么访问外部的成员变量和方法
匿名内部类在方法中声明,可以访问方法中的临时变量吗 为什么
-
final
-
内存泄漏,哪些情况导致内存泄漏(如哪些编码不规范导致的内存泄漏)
-
四种引用
-
JVM垃圾回收算法
-
GC ROOT根节点包括哪些
-
Java中集合类
-
Map hashtable和hashmap(内部实现)
-
hashmap的实现有什么改动
-
多线程,开启一个线程有哪些方式
-
介绍线程池
-
从线程池创建的线程会被销毁吗
-
讲讲sychornized关键字
-
sychornized关键字怎么使用
-
sychornized锁一个类和一个对象怎么使用
-
sychornized是可重入吗,解释一下什么是可重入锁
-
讲一下http,状态码,对象头,body组成等
-
content-type
-
http下层协议 ,介绍tcp协议
-
三次握手,四次挥手的原因
-
算法题:lc简单难度左右,旋转数组,从小到大不重复打印数字,如1, 2, 2, 5, 10,11,12, 9, 8, 2, 1,1 输出1 2 5 8 9 10 11 12
二面:
-
输入域名后,发生的过程
-
http报文包含哪些
-
接口和抽象类的区别
-
Java泛型
-
List不设置泛型会怎么样
-
一道代码题

-
手撕代码 线程安全懒汉式单例模式
-
单例模式解决什么问题
-
实现单例模式需要注意问题
线程安全、构造方法私有,volatile
-
内存泄漏、内存溢出
-
解决内存泄漏有什么办法
-
代码题:第K个大的元素(lc hard)
-
最近有做什么项目
尾声
无论什么技术,热不热门,学习都是不可间断的,乘着年轻磨砺技术才是王道,不然在程序员这个后浪一波比一波汹涌的职业里混,你想吃青春饭都吃不了几年。不过,想提升是一回事,如何有效提升就是另一回事了。我工作近十年,也带过不少实习生、应届生,很多年轻人真的很努力在学,加班加点工作卖力,但也就是差点火候,还是方法不对。
什么是方法,方法就是跟着身边大佬走,多问多学,如果身边没有大佬也可以加入我们学习资源交流群,全国的小伙伴天南地北,可以一起聊天学习,更加了解这个行业情况,趋势与走向。

自行领取直达链接:【点击获取】
需要相关知识点可以查看我的【GitHub】,对于已经掌握的可以忽略以节省时间。
网友评论