Android开发如何准备技术面试(含Android面试押题)

今年毋庸置疑是找工做的寒冬,每个出来找工做的同窗都是值得尊敬的。如今找工做,虽然略难,可是反过来看也会逼迫咱们成为更加优秀的本身。面试

可是无论是旺季仍是寒冬,有一些优秀的同窗找工做仍是挺顺利的。因此说仍是得提升咱们本身的硬实力。算法

本文主要解答这些问题,若是说你想知道如下几点,就能够看下去了sql

  • 当下好找工做嘛
  • 如何写简历
  • 如何挑选靠谱的公司
  • 个人经验水平能拿多少的工资
  • 问到项目中的技术难点怎么回答
  • 2021年Android面试押题
  • 如何和 HR 聊天,好比谈钱等等

1、当下好找工做嘛

想必你们如今常常能看到某某公司又裁人了,会担忧是否是找不到工做了。其实总的来讲虽然当下的环境确实不怎么好,可是有裁人的公司,也确定有招人的公司,而且招人的公司必定比裁人的公司多得多。设计模式

那么再来回答这个问题「当下好很差找工做」。对于技术好的人来讲,永远不会担忧这个问题。可是对于技术不那么好的人来讲,确实须要一些技巧才能比别人有更多的机会。好比说写一封清晰明了的简历,在面试前好好准备等等。数组

总的来讲,机会是留给有准备的人。不管环境好与差,认真准备的你确定会比别人有更多的机会。缓存

2、如何写简历

平时有在作修改简历的收费服务,在公司里也会当个面试官啥的,总的来讲也算看过不少简历了。可是大部分人的简历的套路都是同样的,项目用了什么技术栈,作了什么功能,总的来讲就是流水帐。安全

那么一旦你写出有别于这类套路的简历,你的简历必然会被用人方多看几眼,增长点成功率也是必然的。性能优化

通常来讲我会这样建议别人写简历:网络

  • 全文杜绝任何的精通字眼,若是你真的精通,不须要投简历找工做了。
  • 简历控制在两页左右,不须要找什么简历模板,直接 Markdown 生成 PDF 文件,面试官不在乎你的简历有多好看,他更在乎的是你的简历内容。
  • 任何英文单词注意大小写,数字以及英文注意与中文之间有空格。
  • 项目中无需介绍这个项目到底有啥功能,单刀直入这个项目中最值得说的内容。好比遇到的 Bug,本身的思考等等。可是可能不少人会说,业务很简单没什么好说的或者压根没遇到什么问题。遇到这个问题的时候,首先跳脱出业务的框架,去思考其余的问题。相信每一个人都写过组件,可是对于如何设计一个好的组件来讲就不是每一个人都能作的事情了。
  • 写项目经验最好按照这样的思路:遇到了什么问题,如何解决以及结果。
  • 假设简历上的每一个技术点面试官都会问到,斟酌全部的知识点,保证都能回答。

3、如何挑选靠谱的公司

一家靠谱的公司,必定是如下几点加起来的:牛逼的核心管理层、不错的 idea、高额的融资、有前景的行业。数据结构

前两点对于求职者来讲基本是黑盒,所以咱们只能从后面两点来挑选公司了。

早期的融资越高,领投的公司越牛逼,那么这家公司靠谱的概率越大。由于这些公司的决策人都不是傻子,人家确定有充足的理由才会选择相信并投钱给这家公司。

另一个有前景的行业也是必须条件,若是你不知道啥是有前景的行业,就从与人息息相关的行业挑选吧。好比吃、住、行、教育等等。

这时候你可能会说,那我若是了解到一家公司的这些状况呢?那么「天眼查」能够完美解决你这个问题。咱们能够经过这个网站详细了解到一家公司的融资、行业、竞品、法律风险、管理层、产品等等信息。

4、个人经验水平能拿多少的工资

对于这个问题,我真的很想说多少经验真的和多少工资没多大关系。

相同的一年经验,有人只能拿 10K,可是有人却能拿到 20K,缘由就在于两我的的技术能力不同。

你技术好,就能比别人多要工资;你技术通常,就只能拿少点的工资,这是一个很现实的问题。因此工资只与技术挂钩,而不是你所谓的经验。

