背景
我是2020年毕业于中南大学的计算机学院的,我毕业之后在华为工作了差不多两年多,一直都从事着Android开发。 然后去年年底的时候因为我自己的一些原因打算离职到外面看看,那个时候我是投了超级多简历,然后去面试了小红书啊、快手啊,爱奇艺啊,微信,小米…等等很多的大厂,小厂,然后下面这些就是我每次面试后记录的一些面试官问我的问题(ps:基本上特别的全面),我总结了一些给大家看一下。
简单粗暴的说:用最少的时间,最高效率,让你清楚:想要拿到Android工程师 offer你就要好好的看了
小红书 Android开发工程师
一面
Java方面
1、 静态变量和实例变量的区别
2、静态变量有static关键字修饰静态变量不属于某个实例对象,而是属于类,也叫类变量,只要程序加载了类的字节码,不用创建任何实例对象就会被分配空间,就可以被使用,也就是说,你创建了多个对象,他们共用了一个静态变量,而实例对象是属于自己的独有的,不会被共享!(可以Class.var使用),位于方法区
3、实例变量必须创建对象后,才可以通过这个对象来使用。即new Class().var,位于堆区
4、“==” & equals()
5、 浅拷贝 &深拷贝
6、 HashMap , 扩容机制
7、多个线程如果共享多个资源,需要怎么保证安全
8、volatile,CAS/ABA
Android方面
1、 事件的分发机制
2、 Handler原理
3、TCP UDP
4、Kotlin和Java的区别
快手 Android开发工程师
一面:
1、 一个平面上n个点,找出k条线穿过max点数
2、 100位面试者,每人要四轮面试,怎么分配面试官
二面:
1、手撕:最长单调区间
2、 Android/ 布局优化
3、Activity启动模式
4、 RecyclerView和ListView区别
5、 Handler机制,loop方法为何不会造成ANR
6、View绘制流程
7、SingleTop和standard启动模式下,生命周期回调有何不同
8、 onStart和onResume区别
9、 Java/ 面向对象三大特性
10、Array和Linked区别
11、 HashMap底层
12、 进程间通信方式
13、equals和==区别
14、线程间加锁的方式
15、知道啥设计模式
16、synchronized的不同使用
17、异常
18、线程池
19、创建线程的方式
20、 OS/ 死锁
美团app android开发工程师
一面
1、jvm内存模型
2、new 对象的过程
3、 类加载过程
4、 ClassLoader源码
5、final关键字
6、 匿名内部类
7、讲下垃圾回收算法
8、LinkedList && ArrayList
9、hashMap
10、常用注解,spring中的注解
11、锁,synchronized底层原理
12、 https && http
13、 浏览器输入地址后的过程
14、状态码 303 304
15、 你知道的设计模式
16、单例模式 说了双重校验锁,静态内部类 ,不同场景下如何选择
17、 双重校验锁为什么要两次判空
18、volatile,指令重排
字节跳动旗下的抖音电商相关 Android开发工程师
一面:
1、实习学到的架构
2、MVVM
3、Dagger原理
4、livedata原理
5、进程和线程
6、操作系统IO模型
7、进程通信方式
8、管道通信原理
9、TCP协议如何实现可靠传输
10、UDP如何实现可靠传输
11、java创建线程
12、线程池原理
13、线程池拒绝策略
14、synchronized与reentrantlock实现方式的区别
15、AQS原理
16、handler原理
17、Retrofit原理
算法:
1、二叉树右视图 — 非递归实现
二面:
1、Navigation的优缺点
2、如何实现的自定义navigate方法切换fragment,如何让被覆盖的fragment感知到生命周期
3、gc如何判断垃圾对象
4、成员变量与局部变量的区别,局部变量的值一定是存放在堆中吗()
5、jvm类加载的时机
6、jvm类加载过程
7、双亲委托机制是什么
8、双亲委托机制什么时候会被破坏
9、内存泄漏是什么
10、volatile的作用
11、写一个死锁
算法:
1、判断A是否是B的子树
三面:
1、自己是如何学习Android的
2、实习过程中做的需求说一下
3、实习过程中的难点说一个
4、实习过程中和哪些人接触的比较多
5、如何和别人沟通的
6、实习的收获
7、挑一个项目说一下
8、里氏替换原则
9、http状态码
10、http多路复用
11、数据库
12、拿了哪些offer
算法
1、汉字表示的数字转成阿拉伯表示。
《Android面试大厂必考174题》
目录
最后
我一直觉得技术面试不是考试,考前背背题,发给你一张考卷,答完交卷等通知。其实我觉得技术面试是一个 让我们认识自己 的一个过程,让我们知道现在招聘这个岗位的要求差距和我们差多少。
更重要的是,技术面试是一个双向了解的过程,要让对方发现你的闪光点,同时也要 去发现对方的闪光点,因为他以后可能就是你的同事或者领导,所以,面试官问你有什么问题的时候,不要说没有问题了,要去试图了解他的工作内容、了解这个团队的工作氛围。
找工作无非就是看这三点:做什么事,和什么人,给多少钱,要给这三者在自己的心里有那么一个划分。
希望这份资料可以帮助到正在浏览这篇文章的你,成功找到自己满意的工作!!