金三银四如何短期拔高?这份排坑的Android面筋必须收藏!「附高质学习资料」

2021-02-06 18:39:43 浏览数 (1)

马上过年了,过完年回来就是春招和金三银四的面试季了,今天分享一下面试前的准备技巧和一些Android面试要点,这篇文章适用于所有需要就业的小伙伴,不管你是名校毕业,还是双非出身,我相信这篇文章能给你带来一点点的小的收获!

主要讲的几个部分:

  • 引人注目的简历
  • 常见的面试小技巧
  • Android 面试要点
  • 高质的学习资料

引人注目的简历

准备简历有两点是绝对要记住的:

  • 不要等到真正开始找工作前几天才开始准备你的简历,越早准备越有优势!
  • 简历一定要用 PDF 格式,一定要用 PDF 格式,一定要用 PDF 格式!

简历真的很重要很重要,招聘系统或者是邮箱里一天可能会收到几十万份甚至更多的简历,HR可能打开10秒都不够就决定这份简历是不通过还是进入下一阶段了。

我的简历经过了五个版本的修改,从一开始的简历挂,到现在,基本上都变成笔试挂了(有毒?)

不同版本的简历不同版本的简历

简历的目的:让企业的人从整体上了解你是一个具备什么能力的人

简历可能涉及到的分点都尽可能全地给你列出来了,你只需要选择其中适合你的即可:

  • 个人信息:你的姓名、联系方式、求职岗位(切忌不要写无关的内容例如身高体重之类的)
  • 掌握技能这一块是最重要的,面试官会根据你写的内容考察你掌握的知识
  • 校内经历:在校期间你主要的突出表现
  • 项目经历:如果有团队项目最好,也可以从 GitHub 上找一个项目练手,再没有,可以把学校的课程项目写上去呀!
  • 竞赛经历:数学建模、ACM、蓝桥杯这些高质量比赛一定要写
  • 实习经历:这点不是必须的,如果有,最好描述清楚实习的工作内容、表现和收获
  • 获奖证书:CET-4,CET-6,奖学金,软著,论文······
  • 自我评价:不要局限于写上烂大街的协作能力强,工作认真······可以要加上具体内容去支撑你的每个自我评价

如果你不知道该怎么写简历,我可以推荐两个链接给你,我基本上是按照他们的建议来写简历的:

一个程序员的简历模版分享

常见的面试小技巧

面试有很多小技巧的,特别是和 HR 对线的时候(HR看到不要找我呀,害怕.jpg)

我们先来看看和技术面试官对线的时候,有哪些可以用的小技巧:

  • 不懂不要说不懂:面试官在知识深度上超出我们的掌握范围,如果问到不懂可以参考下面的做法:
    • 可以结合自己的理解去回答,无论正确与否,虚心请教
    • 若是有标准答案的问题但不懂,可以说:“目前还没有接触到这部分知识,面试完以后会去学习,加强理解!”
  • 引导面试官:面试官抛出一个问题时,围绕该点展开回答,可以串联一些其它知识,但不要说太多,引导面试官:
    • 提到 ArrayList 时,提一下 LinkedList,引出 LinkedList
    • 提到 HTTP 时,提一下 HTTPS,引出 HTTPS
  • 手撕代码切忌抬手就写,要确定题意,对有不理解的地方要敢于提问。解题时跟面试官说自己的思路,以及每一步干什么,一边写一边向面试官解释
    • 不要一开始就追求最优解,面试官不会太反感粗糙的代码,但他希望你是一个有逻辑、思路严谨的人
    • 面试官会引导你优化你现有的代码,不必因为一开始写不出最优解而苦恼。
  • 反问环节:要从面试官那儿获得对自己的反馈,比如:
    • 你觉得我的基础如何,之后该向哪个方向加强?
    • 当前企业最主要的技术栈是什么?
    • 公司目前的主要业务是什么?该岗位主要负责什么内容?

当我们经历了技术面的洗礼后,顺利来到了 HR 面试,这时候要记得:在 HR 面试环节,要在不过分夸张的情况下表现出自己的优秀,表现出对加入公司的向往。

HR 主要会问以下几项内容:

  • 了解你的个人情况(校内经历、兴趣爱好、家庭情况···)
  • 询问你对公司的了解,我们可能面试很多家公司,不可能每家公司都了解很透彻,只要了解公司的行业,主要产品即可
  • 询问你的期望薪资(这是 Battle 名场面!最后再展开说)
  • 反问环节:可以问 HR 关于企业文化培养新人的制度等,如果有完善的制度和文化,一般 HR 都会回答的很流利的,否则就要慎重了。