若是只是想了解行业平均薪水,直接去看当地的企业给出的工资是多少就行了。若是以为本身薪水不符合行业平均薪水,就勇敢的跳槽呗。

5、问到项目中的技术难点怎么回答

对于这个问题来讲,面试官考察的就是你的学习能力以及解决问题的能力。

不少人遇到这个问题会很懵逼,感受基本啥问题都谷歌解决了。固然若是你真的有遇到不是立刻能经过谷歌解决的问题即是极好的,按照描述问题、如何解决问题、结果这几个步骤来回答就好了。

那么若是你以为你的项目真的很简单,没有什么可说的话,就按照如下的几个思路来聊这个话题。好比说你以前从没接触过某个技术,你是如何去学习这个技术的,在学习的过程当中遇到了什么问题,怎么解决的。好比说你写了这个项目,本身有了什么感悟、想法。

由于这道题目面试官不是说必定要听你讲出项目里到底遇到了什么难的问题,而是考察你的学习能力以及解决问题的能力。即便你没有什么干货能够说,说点本身的学习过程、挫折、想法感悟也是能够的,毕竟总比说感受都很简单来的好。

6、2021年Android面试押题

Java相关

1.容器(HashMap、HashSet、LinkedList、ArrayList、数组等)

2.内存模型

3.垃圾回收算法(JVM)

4.垃圾回收机制和调用 System.gc()的区别?

5.类加载过程(须要多看看,重在理解,对于热修复和插件化比较重要)

6.反射

7.多线程和线程池

8.设计模式(六大基本原则、项目中经常使用的设计模式、手写单例等)

9.Java 四大引用

10.Java 的泛型

11.final、finally、finalize 的区别

12.接口、抽象类的区别

(Java相关答案地址)

Android 相关

1.自定义 View

2.事件拦截分发

3.解决过的一些性能问题,在项目中的实际运用

4.性能优化工具

5.性能优化 (讲讲你本身项目中作过的性能优化)

6.Http[s]请求慢的解决办法(DNS、携带数据、直接访问 IP)

7.缓存本身如何实现(LRUCache 原理)

8.图形图像相关:OpenGL ES 管线流程、EGL 的认识、Shader 相关

9.SurfaceView、TextureView、GLSurfaceView 区别及使用场景

10.动画、差值器、估值器(Android中的View动画和属性动画 - 简书、Android 动画 介绍与使用)

11.MVC、MVP、MVVM

12.Handler、ThreadLocal、AsyncTask、IntentService 原理及应用

13.Gradle(Groovy 语法、Gradle 插件开发基础)

14.热修复、插件化

15.组件化架构思路

16.系统打包流程

17.Android 有哪些存储数据的方式。

18.SharedPrefrence 源码和问题点;

20.sqlite 相关

21.如何判断一个 APP 在前台仍是后台?

22.AMS 、PMS

23.Activity 启动流程,App 启动流程

24.Binder 机制(IPC、AIDL 的使用)

25.为何使用 Parcelable,好处是什么?

26.Android 图像显示相关流程,Vsync 信号等

(Android相关答案地址)

源码理解

  • Glide :加载、缓存、LRU 算法 (如何本身设计一个大图加载框架) (LRUCache 原理)
  • EventBus
  • LeakCanary
  • ARouter
  • 插件化(不一样插件化机制原理与流派,优缺点。局限性)
  • 热修复
  • RXJava (RxJava 的线程切换原理)
  • Retrofit (Retrofit 在 OkHttp 上作了哪些封装?动态代理和静态代理的区别,是怎么实现的)
  • OkHttp

(源码相关答案地址)

算法与数据结构

  • 时间复杂度 / 空间复杂度
  • 经常使用的排序算法有哪些?
  • 字符串反转
  • 链表反转(头插法)
  • 如何查找第一个只出现一次的字符(Hash查找)
  • 如何查找两个子视图的共同父视图?
  • 无序数组中的中位数(快排思想)
  • 如何给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。
  • 二叉树前序、中序、后序遍历
  • 最大 K 问题
  • 广度、深度优先搜索算法
  • String 转 int。核心算法就三行代码,不过临界条件不少,除了判空,还须要注意负数、Integer 的最大最小值边界等;
  • 如何判断一个单链表有环?
  • 100 亿个单词,找出出现频率最高的单词。要求几种方案;
  • 链表每 k 位逆序;
  • 镜像二叉树;
  • 找出一个无序数组中出现超过一半次数的数字;
  • 计算二叉树的最大深度,要求非递归算法。
  • String 方式计算加法。

