我们在准备简历的时候要去换位思考,HR(或者招聘部门)是如何审阅一份简历的。
所谓的黄金区,即简历第一页的起始部分,以笔者的经验,一般会用来放个人简介(包括教育背景,个人自述等)及核心技术要点。
我们来看一份样例
赵xx | Android工程师
年龄:xxx | 经验:x年 | 博客:xxxx
电话 / 微信:xxx | 邮箱:xxx
教育背景:xxx(20xx/9–20xx/6)
专业背景:xxx
个人简介
20xx年至今,从事Android开发x年有余,经历过xxx开发,xxx开发,xxx项目研发,xxx方案调研及实现,xxx定制化Android设备应用研发;
积累了一定的项目经验和技术实力,有较强的技术攻关能力和学习能力,对xxx有一定的研究,针对xxx,xxx,xxx相关源码进行过深入的研究和学习
[]( )简历的核心关注点
针对HR来讲,最关心的点有以下几个
-
专业是否符合要求
-
学历是否符合要求
-
工作年限是否符合要求(针对高开,专家,资深分别有一定的年限限制)
- 年龄是否符合
针对招聘部门来讲,最关心的点如下
-
过往项目是否匹配
-
是否对本部门的项目感兴趣
- 是否具备一定深度的领域研究和学习能力
因此,在黄金区把这些关注点描述清楚,就是我们的一个目标了。
在上面的Sample中,笔者将年龄,工作年限,教育背景,专业背景都放在了最显眼的位置,就是为了让HR能一眼看到需要了解的信息。
在个人简介中,笔者简单介绍了工作经历,项目经历,以及自身的深入研究领域,这里是为了给用人部门审核时,大致判断是否符合用人部门的需求。
这里要注意的是,突出自己的优势,扬长避短,没有价值(或者简历审核方不关心,或者是自身劣势)的内容尽量不要放在这个区域。
[]( )专业技能点
当HR(或用人部门)初步判断该应聘者基本符合要求时,就会去看专业技能点及项目经验了。
针对面试者来说,在面试的过程中,面试官会着重考察简历上的专业技能点,我们在写技能点时,一般会使用了解,熟悉, 精通这样的词语来进行描述。
而在笔者看来,即使对某方面非常精通,也需要用一些较为圆滑的描述来表达,比如针对xxx有较为深刻的理解,针对xxx有自己的理解,针对xxx有一定的实践和独到见解,来避免面试官问的深度过深。
技能点写什么?
具体的技能点到底写什么,大的方向来讲笔者建议分为两大部分 – Java和Android(如果有native开发经验根据情况编写),具体细节来讲,需要根据前期准备的程度进行填写。
针对高开来讲,所谓的Java基础,已经远不是基础,而是涉及到JVM内存区域,JMM内存模型,多线程并发,封装继承多态及Jvm是何如实现的,为什么要这么实现等等。
而Android基础,也尽量要深挖一些,比如涉及到四大组件,比较常问的一个问题是Activity是如何启动的(或者应用是如何启动的)。
这个问题可深入考察的点非常多:
-
考察对源码的理解程度
-
AMS是如何跟Zygote通信fork出进程的
-
AMS是如何跟应用层通信的
-
ActivityThread是如何被启动的
-
ActivityThread到底是用来做什么的
-
主线程Looper如何初始化的
-
AMS是如何绑定ActivityThread的binder对象的
- binder是如何初始化的,如何完成跨进程调用的,如何跨进程传递数据及传递数据有什么限制等
更多详细内容请点击:[面试必备:Android Activity启动流程源码分析]( )。
这也是为什么建议大家在准备阶段以深度为主进行准备的原因,如果看过相关系统源码,相信这些问题都可以轻松应对。
针对专业技能点,笔者不可能一一涵盖,这里给出一些技能点,大家可以根据自己的情况进行选择。
[]( )Java相关
-
容器(HashMap、HashSet、LinkedList、ArrayList、数组等)
-
内存模型
-
垃圾回收算法(JVM)
-
垃圾回收机制和调用 System.gc()的区别?
-
类加载过程(需要多看看,重在理解,对于热修复和插件化比较重要)
-
反射
-
多线程和线程池
-
设计模式(六大基本原则、项目中常用的设计模式、手写单例等)
-
Java 四大引用
-
Java 的泛型
-
final、finally、finalize 的区别
- 接口、抽象类的区别
[]( )Android
-
自定义 View
-
事件拦截分发
-
解决过的一些性能问题,在项目中的实际运用
-
性能优化工具
-
性能优化 (讲讲你自己项目中做过的性能优化)
-
Http[s]请求慢的解决办法(DNS、携带数据、直接访问 IP)
-
缓存自己如何实现(LRUCache 原理)
-
图形图像相关:OpenGL ES 管线流程、EGL 的认识、Shader 相关
-
SurfaceView、TextureView、GLSurfaceView 区别及使用场景
-
动画、差值器、估值器(Android中的View动画和属性动画 - 简书、Android 动画 介绍与使用)
-
MVC、MVP、MVVM
-
Handler、ThreadLocal、AsyncTask、IntentService 原理及应用
-
Gradle(Groovy 语法、Gradle 插件开发基础)
-
热修复、插件化
-
组件化架构思路
-
系统打包流程
-
Android 有哪些存储数据的方式。
-
SharedPrefrence 源码和问题点;
-
sqlite 相关
-
AMS 、PMS
-
Activity 启动流程,App 启动流程
- Binder 机制(IPC、AIDL 的使用)
以上内容均放在了开源项目[【GitHub】]( ),免费分享,有需要的朋友自取。
[]( )如何应对面试?
================================
========================================
前面我们聊了如何准备面试和投递简历,下面我们从面试本身出发,介绍面试中有哪些应对技巧。
对技术面试来说,可能有的人并不会注重所谓的技巧;笔者在这里说的技巧,并不是什么奇技淫巧,而是在前面的准备部分都已经比较完备的情况下,如何在面试中更好的体现自己的技术实力。
[]( )如何更好的跟面试官沟通?
一般而言,大公司的一面二面会在线上进行面试,尤其是现在疫情的情况,可能我们更多的面对的是线上面试。
下面我将从线上和线下两个角度来讲一些面试技巧。
[]( )线上面试
线上面试的过程中,可能出现各种各样的问题,比如网络不稳定,与面试官沟通不顺畅等等。
针对线上,我们应该做好以下准备:
-
准备好水 线上面试一般会持续1-3个小时(一面加二面),因此准备好饮用水是非常重要的,试想不喝一滴水,口如悬河讲2个小时是什么感受!
-
尽量争取线下面试 线上面试有各种的不便,为了更好的表现出自己的技术能力,可以尽量跟HR/面试官约线下面试。
- 提前与面试官沟通 不同的面试官面试风格迥异,有的偏好打断面试者,有的偏好听面试者讲完再提问。在线上面试这种环境下,更加剧的沟通的不便,因此我们应该提前跟面试官沟通,更顺畅的完成面试过程;笔者在面试前会先告诉面试官,如果我有哪些地方没有讲清楚,请打断我向我提问。
尾声
对于很多初中级Android工程师而言,想要提升技能,往往是自己摸索成长,不成体系的学习效果低效漫长且无助。 整理的这些架构技术希望对Android开发的朋友们有所参考以及少走弯路,本文的重点是你有没有收获与成长,其余的都不重要,希望读者们能谨记这一点。
最后想要拿高薪实现技术提升薪水得到质的飞跃。最快捷的方式,就是有人可以带着你一起分析,这样学习起来最为高效,所以为了大家能够顺利进阶中高级、架构师,我特地为大家准备了一套高手学习的源码和框架视频等精品Android架构师教程,保证你学了以后保证薪资上升一个台阶。
当你有了学习线路,学习哪些内容,也知道以后的路怎么走了,理论看多了总要实践的。
进阶学习视频
附上:我们之前因为秋招收集的二十套一二线互联网公司Android面试真题?(含BAT、小米、华为、美团、滴滴)和我自己整理Android复习笔记(包含Android基础知识点、Android扩展知识点、Android源码解析、设计模式汇总、Gradle知识点、常见算法题汇总。)