春招Android岗实习面试分享

前言

感觉时间过得很快,学期又过半了,红红火火的春招实习也基本拉下帷幕。 跟许多同学一样我也去尝试了,摸着石头过河磕磕碰碰,最终确定了大疆dji的offer,很感谢无论是在技术上还是面试经验上给过建议和帮助的大佬们。技术岗考核的标配是:笔试+2轮技术面+HR面,等待的过程挺煎熬的,因为你不清楚自己会在哪一轮被KO掉,所以还得边复习边等待结果。想说把面试经验总结分享一下,相信这种东西准备面试的同学已经司空见惯了(我是学Android方向的),欢迎探讨哈。

简历篇

简历制作技巧的作用不可忽视,毕竟很多大公司会筛选简历然后再给出笔试机会,要尽量在简历内容中体现出自己的优势和实力(比如说项目经验、掌握技能)。我做的第一份简历详细地叙述了一些项目细节,导致整体排版感觉密密麻麻,难以get points。后来在大佬指导下做了修改,只列举出了主要实现的功能和技术要点。技术岗的同学有个人博客可以附上博客地址。

关于简历制作技巧,最近班主任在课堂传授了一些干货(一原则九要点),下面跟大家分享一下:

  • 一原则是符合岗位需求

  • 要点1:黄金位置利用好(比如简历不止一页的,重要的信息最好放在第一页)

  • 要点2:不要无用信息(比如简历所付照片正常人能辨别出性别的,那么个人信息就可不添加‘性别’属性了)

  • 要点3:注重简历的诚实度和表达(假的东西就不要写啦,表达要简明扼要)

  • 要点4:版面布局要进行逻辑分类

  • 要点5:要冷冷的数字与细节,不要火热的抒情描述

  • 要点6:好简历=过程+结果(比如参赛担任的角色和主要的职责,最终有获奖的话也要写上)

  • 要点7:重要信息上下留白

  • 要点8:本专科简历,一般不超过1页

  • 要点9:法无定法,凸显特色

    面试Android岗需要具备的技能

Android是基于Linux的移动操作系统,面试Android开发岗,要掌握的知识除去Android本身的开发技能外,计算机相关基础学科也是考核的范畴。(有些要点后面附有参考链接,想了解相关知识的老铁可以点击进入)

计算机网络篇

面tx的时候面试官就问了很多网络安全传输细节,一起去的同学也反映网络知识问的挺多。下面列举一些常问的问题:

  • TCP/UDP的区别 (参考
  • TCP三次握手和四次挥手过程,为什么是三次握手,为什么要四次挥手而不是三次挥手就行?
  • TCP是如何做到拥塞控制的?(参考
  • 应用推送与服务器建立连接的方式有哪些,如何做到传输安全?(参考1/参考2
  • HTTPS建立连接的流程,证书有什么用,怎么解决中间人劫持攻击?(参考

操作系统篇

操作系统能帮我们更好地理解多线程编程的原理,主要问题还是集中在线程与进程的区别与联系(参考):

  • 线程与进程的区别
  • 进程的三种基本状态及其转换
  • 产生死锁的必要条件和预防死锁的方法
  • 银行家算法的数据结构、银行家算法算法流程、安全性算法的算法流程
  • 进程同步的生产者-消费者问题

数据结构和算法

算法工程师岗和c/c++开发工程师对算法要求会高些,移动端要掌握基本数据结构和算法(比如栈、队列、树、八大基本排序算法)。不过有一些公司对产品的效率要求比较高,像WPS的面试官一上来就搞个算法题让写代码思路(输入一字符串,要求排序输出其中的单词以及单词出现的次数。),我用hashmap实现的,完了他就把问题转向如何优化这个算法,结合着问Java集合类框架。

  • 基本排序算法(冒泡、插入、快排、归并、堆排)的伪代码和时间复杂度分析(参考
  • 单向链表和双向链表的结点增删操作
  • 栈和队列的区别和实现
  • 查找算法
  • 用贪心算法、动态规划思想解决实际问题
  • 二叉树递归遍历的三种方式,给出其中的两种遍历输出结果求第三种遍历输出结果

Java篇

Android开发有很大部分用到Java语言,所以熟练掌握Java知识是必不可少的。最基本的面向对象概念、主要类框架(如集合类、IO类)、多线程操作、GUI编程等都得掌握,基础扎实之后可以考虑看些进阶的书籍,比如《Java编程思想》、《effective Java》等。

  • 面向对象的三大特性及其理解,多态如何体现
  • Java集合类框架,Set、List、Queue的区别和应用场景(参考
  • Java类加载器(参考
  • 什么是线程安全
  • Java多线程实现方式
  • Java多线程同步方式
  • HashMap与Hashtable的区别,HashMap怎样实现线程安全、HashMap源码(参考
  • String、StringBuffer、StringBuilder的区别及各自应用场景
  • Java反射机制
  • JVM四大引用

设计模式以及项目篇

基础面过后,二面问得较多的是设计模式和项目相关的问题,面了几个公司都问到了设计模式,比如单例模式、观察者模式、MVP模式等,设计模式推荐《Head First设计模式》这本书。至于项目,主要问职责和技术要点(按简历上写的内容展开),实现过程中遇到过的困难,怎么分配工作,往外了说可能会让你想想优化方案,或者说重做一次项目的话自己会想优化哪些地方。

Android篇

主角终于闪亮登场啦,这是面试的重点区域, 考察内容也比较广泛,从四大组件到流行框架和封装库,都可能涉及,很多时候也是结合着项目来讲。

  • Android四大组件的理解
  • Activity的四种启动方式、Activity的生命周期
  • Handler事件分发机制(理清Handler、Looper、Message、MessageQueue之间的关系)(参考
  • 静态广播和动态广播的区别
  • 三层图片缓存加载机制
  • Activity与Service的通信方式
  • Android animation的几种方式(参考
  • 对象序列化相关知识
  • AsyncTask的机制、源码(参考
  • view的绘画机制
  • Android数据持久化技术
  • Android使用http协议访问网络的两个方式(HttpURLConnection、HttpClient)
  • 项目中使用过的第三方库
  • 内存泄漏、内存溢出的区别,内存泄露如何检测

准备篇

机会总是留给有准备的人。面试前最好得到网上搜一搜应聘岗位的面经,看看常问面试题。每次面试过后暴露出来的问题要及时解决,找博客或者书籍学习相关知识,做个总结,争取下次面试能较全面地回答同个问题。当然,有时间的话也可以了解一下应聘公司的文化和相关产品,聊到对公司了解的时候就有话谈,显得也更有诚意。

技术面通过之后会有个HR面,一般来说不会为难你的。可能会问家庭情况、兴趣爱好、职业规划、处事方法,大学最难忘的回忆或者是最骄傲的事情,为什么会选这个岗位and so on。

大概就讲到这啦,感谢阅读,欢迎指教。本人简书和GitHub —>(简书/GitHub

good luck!

文章目錄
  1. 1. 前言
  2. 2. 简历篇
  3. 3. 面试Android岗需要具备的技能
  4. 4. 计算机网络篇
  5. 5. 操作系统篇
  6. 6. 数据结构和算法
  7. 7. Java篇
  8. 8. 设计模式以及项目篇
  9. 9. Android篇
  10. 10. 准备篇
|