(算法与数据结构相关答案地址)

网络

1.网络框架对比和源码分析

  1. 网络七层协议有哪些?
  2. Http 和 Https 的区别?Https为何更加安全?
  3. HTTPS的链接创建流程
  4. 解释一下 三次握手 和 四次挥手
  5. TCP 和 UDP的区别
  6. Cookie和Session
  7. DNS是什么?
  8. DNS解析过程

10.HTTP报文结构

11.HTTP与HTTPS的区别以及如何实现安全性

12.如何验证证书的合法性?

13.https中哪里用了对称加密,哪里用了非对称加密,对加密算法(如RSA)等是否有了解?

14.client如何肯定本身发送的消息被server收到?

15.谈谈你对WebSocket的理解

16.WebSocket与socket的区别

17.谈谈你对安卓签名的理解。

18.请解释安卓为啥要加签名机制?

19.视频加密传输

20.App 是如何沙箱化,为何要这么作?

21.权限管理系统(底层的权限是如何进行 grant 的)?

(网络相关答案地址)

Kotlin 相关

1.从原理分析Kotlin的延迟初始化: lateinit var和by lazy

2.使用Kotlin Reified 让泛型更简单安全

3.Kotlin里的Extension Functions实现原理分析

4.Kotlin系列之顶层函数和属性

5.Kotlin 兼容 Java 遇到的最大的 “坑”

6.Kotlin 的协程用力瞥一眼

7.Kotlin 协程「挂起」的本质

8.到底什么是「非阻塞式」挂起?协程真的更轻量级吗?

9.资源混淆是如何影响到Kotlin协程的

10.Kotlin Coroutines(协程) 彻底解析

11.破解 Kotlin 协程

(Kotlin相关答案地址)

Flutter相关

1.Flutter 原理与实践

2.揭秘 Flutter Hot Reload(原理篇)

3.Flutter 动态化探索

4.Flutter 如何和 Native 通讯-Android 视角

5.深刻理解 Flutter Platform Channel

6.Flutter Engine 编译指北

7.深刻理解 Flutter 多线程

8.Flutter 状态管理 - 初探与总结

9.Flutter | 状态管理指南篇——Provider

10.深刻理解Flutter应用启动

11.Flutter渲染机制—UI线程

(Flutter相关答案地址)

7、如何和 HR 聊天,好比谈钱等等

首先你面到 HR 了,说明你基本已经成为备选人之一了。这时候 HR 会和你聊不少问题,这些问题都是为了了解你的一些我的状况的。好比说性格啦、反应能力、情商等等。另外大部分公司的 HR 并无一票否决权,面试没有成功多半是有更好的备选人而不是由于 HR 把你卡掉了。

而后说到谈钱的一个问题。首先以最少的工资招到须要的人确定是 HR 的考核之一,因此压价是很正常的一个事情。而且上家公司的薪资也是一个很重要的参考,通常来讲涨薪幅度在 30% 以上是很牛逼的事情了,一般都在 20% 左右。

你的开价通常就是 offer 的上限了,考虑到压价的状况,你能够在本来指望薪水上上浮 1K 左右,而后能够根据面试的状况来有选择性的开价。

  • 面的不错,原本想要 16K 的,那么就多要个 1-2K 没啥问题
  • 面的通常,那就报 16 K 吧
  • 面的通常或者不大好,可是又很想进这家公司,能够酌情降低 1-2K,这个主要仍是看本身
  • 不怎么想去这家公司,随意开价

8、结语

我一直以为技术面试不是考试,考前背背题,发给你一张考卷,答完交卷等通知。

首先,技术面试是一个 认识本身 的过程,知道本身和外面世界的差距。

更重要的是,技术面试是一个双向了解的过程,要让对方发现你的闪光点,同时也要 试图去找到对方的闪光点,由于他之后可能就是你的同事或者领导,因此,面试官问你有什么问题的时候,不要说没有了,要去试图了解他的工做内容、了解这个团队的氛围。

找工做无非就是看三点:和什么人、作什么事、给多少钱,要给这三者在本身的内心划分一个比例。

相关文章
相关标签/搜索