前言
持续了大半个月的面试终于结束了,从6月19号到7月9号,一直陆陆续续有面试邀约,
不得不说,一边在职承受工作压力,另一边还要承受面试找工作压力,双重压力下,多多少少有点难顶,
但是,收获offer还是比较满意的,拿下了网易、小米的offer,
着实有点可惜的是字节跳动,倒在了三面,只能说自己还是太菜,以后还需要继续努力。
这期间只投递了互联网中大厂,面试并不多,以下是我在这大半个月以来的面试经历,发出来总结一波,也供大家参考参考!
以下面试均为Android开发——社招岗。
网易 (已offer)
整体难度不大,都是常规题。
一面(90min)
1、自我介绍
2、MVP和MVVM的区别
3、Activity被强杀了ViewModel会不会被强杀
4、ViewModel能恢复数据的原理是什么
5、从源码上说说View的绘制流程(绘制起点到三大流程的)
6、如何通过自定义View实现一个类似流式布局,讲思路
7、invalidate和postInvalidate区别
8、说说LiveData源码
9、创建线程的几种方式
10、重写Thread类和重写Runnable的区别
11、线程之间的通信方式有哪些
12、说说Handler的源码
13、volatile的作用
14、Synchronized和Lock区别
15、Synchronized的底层实现原理是什么
16、Synchronized在java 6后具体做了哪些优化
17、Activity的四种启动模式
18、Server的启动方式,各个方式有什么特点
19、广播类型,具体描述一下
20、设计模式了解哪些,挑一个熟悉的讲一讲
21、为什么要跳槽?
算法:删除排序链表的重复元素
二面(50min)
1、自我介绍
2、介绍一下项目中遇到的困难
3、说说一个音视频文件从打开到能播放的流程
4、怎么优化一个Mp4格式的视频的起播速度
5、软解和硬解的区别
6、组件化的原理
7、从源码上讲讲View的绘制流程
8、如何实现一个可以换行的View
9、View的分发流程
10、如何实现一个有下拉刷新功能的View
11、Activity和Fragment的生命周期
12、Service的生命周期
算法:判断一个链表是否有环
三面(40min)
1、自我介绍
2、公司的产品有哪些
3、介绍下协程以及它的原理
4、协程怎么取消
5、了解直播框架吗
6、直播的推流和拉流的流程是怎样的
7、H246和H265的区别</
自己对于互联网有一些小小的见解:
随着资本的冷却,整个互联网市场也逐渐的冷静下来。Android应用开发从一开始能说几个四大组件的名词,能随便写个监听事件,就能拿到高达上万的月薪的时代了。归根到底并不是工作难找了,而是Android应用开发工程师这个职位已经趋于正常,再也不是没什么技术也能拿高工资的香饽饽。
当然这个也不是绝对的,对于中高级的开发人员来说,市场还是比较缺少的,尤其是知名企业对于招聘员工来说,不仅要求有过硬的技术,还要求有高素质,好的教育背景等等。总的来说,高工资可以给你,但是前提条件是你要足够优秀,或者说让面试官觉得你很优秀。
其实面试过程就是一个把你自己推销给别人的过程,对于我们来说就是要让面试官感觉你技术好,有培养价值。感慨有点多了,还是来点干货吧,大概列举一下每一轮面试的大概范围和深度,但是也不是绝对的,还是要看具体情况。
笔试
对于社招的程序员来说,基本上不需要笔试,但是也有公司是需要的,例如:今日头条和网易都有笔试。笔试都是比较基础的一些知识,Java、Android等方面的,一般不会有网络,计算机等方面的笔试,一般情况下大家都能答出来。
一、二面
近一段时间的面试经历来说,一、二面的问题没有什么很大的区别(公司基本上都有3面技术面,但是也有例外,我在网易就是2面技术面。),基本上都是一线开发人员。主要考察你是否有牢固的基础知识和是否在平常开发中能熟练使用。
- 是否能讲解清楚你所做的项目,以及使用到的相关知识。
- Android基础知识
- Java基础知识,大概是多线程,线程安全,集合类,JVM,类相关知识等。
- Android一些源码的阅读
- 优秀的第三方框架源码阅读
三、四面
一般公司都是三轮技术面,但是也有四轮技术面的,不过不多。很多公司基本上每一轮面试官都会记录他所询问的问题,以便给下一轮面试官作参考,还有就是避免对同一个知识点多次询问。所以到了这轮面试,基本上不会再询问比较基础的知识。
-
会从两个方面考察,
广度:比较新的技术(Rxjava,插件化等),JVM,GC,网络,数据库,Android(一般不会询问之前面试官问过的问题)。深度:一般会通过1或2个问题来考察,例如:map接口下都有什么子类->hashmap和hashtable区别->hashmap实现原理->怎么解决hash冲突->是否了解concurrentHashmap->concurrentHashmap实现原理->volatile实现原理(concurrentHashmap读是不加锁的,使用到了volatile)。
-
项目中的贡献,所做的优化。
-
设计能力,基本上不多,这个要看面试的岗位,因为我这里面试的只是高级开发,并不是架构。
-
工作中的亮点和突出。
hr面
基本上到了这轮,你就算通过面试了。hr会询问一些你的经历,最主要的还是和你商定薪资待遇。在这轮,大家应该要对自己的薪资水平有一个大体的了解,一般都是在原来的工资基础上增长20%~30%的样子,当然,如果你在面试过程中表现非常优秀,也可以不受这个限制。当然如果公司诚心要你,就算你要的工资过高,hr也会委婉的告诉你,不会直接把你pass。
面试前的知识储备 & 复习
接下来分享的系统学习资源以详解各大互联网公司的 Android 常见面试题为主线,从面试的角度带你介绍必备知识点,以及该知识点在项目中的实际应用。
帮你在现在的基础上,重新梳理和建立 Android 开发的知识体系。无论是你短期内想提升 Android 内功实力,突破自己工作中的能力瓶颈,还是准备参加 Android 面试,都会在这份资料中有所一些收获。
由于面试内容比较多,篇幅有限,资料已经被整理成了PDF文档,有需要2023年Android中高级最全面试真题答案 完整文档的可
目录
第一章 Java方面
●Java基础部分
●Java集合
●Java多线程
●Java虚拟机
第二章 Android方面
●Android四大组件相关
●Android异步任务和消息机制
●Android UI绘制相关
●Android性能调优相关
●Android中的IPC
●Android系统SDK相关
●第三方框架分析
●综合技术
●数据结构方面
●设计模式
●计算机网络方面
●Kotlin方面
第三章 音视频开发高频面试题
●为什么巨大的原始视频可以编码成很小的视频呢?这其中的技术是什么呢?
●怎么做到直播秒开优化?
●直方图在图像处理里面最重要的作用是什么?
●数字图像滤波有哪些方法?
●图像可以提取的特征有哪些?
●衡量图像重建好坏的标准有哪些?怎样计算?
第四章 Flutter高频面试题
●Dart部分
●Flutter部分
第五章 算法高频面试题
●如何高效寻找素数
●如何运用二分查找算法
●如何高效解决雨水问题
●如何去除有序数组的重复元素
●如何高效进行模幂运算
●如何寻找最长回文子串
第六章 Andrio Framework方面
●系统启动流程面试题解析
●Binder面试题解析
●Handler面试题解析
●AMS面试题解析
第七章 企业常见174道面试题
●SD卡
●Android的数据存储方式
●Broadcast Receiver
●sp频繁操作会有什么后果?sp能存多少数据?
●dvm与jvm的区别
●ART
●Activity的生命周期
●Application能不能启动Activity
●…