前言
真后悔在小公司待了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)
-
最近有做什么项目
尾声
最近小编在大神哪里买下了几十套阿里、头条、腾讯和美团等公司2020-2021年金三银四的面试题,把技术点整理成了视频+文档(总计20G,实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,这里以图片的形式给大家展示一部分。
这份资料尤其适合:
1.没有工作经验,但基础非常扎实,对Android工作机制,常用设计思想,常用Android开发框架掌握熟练的。
2.具有一定工作经验的,但面对目前流行的技术不知从何下手,需要快速提升核心竞争力的人群。
3.在公司待久了,过得很安逸,但跳槽时面试碰壁。需要在短时间内进修、跳槽拿高薪的可以报名。
4.想了解“一线互联网公司”最新招聘需求/技术要求,对比找出自身的长处和弱点所在,评估自己在现有市场上的竞争力如何;
5.做了几年Android开发,但还没形成系统的Android知识体系,缺乏清晰的提升方向和学习路径的程序员。
相信它会给大家带来很多收获。(更全的内容和资料,在文末获取)
Android面试题(部分展示)
数据结构与算法面试题(部分展示)
源码精编解析(部分展示)
自行领取直达链接:【点击获取】
需要相关知识点可以查看我的【GitHub】,对于已经掌握的可以忽略以节省时间。