Advertisement

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

阅读量:

今年不言而喻是觅工作的严冬。
每个出海觅工作的同学都值得称道。
虽有一定难度 但反观则能促使我们不断超越自我。

但是无论是旺季还是寒冬期,一些优秀的同学找工作都比较容易。所以说还是要提高自己的硬实力。

本文主要解答这些问题,如果说你想知道以下几点,就可以看下去了

  • 现在找工作的难度如何?
  • 撰写个人简历时需要注意哪些要点?
  • 评估企业可靠性时应考虑哪些因素?
  • 根据经验程度估算薪资水平?
  • 遇到技术难题时应该如何有效沟通与解答?
  • 针对2021年Android开发岗位的面试重点题型有哪些?
  • 与HR沟通时应关注哪些关键点(如薪资谈判)?

一、当下好找工作嘛

必不可少的是大家总能见到某公司裁员的消息。人们自然会担心找不到工作的情况。实际上尽管目前的整体环境较为严峻但只要存在裁员行为必然也会伴随招聘岗位出现而且招聘岗位的企业数量必定远超裁员企业数量。

那么我们再来看看「当下找工作的难易程度」这个问题。对技术过硬的人来说,这个话题对他们来说毫无压力。而对于技术稍欠佳的人而言,则需要一些策略来提升自己的竞争力。比如撰写一份条理清晰、重点突出的简历,在面试前充分准备一份精炼的自我介绍材料等。

总体而言而言而言

二、如何写简历

经常参与免费简历修改服务的同时担任过面试官等角色,在公司里大致了解过许多份简历的情况。然而大多数人的简历呈现出相似的模式——项目采用了哪些技术框架、开发了哪些核心功能模块、基本上都是零散的工作内容。

一旦你尝试制作一份不落于这类模式的简历,你的简历可能会被用人方给予更多关注,并提高获得高薪工作的概率.

一般来说我会这样建议别人写简历:

全文杜绝任何的精通字眼,如果你真的精通,不需要投简历找工作了。

确保您的简历不超过两页,并无需依赖模板即可通过Markdown轻松生成PDF文件。面试官认为不太在意你的简历有多美观,并且更加关注内容质量。

任何英文单词注意大小写,数字以及英文注意与中文之间有空格。

在介绍项目的具体内容之前,请直接深入探讨该项目的核心内容。例如,在某些实例中(如特定的问题或挑战),分享个人的思考过程可能会更有意义。然而,在大多数情况下(尤其是在较为基础的内容方面),人们通常会觉得事情太过简单而无需过多阐述。当遇到类似问题时,请先脱离业务层面进行分析与反思——毕竟,在软件开发领域中(如组件开发),我们大多数人都是熟悉这些基础概念的;但对于如何设计出一个真正优秀的组件而言,则并非一件简单易行的事情)。

写项目经验最好按照这样的思路:遇到了什么问题,如何解决以及结果。

为了确保简历上所有技术点都被面试官询问到,并且无一例外地被解答

三、如何挑选靠谱的公司

一家可靠的公司往往具备以下要素:强大的领导团队、创新且可行的理念、充足的资本支持以及所处行业的持续发展潜力。

前两点对于求职者来说基本上是一个黑盒,在选择公司时我们只能依据后面两点来进行评估

早期的前期投资规模越大,则由其领投的公司越强,这家公司的可靠性越大.毕竟这些公司的决策者并非等闲之辈,在做出这样的选择时必定有自己的充分理由.

另一个发展迅速的产业同样是必要前提;如果你不知道什么产业是发展的,则可以从与人类紧密相关的产业中选择。比如饮食(吃)、住宿(住)、交通(行)以及教育等。

假如你说你想要掌握一家公司相关信息的话

四、我的经验水平能拿多少的工资

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

同一段专业经验的人中,有些人仅能赚取10,000元一年的收入水平,在工作能力上存在显著差异的现象下

如果你的技术更好,则有可能获得更高的薪资待遇;如果技术水平一般,则可能只能获得较少的薪资。这是一个不容忽视的问题。因此可以得出结论:决定薪酬水平的主要因素是技术水平而非所谓的'工作经验'。

想要快速掌握行业薪资水平的朋友不妨直接查询当地的工资水平数据。如果你发现自己的收入低于行业平均水平,请果断采取行动。

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

对于这个难题来说,面试官考察的就是你的学习能力和解决难题的技能。

很多人面对这个问题往往感到困惑不安,并误以为所有的问题都可以轻易地通过谷歌得到解答。然而地讲如果一个人真的遇到了无法立即通过谷歌解决的问题那确实是个幸运的事。在这种情况下建议可以按照描述问题分析解决方案以及总结结果这三个步骤来进行解答

