春招Android岗实习面试分享

《春招Android岗实习面试分享》 hello_bin.jpg

前言

感觉时间过得很快,学期又过半了,红红火火的春招实习也基本拉下帷幕。 跟许多同学一样我也去尝试了,摸着石头过河磕磕碰碰,最终确定了大疆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!

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注