Android 面试要点

整个面试题分为三个部分:Java、Android和项目经验。

Java技术

Java基础
  • 对抽象、继承、多态的理解
  • 泛型的作用及使用场景
  • 枚举的特点及使用场景
  • 线程sleep和wait的区别
  • JAVA反射机制
  • weak/soft/strong引用的区别
  • Object的hashCode()与equals()的区别和作用
集合类
  • JAVA常用集合类功能、区别和性能
  • 并发相关的集合类
  • 部分常用集合类的内部实现方式
多线程相关
  • Thread、Runnable、Callable、Futrue类关系与区别
  • JDK中默认提供了哪些线程池,有何区别
  • 线程同步有几种方式,分别阐述在项目中的用法
  • 在理解默认线程池的前提下,自己实现线程池
字符
  • String的不可变性
  • StringBuilder和StringBuffer的区别
  • 字符集的理解:Unicode、UTF-8、GB2312等
  • 正则表达式相关问题
注解
  • 注解的使用
  • 注解的级别及意义
  • 如何自定义注解

Android技术

Android基础
  • 四大组件的意义及使用,生命周期回调及意义
  • AsyncTask、Handler的使用
  • Android系统层次框架结构
  • AsyncTask的实现方式
  • AsyncTask使用的时候应该注意什么
  • Android常见的存储方式
  • Looper、Handler和MessageQueue的关系
  • Activity的启动流程(考察对Framwork的熟悉程度)
  • 多进程开发的注意事项(Application类区分进程,进程间内存不可见、进程间通讯方式)
Resource相关
  • .9图片的意义
  • style和theme的作用及用法
  • dpi、sp、px的区别以及转换关系
  • raw和assets文件夹的作用,二者有何区别
  • Android系统如何在多个资源文件夹下查找匹配最合适的资源
虚拟机
  • Java内存模型
  • Android虚拟机的特点
  • Dalvik和Art的区别
  • 熟悉垃圾回收的实现机制,了解虚拟机的GC类型
View相关
  • 常用组件的使用:ListView、RecyclerView及Adapter的使用
  • View之间的继承关系
  • Invalidate与postInvalidate的区别
  • 自定义View的实现方式(根据项目经验询问相关组件)。
  • onMeasure/onLayout/onDraw的作用
  • Paint、Matrix、Shader等绘制相关类的方法作用
  • 详细描述事件分发机制
动画
  • Android有哪些动画的实现方式
  • Interpolator类的意义和常用的Interpolator
  • ViewAnimation与属性动画有什么区别
  • 如何自定义ViewAnimation
  • 属性动画的实现原理
图片处理
  • 一般项目中如何加载大图
  • 图片压缩的方式
  • 如何不压缩图片加载高清图
  • 图片加载过程中,一般会使用缓存,这个缓存的主要作用是什么
  • 谈谈自己熟悉的图片加载框架

项目经验

开发工具
  • 代码管理工具:SVN、Git
  • 常用的调试工具:Hierarchy Viewer、DDMS等
  • CI工具:Lint检查,FindBugs、Jenkins
  • 内存分析工具:dumpsys、memoinfo、MAT
项目工程
  • APP更新策略:推送或者拉取?
  • 如何统一处理错误崩溃
  • 如何进行用户行为收集
  • 日志管理有哪些要点?(Debug包开放,release包关闭,错误日志反馈)
  • 打包方式Ant、Maven、Gradle
  • 机型适配情况
开放平台
  • 是否使用过第三方平台
  • 常用开放平台的熟悉度(微信、QQ、微博、支付宝等常用的支付和分享)
  • 是否进行过对第三方平台的统一封装?
  • 是否自己开发过SDK?
设计相关
  • 有哪些常用的设计模式、设计原则
  • 设计模式在Android源码中的应用
  • 设计模式在项目中的应用
  • 项目中的分包方式
  • MVC在android中的应用,利弊
  • android项目中的常见层次结构,包划分
  • 有没有设计过项目中的层级结构、包划分

好了,大概就这么多,大家可以考察下自己对于知识点的掌握情况。

对于答案,我觉得只要你真的会了,用自己的语言去描述就是最好的答案~ 不过为了让大家方便复习,我将耗时一年多整理的1025页的Android高级面试及答案解析分享给大家~

接下来重点来了!!!

高质的学习资料

