Android技术知识Android进阶之路Android开发

互联网面试实习经验分享-开发岗

2019-04-10  本文已影响7人  cff70524f5cf

最近各大互联网的暑期实习招聘开始了,身边的小伙伴们也都忙碌了起来。整理了一些 开发类面试经验,分享给需要的同学。

image

我先做个简单的自我介绍。晓晓,研二在读,大三学年末开始接触Android开发,前后共在美团、头条等公司实习18个月左右。有过6-8次面试经历,包括百度、网易、keep等,有些通过有些失败,在这里分享一些开发类面试通用型问题,并不只针对于Android开发。

我将分为 面试前准备面试中发挥面试后总结三个部分,分享我的经验。因为我也是一只小白,不能保证说的都对,请大家参考后自行判断。

面试前准备

找工作的第一步关卡就是简历筛选,一份简洁清爽又重点突出的简历可以增加我们的竞争力。面试过程中,面试官也大多会参考简历内容进行提问。之前帮忙收过一些简历,对于开发类简历的准备,有如下几个建议:

不管经历过几次面试,好像都还是会感觉非常紧张。可以在面试前嚼一块口香糖,据说咀嚼的动作可以让人感到放松,还可以保持口气清新。提前1-2天查好交通路线,最好提前15分钟左右到达面试现场(携带2-3份纸质版简历最佳),适应一下环境。把手机调至静音后,稳住心神等待面试官的到来。

面试中发挥

我仔细研究了以前的面试记录,结合实习的经验,整理了一些提问率较高的技术型问题供大家参考。由于篇幅有限,且不能保证答案完全正确,下面只列举了问题,有需要参考答案的加群 Android IOC架构设计,我可以分享完整版。

计算机网络

  1. 计算机网络协议有几层?自底向上分别为什么(画图)?HTTP/UDP/TCP/IP协议分别在哪一层?

  2. TCP/IP三次挥手的过程(画图)?四次挥手的过程(画图)?为什么握手要3次?为什么挥手要4次?为什么挥手完成后要等待2MSL才能释放TCP连接?

  3. HTTP请求报文和响应报文的格式是什么?GET与POST方法的区别是什么?

  4. HTTP响应报文中各种状态码的含义,如404、502、302等?

算法与数据结构

  1. 写一个你最熟悉的排序算法,它的时间复杂度为多少?(最好别写太简单的,建议熟记快速排序)

  2. 经典递归问题的非递归算法。[图片上传失败...(image-b01284-1554889106348)]

    听起来有点绕,不过确实很多时候面试官会直接要求 非递归算法,如汉诺塔问题、斐波那契数列、二叉树遍历等问题的非递归算法。

  3. 二叉树的前、中、后序遍历,层序遍历算法。

  4. 栈与队列的区别。

  5. 如何判断一个链表里有环?

  6. 有一次笔试选择题还问到了小根堆。

另外建议在面试前,刷一些Leetcode的题目,至少每天2道找手感。有几次面试撞到了刷过的easy题目诶,心情就像是中了大奖。(希望大家也能中奖!)

操作系统

  1. 进程与线程的区别是什么?

  2. 进程的五种状态,画图表示。

  3. 进程间通信的方式有哪些。(复制粘贴竟然也算一种诶)

  4. 进程的内存分布图。(画图)

  5. 死锁要满足几个条件?分别是什么?

  6. 堆和栈的区别是什么。

数据库

  1. 主键的概念、特性。

  2. 简单的查询、删除语句。

  3. left join、right join和inner join。(问的不多)

  4. 事务是什么,四大特性都是什么?

Git

  1. 基本的Git操作。

  2. git rebase和git merge的区别?

  3. git fetch和git merge的区别?

Java类(非Java类编程可跳)

  1. 泛型,类型擦除可以了解一下。

  2. 接口与抽象类的区别。

  3. String a = "abc"; 和 String b = new String("abc")的区别。

  4. Java中有几种基本数据类型?各占几字节?

  5. ArrayList和LinkedList的区别,如何选择?比如对于add操作或get操作,选择哪一个结构时间复杂度最低?

  6. 访问权限有哪几种?

  7. 执行顺序类,读代码题目。(写出几条语句的打印顺序。)

Android类(非Android开发可跳)

  1. Activity的完整生命周期?(画图)扩展:Activity A启动Activity B时,分别触发了A和B的哪些生命周期?

  2. Activity的四种其中模式,简单介绍。

  3. 数据持久化方案有哪些?SharedPreferences会带来性能问题吗?

  4. Android有几种动画?哪种动画真正改变了View的属性?

  5. dp与sp的区别是什么?dp与px的区别是什么?

  6. 如何写一个高效的单例模式?(手写代码)

  7. Handler有什么用?子线程里面能创建Handler吗? Handler的消息传递机制建议重点复习。

  8. 布局方式有哪些?LinearLayout和RelativeLayout哪个效率更高?了解一下ConstraintLayout。

  9. 没用过kotlin的话,可以了解一下。

其他

  1. 对于新技术有什么研究?平时关注吗?

最好关注下自己领域的新技术,可以体现你的求知欲强、学习能力强等若干优点。

  1. 遇到过最难的问题是什么?

    这道题经常会被问到,猜测面试官主要想了解一下我们的抗压能力和解决问题能力。建议选择一个中上等难度的问题,并且结局一定是解决了它,或至少提出了可行的解决方案。

  2. 学的最好的一门课是什么?

    这道题我觉得面试官是在给机会,我们说出自己比较擅长的方向。面试官向这个方向提问,有助于我们的发挥。可以仔细想想自己学的最好的一门课。

  3. 代码风格如何保障?

比如可以同学们之间互相review代码,了解常用的命名规范等。

  1. 你还有什么想问的吗?(2-3个问题为宜,不问会减分!)

a. 如果有幸加入这个部门,请问我的工作职责大概是怎样的?

b. 刚才有一个xxx的题目,请问您能给我讲讲吗?

c. 部门大概有多少人?如果我加入的话,会有人带吗?

面试中遇到自己不会的问题很正常,

一定要稳住!

我能想到的有三个级别的解决方案。

面试后总结

经历了两轮、三轮甚至四五轮面试之后,我知道大家都很累。但是!先别松懈下来,赶快把刚刚的所有问题记录下来!这是非常重要,却很容易被忽略的一步。可以等自己休息充分了,再专心去查阅答案,最好把问题分类归纳。不要等到第二天再去回忆问题,你会发现忘记了好大一部分!这一步一定一定要认真做,一个问题一次答不上来可以,跌倒两次绝对不能原谅!

最后在文末放上我自己整理出来的一份更详细的面试资料和关于安卓学习的思维导图提供给大家参考下,毕竟学习还是需要一个准确的方向的,才能使学习更有成效。

领取方式:

点赞+加群免费获取 Android IOC架构设计

image image image
上一篇 下一篇

猜你喜欢

热点阅读