前言
首先介绍一下我的个人背景,某211计算机专业,华为Android面试三轮结束后两天接到凉的通知。接下来附上本人的面试经历和心得体会。
华为面试
一面(1hour)
自我介绍
项目介绍,技术点相关。
C++和Java区别,GC
线程相关,Runnable和Thread的区别。
线程池
synchronized,volatile
继承相关,多重继承和接口
网络编程
UPD,TCP区别
最大的优点
最大的缺点
算法,二叉树中序遍历,
早上状态很差,简单问题也会卡壳,希望大家还是能够选择自己状态好的时间点面试……。
二面(40mins)
自我介绍
camera 硬件有哪些引脚。
问渲染管线主要有哪几个阶段?
Android的数据存储方式等等。
说说mvc模式的原理,它在android中的运用。
谈谈你的工作经历,聊聊你的职业规划等。
问了一下,java有几大基础数据类型。
问了Activity启动的几种模式,强引用、软引用、弱引用、虚引用使用。
还问了我做过的App上有一个实现的自定义View问了下实现的思路。
又问了自定义View,三个不同的构造函数的各自作用。
问Scoket和Http最大的区别是什么?
华为面试安排非常紧张,但是反馈效率特别高,一二面结束马上会短信通知是否通过。然后隔天直接三面,流程走的非常快。
三面(40mins)
C/C++基础:inline和define的区别;
volatile的作用,应用在哪些地方,为什么不是所有的变量都用volatile
static变量的特点
操作系统:线程和进程,怎么实现线程的同步
数据结构:对什么排序比较熟悉;二分法查找
现场写程序:一句代码实现,判断一个int类型的数是否是2的幂。2进制,位运算a&(a-1)
做软件测试什么能力比较重要?
白盒测试和黑盒测试的区别。
什么是UT?
问了关于规范、扩展、回调,父类的静态方法能否被子类重写等问题
冒泡排序算法。
虚拟机原理、内存回收机制等。
说说对华为的了解
为什么离职?到华为会不会不习惯?
小结
一首先是三面问C/C++还有操作系统理论知识的时候答得不好,面试官说基础不够扎实。其次是这是我好久没参加过面试,也确实比较紧张。然后手撕代码的时候也是比较紧张的缘故,还有就是不习惯手写代码,导致代码写的也比较乱,划掉的也不少。两位面试官看我写的乱糟糟的都皱了下眉头。
小米、网易面试
华为面试失败的经历,我决定蛰伏一段时间,从新复习备战,针对之前的薄弱知识点进行恶补。幸得小米网易的同学内推, 目前已经收到小米和网易的offer。附上小米和网易的Android面经。
小米面经
rxjava 三大类是什么
String的对象为什么是不可变的
arraymap可能导致什么问题
thread的构造函数是什么
runnable如何创建线程
(创建线程的方式)
有哪些锁?
synchronize和lock的区别
GC root有哪些
队列如何创建、队列在Java中的类是什么
offer是什么(当时问的时候呆了一下,还以为面试官要给我offer了,搞得老激动...然后没答出来...后来才想起他问的应该是队列里的offer方法... )
有什么查找的算法
排序的算法
网易:
sharepreference的commit方法和apply方法的区别
jetpack(viewmodel、lifecycle)
AndroidX有什么好处
Android帧动画会遇到的问题
属性动画和view动画的区别
子线程创建handler
Android达到ANR的条件
recyclerview使用不同的布局
小米和网易的两面都出奇地一致,就是一面专业基础+二面手撕代码,不过[网易撕的是算法题,[小米](/jump/super-撕的是Android的布局代码(给你一个界面,把界面给绘制出来)。撕了代码之后就是聊人生了,为什么要跳到我们公司你期望工作地是广州来北京有没有什么问题、对加班的看法、实习期间团队间如何交流、实习项目是什么如何实现...(当时的我一头雾水,这不应该是HR来问的???后来HR也来面了,不过问了下薪资、入职时间就发offer了...)
面试华为被拒后,我是如何拿下小米、网易offer?
(1)第一步是关键:调整心态
由于华为面试没有通过,所以多少都受到了一些影响,所以接下来的面试中,最关键的一步就是要调整自己的心态,以防被自己的消极心态所影响,因为一旦从心底否定了自己,面试过程中就容易出现语言不流畅、说话没逻辑、条理不清晰、回答不全面,这都是面试中很多面试者容易出现的“致命伤”,所以调整心态,沉着冷静地面对是非常重要的。
(2)第二步要梳理:Android核心知识点(25天时间,读完这本pdf)
关于第二步要梳理,实际上就是面试过程中,发现自己的知识储量是比较杂乱的,不知道面试官下一个会问什么,所以对于Java 的知识点有一个清晰的梳理是很有必要的。关于Java核心知识点,手上也有一本整理好的pdf文档,需要这份文档的可以直接我私信获得~
这份文档涵盖了很多知识技术点,囊括了Activity、数据储存、屏幕适配、消息机制、线程异步、webview、进程、ipc、数据储存等大量知识点,每一个知识点都有非常详细的解析。
(3)第三步要飞跃:恶补+刷题
关于第三步,就是要做到让自己有一个质的飞跃。对于恶补和刷题这两个方面,我自己也整理了我个人的一些资料,也是我自己的一些做法,希望具有参考性:
- 其他相关的实战电子书
- 大厂面试题题库:BAT、字节跳动、美团、华为、算法等
结尾:锦上添花
以上文章内容中所谈及到的面试资料、学习资料、学习笔记等等,均可以免费分享,需要这些PDF的小伙伴,直接(点击我)免费领取哦~
如果你觉得自己学习效率低,缺乏正确的指导,可以加入资源丰富,学习氛围浓厚的技术圈一起学习交流吧!
群内有许多来自一线的技术大牛,也有在小厂或外包公司奋斗的码农,我们致力打造一个平等,高质量的Android交流圈子,不一定能短期就让每个人的技术突飞猛进,但从长远来说,眼光,格局,长远发展的方向才是最重要的。
35岁中年危机大多是因为被短期的利益牵着走,过早压榨掉了价值,如果能一开始就树立一个正确的长远的职业规划。35岁后的你只会比周围的人更值钱。
代码改变世界,要早日成为明日大牛,程序员肩上的担子可是很重啊。趁现在开始,还不晚!
最后祝愿你也能顺利拿下大厂offer,共勉!
网友评论