如今入门Android的门槛已不像十年前那么高,学习资料随便百度一搜一大把,我们需要选择适合自己的、高质的学习资料来学习,否则会降低我们的效率。

我整理了各个科目的一些学习资料,并且自己手工制作了几幅思维导图,相信一定对你有帮助!

简信我「面试」即可获取该文章中所有的高清脑图!

计算机网络

计算机网络是开发中的重中之重,基本上是离不开网络这一块的,因为我们开发的应用要给客户用的,给客户都用就涉及到联网,联网就涉及到网络。

对于开发人员而言,应用层、传输层是最最重要的,网络层次之,其余作为了解,感兴趣可以深入学习。

我阅读过的书籍有三本:

  1. 《图解 TCP/IP》
  2. 《图解 HTTP》
  3. 《计算机网络:自顶向下》

前两本书用大量的图解让我们对整个网络世界进行宏观上的了解,第三本书会更加系统、全面地将每一层的知识点讲解透彻。

数据结构与算法

这一块是最最重要的,只要你是研发岗位,就逃不过这一关,但恰恰这是最难的一关,因为它的灵活多变,学习的难度自然会上升,但这也是被最多人忽略的一个领域。

Android七大核心知识

如果是从事 Android 开发,这部分就相当于我们的根基,这部分知识面有些广,重要的也很突出:

  • 架构师筑基必备技能:深入Java泛型 注解深入浅出 并发编程 数据传输与序列化 Java虚拟机原理 反射与类加载 动态代理 高效IO
  • Android高级UI与FrameWork源码:高级UI晋升 Framework内核解析 Android组件内核 数据持久化
  • 360°全方面性能调优:设计思想与代码质量优化 程序性能优化 开发效率优化
  • 解读开源框架设计思想:热修复设计 插件化框架解读 组件化框架设计 图片加载框架 网络访问框架设计 RXJava响应式编程框架设计 IOC架构设计 Android架构组件Jetpack
  • NDK模块开发:NDK基础知识体系 底层图片处理 音视频开发
  • 微信小程序:小程序介绍 UI开发 API操作 微信对接
  • Hybrid 开发与Flutter:Html5项目实战 Flutter进阶

上面这几个知识点是我在面试过程中被问到过次数最多的,如果需要系统的学习,针对这些知识点,我手头上准备了不少的电子书和笔记,将这些笔记将各个知识点进行了完美的总结。

Android开发相关源码精编解析

只要是程序员,不管是Java还是Android,如果不去阅读源码,只看API文档,那就只是停留于皮毛,这对我们知识体系的建立和完备以及实战技术的提升都是不利的。

真正最能锻炼能力的便是直接去阅读源码,不仅限于阅读各大系统源码,还包括各种优秀的开源库。

主要内含微信 MMKV 源码、AsyncTask 源码、Volley 源码、Retrofit源码、OkHttp 源码等等。

Android高级开发面试题及答案解析

面试的前一周时间内,就可以开始刷题冲刺了。请记住,刷题的时候,技术的优先,算法的看些基本的,比如排序等即可,而智力题,除非是校招,否则一般不怎么会问。

关于面试刷题,我个人也准备了一套系统的面试题,帮助你举一反三。

完全掌握以上这些不能够让你马上冲进大厂,但至少能够让你踏进中厂或者好的小厂,踏进大厂也只是时间问题!

总结

(1)准备一份好简历,格式一定要用 PDF,参考网上的模板不断优化自己的简历内容

(2)3月至5月是春招和金三银四的招聘时间,6月至8月是秋招提前批的黄金时间,9月至11月是秋招的大潮,一定要跟上!

(3)投递简历一定要内推,内推码和公司都在牛客网

(4)要有自己的一两个面试小技巧,可以在不断面试中总结出来

(5)心态要稳,要淡定,你总能成功的

英雄不问出处,总有一片属于你的天地,一定要试着坚持下去!

  • 羡慕那些年薪几十万的同学吗?羡慕。
  • 羡慕那些有大厂 Offer 的人吗?羡慕。
  • 羡慕那些已经找到自己热爱的岗位工作的人吗?羡慕。

切忌因此而焦躁不安,盲目的攀比只会让自己的眼光更狭隘,做好自己的职业规划非常重要,享受追逐梦想的过程吧,万一实现了梦想,你的下一站又是哪里呢?

最后再补充一句,不要妄自菲薄,但也不要眼高手低,我们都是普通人,比昨天的自己更进步一些就好了!

以上内容均免费分享给大家,需要完整版的朋友,点这里可以看到全部内容

0 人点赞