前言
我们都知道面试大厂主要就是考察程序员技术方向的专业技能,Java开发主要考察的就是Java方面的专业技能,而Android岗位的 专业技能 就是Android程序员面试的重要考察方向。
大厂的招聘条件是明牌的,但技术这一块却难倒了大部分的人。
面试是测试一个人能力最直接的方式,从3月份开始几个月陆陆续续面了10余家公司,下面就放上我遇到的部分面试题以及面试技巧
面试技巧
须知
-
自己亲自做的东西一定要明白, 如果不是自己亲自做的, 请慎重骗面试官
-
问的时候会问一些知识点相关的话题,比如你的数据是需要 api 交互的,那可能会问 http 相关, json 数据解析相关,缓存相关,图片加载相关等
-
对用到的知识点虽用不着一定要看源码的地步,但是最好要懂原理,比如图片加载一定要知道二级缓存,一些常见的缓存算法
工资
- 不同的城市肯定工资水平不一样的,这里仅以一线城市为例,而且不同的公司、个人能力的高低都会造成工资差异化,这里只是一个大概。
注意事项
-
去面试前一定要花点时间了解下你面试的这家公司(本身有自己产品的下载体验一下,以防面试过程中问到,或者可以给产品提点意见)
-
面试的时候态度要谦虚点
-
学习能力很重要(一定要让面试官感受到你是一个好学的人)
-
个人兴趣(不要提什么打游戏, 唱歌之类的, 可以说一下业余时间提下自己经常上一些技术社区,看一些技术博客之类的)
-
除了基本的知识点, 面试官通常都会问一些比较深的领域(可能你没有接触过,但不要气馁, 面试官在考察下你的技术的深度, 这些领域一般包括设计模式, 虚拟机, 插件化, React Native之类的)
面试题目
同花顺(offer)
1、详细讲一讲最有成就感的项目
2、JVM垃圾回收算法
3、HashMap底层实现
4、ArrayMap 、HashTable 和ConcurrentHashMap的区别
5、多线程同步问题
6、谈谈Activity的生命周期
7、看过哪些开源框架(根据你说的来细问,我说的是Glide 框架、volley框架这些)
8、Android消息机制是怎样的?
9、View事件分发流程
10、ArrayList 和 Map 的区别
11、性能优化做过什么?如何做内存优化?
12、apk的打包过程
13、自定义View的流程
14、okhttp有几个拦截器,分析下它的原理
15、简单讲讲MVC,MVP,MVVM
16、Http 请求的分类,HTTPS如何保障安全?
17、单例模式的实现方式
18、跨平台开发框架最了解哪个?(flutter),为什么选择它?
阿里
1、ava引用类型
2、Object类里面有哪几种方法
3、HaspMap扩容机制
4、equals 和 hashCode方法
5、handler是怎么实现异步的?
6、jvm内存模型
7、垃圾回收机制(GC机制;老年代和年轻代的含义)
8、类加载机制和双亲委派模型
9、进程间通信的方式有哪些
10、string stringbuffer stringbuilder的区别,各自的使用场景
11、bitmap内存优化
12、Glide的原理,如何实现大图加载的
13、binder原理
14、用过哪些第三方库(会问具体内容,不要逞能把不熟的也答上)
15、进程保活的方法
16、view的绘制流程
17、okhttp拦截器的原理
18、工厂模式的三种实现方法
19、TCP滑动窗口和拥塞控制
20、mvc模式的原理,它在android中的运用
21、算法:字符串匹配算法
网易
1、项目主要问了:遇到的难题和解决方案;技术栈中的一些细节,使用了什么算法来实现
2、java的集合类都有哪些(list,set,map),它们有何区别
3、hashmap底层原理,它和HashTable区别,为什么hashMap不是线程安全的?
4、Handler内存泄漏与Looper
5、volatile的作用
6、synchronized和look的区别,它们是怎么实现的
7、Java同步异步
8、为什么要泛型擦除
9、APK打包流程
10、四种引用方式,它们的使用场景是什么
11、线程池线程是如何保持线程不被回收的?
12、线程可以多次调用start吗?会出现什么问题?
13、AIDL是什么,进程间通信还有什么方式吗?
14、ViewModel的底层原理
15、MVC MVP MVVM的区别,它们是如何实现的
16、描述下Activity 的生命周期
17、android触摸事件流程
18、glide的图片缓存机制
19、布局方式有哪些,你觉得哪种更高效
20、热修复的原理
21、okhttp拦截器的原理
22、单例模式的实现方式,讲一下懒汉式的思路
23、HTTPS的建立过程
24、三次握手,为什么是三次,少一次会有什么结果
25、算法1:链表的归并排序
26、算法2:贪心算法
滴滴(offer)
自我介绍(一面对这块问得比较多,要求对项目的情况有一个比较深入的了解,开发的应用程序取得了什么效果,运行中有遇到什么问题,有什么环节是你独立负责的吗之类的,二面的自我介绍就是走个过场,直接看中了我项目中用到的flutter,然后就跨平台开发展开了交流)
1、synchronize关键字的作用
2、新生代和老年代
3、垃圾回收机制
4、多线程的实现方法
5、Handler机制,Lopper是如何收取消息的?
6、flutter有没有用过
7、activity有哪几种启动模式
8、activity界面跳转解耦的方法
9、HashMap的实现
10、MVP架构
11、oom是什么,应该怎么优化?
12、怎么定位ANR?
面试官本来还想让我手撕一道算法,不过比较晚了,这边想要今天走完全部流程,就让我简单讲了一个遍历算法的分析思路(一面)
13、看你项目上用的flutter,自学了React-Native,这两个你对那个更熟练一些呢?(flutter)
14、在flutter里streams是什么? stream有几种订阅模式,如何调用?
15、future 和steam的区别
16、Flutter的绘制流程
17、Android性能优化这块,你项目中有获得什么经验吗,讲一讲,大图加载问题怎么解决?glide缓存的原理
18、堆和队列的区别
主管面没有涉及到技术,就是对个人经历的梳理和个人信息、性格方面的考察,这个没啥要注意的,大方得体一点,毕竟对面是主管。
最后
将好运传递给大家,祝大家都可以找到自己满意的工作!!!
整理不易,白嫖太易!有需要的读者朋友们可以关注一下。以上面试题+解析都可分享~
网友评论