前言
Android常用知识体系是什么鬼?所谓常用知识体系,就是指对项目中重复使用率较高的功能点进行梳理。注意哦,不是Android知识体系。
古语道:学而不思则罔,思而不学则殆。如果将做项目类比为“学”,那么整理就可以类比为“思”。
在做项目过程中总是会遇到使用相同的功能,比如toast、对话框、刷新加载列表、网络框架、数据库等等,一个简单的方法就是从之前的项目中复制粘贴到新项目中,然后做一些个性化修改,好了,这就“大功告成”了。当另外一个新项目用到了,再次复制粘贴。这样是不是很low。但是当项目一个接一个的时候,这个方法是一个简单快速的方法。
那么当几乎没有项目可做的时候或者当周末有时间的时候,我们是不是应该对功能点进行一下思考呢。那么思考什么呢?
1.思考这个功能点经过多个项目的“考验”,是不是“成年”了,可以“独立”出来了;
2.思考这个功能点是不是属于常用功能,值得“独立”出来;如果是的话,为什么不把这个功能点从项目中“独立”出来呢。有人会说,我记忆好,能知道所有项目中用到的功能点,我可以随时找到。是吗?我当下很怀疑啊。
华为四面(3次技术面+HR面)
一面(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?
- 问了关于规范、扩展、回调,父类的静态方法能否被子类重写等问题
- 冒泡排序算法。
- 虚拟机原理、内存回收机制等。
- 说说对华为的了解
- 为什么离职?到华为会不会不习惯?
HR面(20mins)
- 为什么离职
- 有没有职业规划
- 对公司未来的展望
- 以前公司的薪资待遇
- 期待的薪资
HR面还好,感觉都是一些常见的问题,没什么很刁钻的问题。
最后
总而言之,Android开发行业变化太快,作为技术人员就要保持终生学习的态度,让学习力成为核心竞争力,所谓“活到老学到老”只有不断的学习,不断的提升自己,才能跟紧行业的步伐,才能不被时代所淘汰。
在这里我分享一份自己收录整理上述技术体系图相关的几十套腾讯、头条、阿里、美团等公司19年的面试题,把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,这里以图片的形式给大家展示一部分。需要的朋友可以私信我【资料】或者 点这里 免费领取
还有高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料 帮助大家学习提升进阶,也节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习。 领取地址: Android学习PDF+架构视频+最新面试文档+源码笔记
BA%9B%EF%BC%9F%E5%A6%82%E4%BD%95%E9%9D%A2%E8%AF%95%E6%8B%BF%E9%AB%98%E8%96%AA%EF%BC%81.md)