如果你认为你的项目非常简单、无需多言,则可按照以下几点探讨此事。比如你之前从未接触过某个技术,则可能是如何学习这一技术的过程,在学习过程中遇到了哪些问题以及是如何解决这些问题的。比如你完成了这个项目,则是在完成该项目的过程中有何感悟与思考。

因为这道题目中, 面试官并不是要求你详细描述项目中的具体困难问题; 而是侧重于评估你的学习能力和解决问题的能力. 即使你没有太多经验可以说, 在分享自己的学习经历, 遇到的困难以及所获得的想法和感悟时也是可行的. 毕竟比起仅仅谈论感觉简单得多.

六、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 区别及使用场景

  1. animation, delta tool, assess tool (Android中使用View的动画及其属性 - Simplified Chinese Wikipedia, animation introduction and usage in 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(在OkHttp上实现了哪些功能包?动态代理与静态代理有何区别及其实现原理)

OkHttp

(源码相关答案地址)

算法与数据结构

时间复杂度 / 空间复杂度

常用的排序算法有哪些?

字符串反转

链表反转(头插法)

如何查找第一个只出现一次的字符(Hash查找)

如何查找两个子视图的共同父视图?

无序数组中的中位数(快排思想)

如何给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。

二叉树前序、中序、后序遍历

最大 K 问题

广度、深度优先搜索算法

将 String 类型转换为整数值。该核心算法仅由三行代码实现。然而,在实际应用中会遇到多个边界情况:首先需进行判空操作;其次还需注意负数值以及 Integer 类型的最大值和最小值之间的边界情况。

如何判断一个单链表有环?

100 亿个单词,找出出现频率最高的单词。要求几种方案;

链表每 k 位逆序;

镜像二叉树;

找出一个无序数组中出现超过一半次数的数字;

计算二叉树的最大深度,要求非递归算法。

String 方式计算加法。

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

网络

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

网络七层协议有哪些?

Http 和 Https 的区别?Https为什么更加安全?

HTTPS的连接建立流程

解释一下 三次握手 和 四次挥手

TCP 和 UDP的区别

Cookie和Session

DNS是什么?

DNS解析过程

10.HTTP报文结构

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

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

13.在HTTPS协议中使用了哪些地方进行了对称加密,在哪些地方采用了非对称加密?您了解关于相关的加密技术吗?

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相关答案地址)

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

当你遇到HR时请说明你已经成为了候选人之一这时候HR会与你讨论一些具体问题这些内容是为了了解你的若干重要个人因素例如性格反应能力和情商等此外大多数公司都没有最终否决权面试未成功通常是因为有其他更好的候选人被筛选掉了而不是因为HR将其排除了

然后在谈到薪资问题时指出,在招聘所需人员时采取最低薪资标准是HR考核的重要内容之一。压价自然成为常见的做法,并且同时上家公司的薪资水平也是评估的重要依据。一般来说员工涨幅超过30%被认为是不寻常的事件;通常情况下员工涨幅多在20%上下浮动。

通常情况下来说,在求职过程中,你的开价一般不会低于offer的价格上限。为了应对可能的降价策略,在确定最终薪资期望时,请考虑比现有预期薪资增加约1千元左右,并结合面试结果决定具体的报价策略。

  • 面的不错哦!原本打算拿16K的工资呢,在稍微再加点(比如1-2K)也没关系。
    • 面的一般水平吧!那我就推荐你投奔他们家工作吧。
    • 面的一般或者稍微差一点的话呢?不过你又特别想加入这家公司的话,在工资上我可以适当给你降点价(比如1-2K),这个主要取决于你自己啦。
    • 不介意的话别考虑加入我们了吧!你可以自己开个价。

八、结语

我觉得技术面试不像正式考试;每次考前都会复习一些题目;考试时会发给你一套试题;完成作答后提交试卷并等待结果。

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

更关键的是,在进行技术面试时应该注重相互理解这一过程。这不仅有助于你展现自己的优势能力还能帮助你更好地认识对方的特点与价值所在。在与考官互动的过程中你可以通过展示个人专长来吸引他们的关注同时也可以主动挖掘他们潜在的优势因为未来你们可能成为同事或领导关系的一部分因此在面对考官的问题时请主动询问并深入探讨他的工作职责以及团队的整体氛围

找工作的本质即在于关注三个方面:一是与什么样的人共事;二是从事什么样的工作;三是获得多少报酬。要在一个合理的范围内将这三个要素进行权衡分配。

全部评论 (0)

还没有任何评论哟~