作为去年裁员大军中的一员, 为了准备年初的面试真的是勤勤恳恳诚惶诚恐啊. 简单介绍一下, 目前 5 年半开发经验, 工作地点在上海, 面的是 Android 高级岗, 有一个认识前辈内推的. 面试之前对华为做了大量的了解, 而且反复刷了不下 300 道面试专题, 面试的时候才发现这些题真是没白刷!
华为的面试基本就是群面, 技术面, 综合面, 不同的是华为最后还有英语面
1. 群面
群面是分两组讨论汇报. 汇报时面试官不会只让一个人说, 会指派其他 1~2 位同学汇报. 然后就是补充发言了, 这时候要主动说, 被面试官叫到回答问题的一般是比较危险的. 还有就是挑人评价组内表现情况, 被评价表现不好的求生欲一定要强. 群面主要是筛差的过程, 只要对小组有贡献就行, 不能不说话.
2. 技术面
第一轮面试大概一个半小时. 我们过了一面的一起去吃了个必胜客
做开发的最重要的就是技术面这一关! 技术面是与面试官一对一的聊. 首先会有 3~5 分钟的自我介绍, 大家在自我介绍的时候一定要挑自己简历以及简历外的亮点说, 做过哪些项目, 带过团队经历等. 重点是! 敲黑板! 在最后一定要说自己为什么要进入华为, 以及对华为的看法!
问过的面试题;
自定义 View!(重点!)
View 的绘制流程.
自定义 View 的步骤.
PhoneWindow 实例是在哪个类哪个方法中实例化的?
Selector 是怎么实现的?
View 的事件分发机制
为什么移动后点击事件还在原来的位置?
这是我之前收集的很多面试相关的专题资料, 确实很多都问到了. 不过这次面试遇到的问题我并没有单独整理出答案来, 一方面是时间精力有限, 一方面是每次面试都不会是同样的几个问题. 不过技术面肯定是一样的, 所以梳理出来给大家一个参考, 希望对在找工作的朋友能有帮助.
Android 系统源码方面
事件拦截和分发进程间的通信方式
应用的创建启动流程
Handler 是怎么导致内存泄露的
第三方库的源码, Glide,OkHttp 和 Retrofit MVC,MVP 和 MVVM 开发模式优缺点
常用设计模式理解
Binder 驱动和虚拟机
数据结构和算法, Java 的常用集合和实现原理
ArrayListLinked
HashMap 的实现原理
缓存淘汰策略
红黑树和二叉树
最短路径规划
海量数据筛选
手写算法!
性能优化
如何检测一段代码的执行时间?
界面卡顿如何修复?
滑动不流畅怎么处理?
50fps 有什么办法可以提高到 60fps?
内存泄露怎么检测?
leakcanay 的原理?
线程和线程池
wait() 和 sleep() 的区别?
同步锁线程池的参数详解?
AsyncTask 源码参数详解?
.......
我能记得的大概就这些了. 再啰嗦一下, 简历写的好很重要! 多写点干货. 面试官根据简历提问, 面试官会死抠简历! 超级细致!
这里推荐腾讯课堂的一个官方 qq 群; 830344345, 上面那些面试专题资料就是群里找的, 我一直混迹其中跟行业大佬学习交流, 顺便蹭一些一线大厂面试资料和学习提升的视频.
对于我们做技术的来说, 往往接触越深, 就越感觉自身的不足. 每一天都小心翼翼就怕哪天学不动跟不上发展了
综合面和英语面
综合面可以理解为是技术面的 plus 版本, 还是会死抠简历, 只是抠的更细了, 也会问一些与工作岗位相关的问题, 比如你对这个岗位有什么看法什么的, 所以提前要做一些功课了.
还有些朋友会遇到 boss 面, 这个就是聊聊天, 比如 "你最近遇到什么挫折?"" 用英语聊一下今天的面试经历 ".
英语面: 这个很多普通研发类岗位的面试应该是没有的, 但层级高一点的一些岗位就会有了. 英语测试分为 3 部分, 测试完需要 20min.
(1) 句子跟读 5 个, 每个就 15 个词吧, 20 秒的时间, 时间很充裕.
(2) 听力单选测试 15 个, 英语 4 级水平吧.
(3) 话题讲述.
整体的难度偏低. 虽然我英语口语很蹩脚, 但是对方也没怎么在意这块, 毕竟又不是面的客户经理之类需要沟通的岗位. 后面蛮开心的收到通知顺利通过了面试考核, 等下一步录用签约!
来源: https://juejin.im/post/5c952b5a6fb9a0710c7039b5