Android 面试问题集合

从年初到现在公司一直在招人,面试也有几十个人。这篇文章总结下我面试一般会问的问题。
一般我会提前拿到简历,会根据简历的整理出对应的问题,如果能下载到对应开发的 APP,会下载过来,且试用一段时间,有时候会反编译看一下。

非技术问题

这块一般是考察面试者的沟通能力,稳定性,全面性。

  • 在公司除了完成业务需求还会做什么?
    会负责项目优化,内存优化,技术调研,参与设计产品讨论等

  • 如何进行项目优化,内存优化,最近做的一个 APP 多大,一般占用多少内存?问题根据前面的回答提出。
    利于各种工具优化,这里的回答大部分都不一样,很多人连最近的 APP 有多少兆大小,内存通常占用多少都不知道,如果不知道这些怎么优化?又如何知道优化了?优化都是有对比的,数据说话

  • 平常怎么打包,会有自动化打包吗?
    这个有的人用过,有的没用过,用过的一般会问怎么搭建,讲一下这个流程(我是用的 Jenkins)

  • 代码管理?
    一般 git 居多,常用命令,分支管理,rebase、merge 区别

  • 日常提高开发、工作效率的方法/工具
    抓包,debug,Android Studio自带的一些工具,番茄工作法,开发前先设计好(很多人开发的时候都是直接敲代码或者画 UI)等

这块暂时想到了这些,后面想到了再补充。

技术问题

我主要是面这个,因为其他方面一般 HR 和后面第二轮技术面试会主要考察,我还是需要看一下专业技术怎么样的,一般Java、Kotlin、Android、设计模式、思想,架构设计上都会问一些。

  • 聊一聊集合
    常用集合的数据结构,优缺点,然后会拿出一个具体的集合类聊一下原理

  • 线程
    一般问了集合就不问线程了,两个挑一个问,多线程,线程状态,线程安全,锁...

  • 聊一聊 Android 的一些坑,设计不足的地方
    版本适配,WebView,厂商适配,推送,地图等等,主要可以看出一个人的经验,和解决问题的能力

  • 组件化/模块化的思路
    这个一般很多人的答的出来,但我会举一些实际列子,比如 支付模块 你如何去设计这模块

  • 聊一聊 Kotlin
    目前我们项目是采用 Kotlin 开发,如果面试者有 Kotlin 经验会聊多一点,为什么使用 Kotlin,异常机制,Kotlin 做架构设计有什么好处,包括一些基础的关键字用法 let,by lazy...一般随意拿出一两个问一下

  • 聊一聊设计模式
    常用设计模式,根据简历写的随便找一个第三方 SDK,聊一聊这个 SDK 采用到了什么设计模式,或者核心的设计模式

  • OOP,AOP等思想
    越是基础的越重要,思想好,写的代码效率好,质量高,易维护

  • MVP,MVC,MVVM架构模式(根据简历问)
    架构模式带来的好处,分这几层各自负责什么,举一个实例说明。比如登录功能如何设计

以下的问题大部分会对应聘初中级提出

  • 不用第三方,写一个网络请求,核心类,注意点,断点下载如何实现?
    URLConnectionHttpURLConnection,RandomAccessFile相关知识点自行百度

  • activity的启动模式有哪些?是什么含义?

  • activity在屏幕旋转时的生命周期?

  • Handler 机制

  • Activity 启动过程,设计到哪几个核心类

  • APP 启动过程

  • 自定义控件

  • 事件分发

  • 国际化,如果做过需要注意什么,各版本差异

  • 基础算法快速排序,冒泡等

  • 单元测试,自动化测试了解过吗?

  • 精度丢失遇到过吗?如何避免

小结

一般面试都会根据简历来的,以上是目前能想到之前问过的问题,应该还有不少遗漏。后面慢慢补充。

广告

我司还正在火热招人包含但不限于 Android,另外有Go,Java,iOS,产品,测试等在招聘,可内推欢迎来稿~

你可能感兴趣的:(Android 面试问题集合)