安卓工程师:秋招21家公司的面试真题总结
之前一直混迹于牛客,现在也反馈一波给牛油们。下面是秋招的面试经历具体内容。
拼多多 学霸提前批Android研发工程师 offer
笔试
基于给定接口实现ImageLoader框架
一面
自我介绍
静态变量和实例变量的区别
重写equals()方法的注意事项;两个list是怎么判断是否相等的?
HashTable和HashMap的区别;是否允许键为null
数据同步的方法;synchronized可以在对象上加锁吗?在方法上加锁是加在哪个对象上?
进程间读写文件的同步方式
了解哪些加密算法;AES和RSA的区别
HTTP响应码
进程优先级;Android进程优先级
如何使一个Service处于另一个进程中;进程的服务保活
Touch事件分发机制
如何实现客户端长连接的?重试策略是怎样的?如何监控HTTP请求的?
提问问题
二面
三道题选两道
大顶堆和栈的概念
最短路径算法概念
如何缓存HTTP
HR面
也不能算是HR面吧,简单聊了聊。
项目介绍;担任的角色
家庭情况;期望薪资
在哪里实习?实习的时候拿到过哪些offer
介绍了拼多多的待遇以及工作制度
三面
自我介绍;项目问了些
如果安卓是单线程的,那么如何处理界面刷新和网络操作两个模块
算法题。
CVTE TE计划 Android开发工程师 HR面挂
一面 电面
自我介绍
Activity的launchMode,每种的概念;singleInstance用在什么情形
转动屏幕时会发生什么?如果有一个进度条,转动屏幕时会发生什么?如何是自定义的进度条,怎么办?
Thread和HandleThread有什么区别;MessageQueue的结构
进程和线程的区别;Android的多进程通信方式;aidl是怎么使用的
多线程的问题。每个线程一个单例,怎么做?ThreadLocal怎么用的?
浏览器输入www.google.com之后用到的协议;NAT是怎样的?
内存泄漏的情况;Handler泄漏的具体场景,如何避免;GC的过程;强软弱虚引用
如何复用View;ViewHolder是如何使用的;ListView是如何复用View的
事件分发机制;dispatchTouchEvent和onTouchEvent的区别;
了解过哪些开源框架;OkHttp和HttpURLConnection的区别
职业规划
二面 视频面
自我介绍
长连接如何实现的;TCP粘包怎么处理的;协议改进的方法;MINA、Netyy框架
OkHttp的源码,拦截器一块的源码;有没有自己实现拦截器;OkHttp这样设计的好处;Volley缓存一块的设计;UIL如何管理请求的;
Android的性能优化;
为什么有滑动冲突;怎么处理;涉及的主要方法有哪些;dispatchTouchEvent、onInterceptTouchEvent和onTouchEvent分别用在什么地方
Binder的机制;aidl;服务端如何确定调用的是哪个方法;Binder线程池,线程安全指什么;
RxAndroid用在哪里;用到了哪些操作符;map和flatMap的区别
项目中用到了哪些设计模式;模板方法是怎么使用的
手写代码,实现一个数据结构:栈,考虑扩容,加入线程同步。
写过博客吗?主要内容是哪块;参与过开源项目吗?
了解过Android的最新动态吗?有没有用Kotlin做过项目;如何学习一门新语言
了解过CVTE吗?以后的职业规划
终面HR QQ视频面
面了两次CVTE的hr面,总结了会问的问题。如下:
前面的面试如何,打个分
职业规划;工作时间
家庭情况;性格都是怎样的,对你的性格有什么影响
如果CVTE给你offer了,如果不会来,会是什么原因
目前拿到了哪些公司的offer?CVTE也给你offer了,你会选哪;还会在投其他公司吗
宿舍关系怎么样?人生中压力最大的事情
HR面又挂了,实习的时候也是HR挂了,让我不得不怀疑我是不是心理有问题了,哈哈。
远景能源 offer
由于实习的时候拿到了实习offer,所以走的绿卡流程。在上海实习的,就直接去公司面试的。
一面技术
自我介绍
说了下?做的是什么?
使用的UI自动化测试框架的原理是怎么样的?讨论了下iOS是如何进行UI自动化测试的
对热修复的理解;能否修复so包?
GC;碰到的OOM情况;聊到了参加的阿里中间件比赛,说了下当时的思路;如何进行内存分析
TCP编程时的协议是如何制定的;有什么改进的地方;PB的编码方式是如何的,如何可以节约空间的。
聊了聊RN以及对技术框架选取的一些看法
HR面
HR面比较简单
通过技术面后做了两个测评,类似心理、情商评价之类的。
高管面
高管面比较简单,就QQ视频了5分钟,简单聊了下实习的氛围和以后的打算。
offer
有赞
一面 Android开发工程师
自我介绍
如何学习Android
如何设计一套图片加载框架;三级缓存。为什么选择LruCache?
了解过launchMode吗?使用过的具体模式的场景?微博分享页面应该使用哪种launchMode?
知道内存泄漏吗?了解的内存泄漏?Handler在哪种情况下会引起内存泄漏?什么好的工具可以检测内存泄漏?
IntentService原理
用过WebView吗?
如何实现一个图片浏览器的思路?
有什么想要问的?
有赞 Java开发工程师
一面
自我介绍
项目提问
TCP连接;为什么不是两次;为什么不是三次
HTTP请求报文结构;GET与POST请求;HTTP版本知道哪些,区别是什么
进程调度算法有哪些;死锁的必要条件;如何消除;如何避免;银行家算法;
Java的集合;HashMap的结构;为什么改成红黑树;阻塞队列一般用在什么地方
Java泛型;泛型擦除;任何情况下都会发生泛型擦除吗?
双亲委派机制;两个类被不同的类加载器加载,是同一个类吗?
如何实现一个线程;线程的状态机;什么情况会使线程阻塞;ThreadLocal;几种线程池;如何自己设计一个线程池
二面
自我介绍
自己做的app是怎么做的;
Java的GC;ActiveMq看过源码吗?MySql学习过吗?
使用过哪些设计模式?
编程。主要考察编程能力和编程习惯。一个字符串,统计某个字母出现最多次;写好之后,改了需求,找出出现次数最多的十个字母
双亲委派模型;为什么要双亲委派模型
提问问题
头条 Android开发工程师 offer
终面(春招拿到了offer,绿卡)
实习项目介绍;如何实现的;为什么使用反射;XML解析的方式;DOM和SAX解析的区别;注解的分类;ButterKnife实现原理
MVP模型是怎么样的;如何实现的;P层是怎么实现的
为什么选用OkHttp库;拦截器链是如何实现的;自己实现的拦截器是用于哪里的;是如何做DNS的;
处于onResume的activity a启动activity b按照时间顺序生命周期是如何调用的;onSaveInstanceState方法会在什么情况下调用
View的事件分发机制;ACTION_CANCEL什么时候被调用,一般switch-case中如何处理;
Android常见引起内存泄漏的情况;Handler引起的内存泄漏是怎样的一个过程;使用过哪些工具进行内存泄漏问题;LeakCanary的工作原理是怎样的;MAT如何进行内存泄漏分析;
HTTP2和HTTP1.1的区别。
手写算法题。一个二维数组,左到右有序,上到下有序,如何找一个值。剑指offer原题。
看过哪些源码;如何看源码;如何学习Android
一个月后拿到了意向书,互娱部门,做抖音。
阿里文娱 优酷 Adnroid开发工程师 挂
终面(春招拿到了实习offer,直通终面)
自我介绍,项目介绍
阅读类APP有没有后台?没有后台的话,每一个app都要去获取多余内容可以怎么改进?爬虫怎么做的?
ImageLoader怎么实现的?三级缓存怎么做的?保存图片在内存中会发生OOM吗?
MVP模式的理解
信息推送怎么实现的?协议怎么设计的?AES算法是怎样的?如何保证数据的正确性和不遗漏消息?
实习的项目是如何做的?怎么去匹配XML和TXT中的字段?
UML了解吗?软件开发流程是怎样的?
设计模式了解吗?如果一个支付的模块,会调用不同银行的接口,不同银行的接口所需参数和返回参数均不同,使用哪种设计模式?
Android机型适配怎么做?如何捕获Crash?
本科和研究生均不是计算机的,怎么学习的?
HR问了工作地点的意向;投了哪些公司;目前拿到了哪些offer
提问了面试官关于Android APP测试的问题,了解了行业情形
1v2,技术经理和HR,HR是远程实时听录音的
半个多月后问hr,挂了。真是坑比啊,由于把我简历锁着,我一直报不了杭州这边的阿里,笔试面试都没有机会。日了狗了
网易 内推 Android开发工程师 挂
一面
自我介绍;除了Android还做了其他的哪些项目;
Activity的lauchMode;用过哪些;说了一个他们遇到的问题,让帮分析分析
知道的网络库有哪些;Volley和OkHttp分别适合用在什么场景下
ImageLoader的三级缓存是怎么实现的;磁盘缓存是怎么实现的;知道哪些图片加载框架
内存泄漏如何检测;LeakCanary的原理;Handler是如何造成内存泄漏的;内部类都会造成内存泄漏吗?
参加的阿里中间件比赛是怎样的;简单实现一个生产者-消费者
Java的线程池有哪几种;需要定时任务使用哪种;CachedThreadPoolExecutor是怎样的
应用通信是如何确保安全的;Https是怎样的;Android如果采用Https通信的话,客户端这边需要有什么
提问问题
二面
TCP的连接为什么是三次握手,不是两次也不是四次
对Android框架层了解吗?AMS和WMS了解吗? (说了了解AMS,噩梦由此开始)
Fragment用过吗?Activity如何传参给Fragment?为什么用setArgument传参,而不是使用带有参数的构造器?
知道系统杀进程吗?如果栈中从底到顶现在是A,B,C,然后系统把应用杀了,重新点击,显示的是哪个Activity?这时如果C里面有Fragment是怎样恢复的?(中途解释了为什么要用setArgument传参,说在走Activity的生命周期之前会先有一个恢复过程,反正听的云里雾里)栈下面的A,B存不存在
Binder机制;为什么Binder是一次拷贝
Activity和Service有什么区别;Service是谁管理的;bindService需要使用到Binder吗?系统服务和自定义服务启动有什么区别?
对协议的理解
秋招正式批的时候,又做了网易笔试,后来又通知去笔试,但由于已确定去51信用卡了,就没有再去杭州面试。
360 Java工程师 挂
一面 18min
自我介绍
String和StringBuffer的区别;StringBuffer在传参时用final修饰,可变吗?
HashMap与HashTable的区别;HashMap在插入自定义类时,要重写哪些方法,为什么
volatile关键字
Java虚拟机,了解多少说多少
锁的类别;用过吗
数据库了解吗?sql语句
用的什么IDE;Linux熟吗?项目有部署到Linux上吗
项目中使用到什么框架没
项目中用过哪些设计模式
二面
自我介绍
关于项目提问的
数据库了解吗
线程安全的集合类有哪些;迭代器模式是怎样的
设计模式了解吗?哪些是构建型的
优势在哪里;以后的职业规划
提问问题
三面 HR
自我介绍
期望薪资;期望工作地
目前投了哪些公司;会去哪家公司
有什么问题提问
三面完gg,估计在武汉要的钱太多了
商汤科技
面试前发现岗位是测试工程师,结果一面是个测试面的;而且那边网信号很差,听不到声音,全程打字,好尴尬。
一面 测试(因同名而导致信息错误)
写一个Http请求
写一个文件读写,从一个文件读,然后写入另一个文件
android 的顶部banner用什么控件实现;核心代码
不想做测试,更想做开发?对商汤的了解
提问问题
后来参加笔试,过了笔试,由于不想去北京,所以拒了面试。
新美大 Android开发工程师 offer
一面
自我介绍
为什么选用OkHttp?为什么用MVP模式?
ImageLoader的三级缓存怎么做的;OkHttp的磁盘缓存怎么做的?
如何删除文章的广告之类的?有遇到不符合的情况吗?
HashMap是线程安全的吗?HashMap线程不安全会造成什么现象?如何使HashMap变为线程安全的?
Java的内存模型;GC;遇到过OOM情况吗?有什么可以检测内存泄露的工具
文章列表用的什么什么控件?ListView如何优化?RecyclerView用过吗?和ListView的区别
应用中有几个Activity;ViewPager嵌套Fragment怎么用,遇到过什么坑没?
自定义View时自定义属性该怎么做?
印象最深刻的项目,或难点
二面
自我介绍
界面展示用的ListView还是RecyclerView?如何做文章的过滤的?如果改成别的网站需要怎么做?
ImageLoader怎么实现的?内存缓存使用的是什么策略?
项目中TCP+HTTP+JSON是怎么回事?
android ui自动化测试
实习的项目
对Kotlin的了解;准备让用Kotlin写一个界面的
给了一个布局,让说说看怎么编写
了解啥新技术
问问题
三面
自我介绍
为什么选用AES加密?
全程没聊技术,介绍他所在部门做的事情,问我感不感兴趣,我也提问了一些问题,聊得比较投机
手上的offer
HR面
问了一些基本信息,手上offer情况,对薪资的要求。由于三面全程没问技术,心里比较虚。
小红书 Android开发工程师
自我介绍;项目提问
为什么使用AES加密,不使用HTTPS?AES本地加密,如何防止apk被反编译?TCP协议报文是如何定义的?如何解决分包的问题的?对HTTP2.0有什么了解?
Launcher->A->B->C->D->A(singleTop)->B(singleTop)->C(singelTop)->D(singleTop)->A(singeTask)->B(singleTask)->C(singleTask)->D(singleTask)->A(singeInstance)->B(singleInstance)->C(singleInstance)->D(singleInstance)后,返回栈里有几个Activity,分别是怎样的?有几个任务栈?
编程题。n元,一瓶汽水1元,一个瓶盖0.2元,问可以喝多少瓶汽水。
提问
说一面通过,10月中旬再进行面试
招银网络 软件开发工程师
自我介绍
项目提问
AES加密算法
MVP模式
GET和POST区别
静态变量和成员变量的区别
获得Class对象的方法
笔试做的怎么样
提问问题
一面后没有继续去现场继续面试
斗鱼 Android开发工程师 挂
现场首先一个小时做一套卷子,然后笔试过了再面试。
一面
自我介绍
对着卷子中问问题;一个栈不可能的出栈顺序;算法题的思路;快排是什么
Java基础
二面
二面技术官是个话痨,全程不聊技术,就聊Android以后的走势之类的。
HR面
HR也就是聊了聊意向地,优缺点,希望工作地、薪资等等。
之前说斗鱼比较难进,但是这个面试真的是太水了,据说今年涨薪了,希望能拿到这样一个offer,在武汉还是挺有竞争力的。最后估计因为直播看的不多,以及人招的确实少,挂了。和我一起的一个阿里大佬也挂了
ThoughtWorks 软件开发工程师 挂
内推的,首先做了一个网上作业,两三天做完
一面
自我介绍
就做的网上作业,增加新需求,有一些日子有打折活动。对于我这种扩展性很强的代码而言,简直so easy
项目提问
MVP模式;ImageLoader哪几级缓存,怎么实现的;
之前参加的结对编程比赛,怎么看
HR面
HR主要就项目遇到的困难,个人性格问题进行提问,英文简单问了两句。主要是考察价值观和thoughtworks是否相同,要表现地善于合作、分享这些吧。
海康威视 Android开发工程师 offer
一面
项目提问;采用的什么方式解析XML;XML解析的方式有哪些;为什么选用SAX解析方式
反射涉及涉及哪些方法;如何判断文档结构是否变化的;
TCP和UDP;HTTP报文协议
AES加密算法;什么是对称加密算法、非对称加密算法;知道哪些非对称加密算法
HR面
聊了期望薪资,工作地点和手上的offer情况。
贝贝网 Android开发工程师 offer
一面
自我介绍
三级缓存怎么做的;内存缓存的大小怎么定的;
实习为什么选择**公司;实习项目是怎么做的
阿里中间件比赛是怎样的
问问题
一面比较轻松,二面比较深,毕竟技术合伙人面试的,感觉不太好
二面
自我介绍
用了哪些开源库;对Android哪些热点技术研究了;热修复的原理是什么,看过源码吗
模块化了解吗?如果自己实现怎么实现
图片三级缓存怎么做的;如何避免OOM;
有没有对性能优化进行过研究;overdraw如何解决
HR面
家在哪里;对贝贝的了解;手上的offer;七天出消息
兴趣爱好
offer给分配了Java开发一职。
腾讯 Android开发工程师 挂
一面
自我介绍
学院多少人;编程水平排名如何;最近一次不是为了找工作而编程是什么时候;给offer后可以实习吗?抽烟吗?喝酒吗?兴趣爱好?
谈谈Java的GC;内存泄露的引起原因;优化内存方面写代码有什么注意的,有什么实际应用
一道多线程设计题;从文件A和B中每次读1K数据,然后将这两块组合起来发到网络上,怎么设计,提示从多线程考虑;给出了解决方案后,问了下BlockingQueue的底部实现原理;然后问网络上传数据有哪些方式;如何制定自己的TCP协议
一道算法题。一个字符串,中间有类型"\哈哈"表示一个表情,然后让你把字符串区分出类型,比如文本->某某表情->文本...这样一个形式
Android掌握的怎么样;然后问了一道关于事件拦截的题;一个ViewGroup,它的每个子View都是可以随意拖动的,该怎么实现
提问问题
二面
二面就是聊天,全程没技术,然后把我挂了。腾讯从此粉转路。不想招人就别叫我去面试啊,逗。成为了面试官KPI的牺牲品
51信用卡 Android开发工程师 offer
一面
自我介绍
注解的类型;编译时注解和运行时注解的区别;如何实现编译时注解;有没有自己实现过
浏览器输入一个网址经历过的流程;DNS具体过程;DNS拦截知道吗?如何解决DNS拦截?
HTTPS过程;如何防止HTTP请求被监听;
HTTP Get请求的字节限制数是多少?HTTP缓存是怎么做的;如何浏览器请求了一个没被修改过的响应,返回码是多少
OkHttp的流程;Socket复用是如何实现的;OkHttp是如何管理连接池的;Okio是如何实现的;和传统IO有什么区别;NIO和BIO的区别;Retrofit了解吗?
如何更改移动一个View;属性动画的原理;Interpolator的设计模式是什么;如何实现一个圆形的ImageView
Activty、Window、View的理解;Activity的onCreate()可以获取View的宽高吗?如何在onCreate()里获取View的宽高?子线程可以更新UI吗?一定不可以吗?
Activity的启动流程;如何启动一个没在Mainfest中注册的Activity
热修复技术了解过吗?Tinker为何是全量dex?Android的类加载机制是怎样的?如何加载一个dex?
提问问题
二面
实习期间做的项目;用到什么框架没;
做的APP是怎么做的;如何实现文章抓取的;删除了哪些标签;
三级缓存是如何实现的?LruCache的实现原理?加载图片的一个过程;HTTP请求时,如果响应没有修改,返回哪个响应码;还遇到过哪些响应码;如果删除策略修改了,怎么办?
阿里中间件比赛,谈了谈体会;对开辟线程的看法;线程池数量的设置
应用中遇到开发问题怎么解决的;对安卓的看法
为什么选用MVP模式开发?好处是什么?应用中有多少个Fragment
双重检查锁的好处;如果不用双重检查锁,那么会出现什么问题;synchronized加在方法上有什么影响
项目采用的架构
三面 现场
终面是赶到现场面的,主要算是聊了聊。包括项目团队如何写作的,项目是如何实现的,对app性能优化方面的认识,对app加固混淆方面的了解;优缺点
HR面
主要聊了下之前的面试感觉、期望薪资、三方什么时候发放、能否实习,其他一些忘记了。
挖财 Android开发工程师
一面
自我介绍
应用的心跳机制和断线重连机制怎么实现的?用的Socket是java层的还是jni层的?心跳包是如何设计的?如何监测网络变化的?在新版本中,不能使用广播,该如何实现?
jvm的堆、栈和方法区有什么区别;sleep和wait有什么区别
双重检查锁的单例模型;为什么要用volatile修饰,如果不的话,会有什么问题
25匹马,5个赛道,决出前3名
Activity启动流程;View绘制发生在哪个阶段
登录过程,如何保证密码安全传输
解决hash冲突的方法有哪些;链表插入查找时间复杂度多少;如何提升到log(n)
二面 现场
二面的面试官是个年轻女性,我一开始还以为是HR呢。
自我介绍
项目是怎么做的;有没有用单测;gradle用过吗?
Github上最喜欢的一个库
还有一些其他问题忘记了,面完说hr不在,会电话联系我,不知道是不是被套路了
后来打电话去问,说二面过了,等hr面,不过hr迟迟没来。
酷家乐 Android开发工程师
博客上春招面试经历,为什么面了那么多公司,最后拿了哪几家的offer
自我介绍
MVP模式;RecyclerView中的Adapter放在哪一层;放在View层和放在Model层有什么区别
android的动画;4.4之后activity的transion动画属于哪种;Path动画用过没
Handler消息机制;view.post()与Handler.post()有什么区别;
事件传递机制;OnTouchListener和onTouchEvent()是怎样一个具体流程
Android优化了解哪些;include和merge有什么区别;viewstub使用时需要注意什么地方;
内存泄露是什么
Java的集合框架;HashSet的内部实现;为什么使用HashMap实现hashSet;SparseArray源码
提问问题;问了下公司规模和开发氛围
一面挂。不过说实话,面了这么多公司,一面挂的也就酷家乐了
总结
准确的讲,找工作是从春招开始的,因为当初的找实习也是为了秋招找工作增加经验。最终出于工作地点的考虑和卡中心的福利,选择了去卡中心实习,也顺利转正了。由于比较想去杭州发展,所以重点投了杭州的一些独角兽公司,比如51信用卡、有赞、挖财、贝贝等等,也算有幸拿到了两家的offer,所以最后也选择了51信用卡。
关于校招,想说的很多,经验也有不少,总体来说:基础(算法、语言、网络、操作系统...)+项目+面试表现。
基础
算法
至于基础的话,算法很重要,因为算法渣,很难过笔试,关于这方面,掌握基础算法(排序,查找,树和图的遍历等),把剑指offer刷一遍,再刷些leetcode应该差不多了。(秋招,没过的笔试有百度、搜狗、蘑菇街、滴滴、搜狐、新浪,有些公司不招人那就没办法了)
语言
java的搞java,c++的搞C++,现在源码问的很多,看几篇面经和博客就可以了。
网络
网络的话,主要就是TCP、UDP、HTTP1.1/2.0、HTTPS。TCP设计连接、断开连接、拥塞控制、流量控制等等;HTTPS设计证书下发,加密算法等等。最好有网络编程的经验,对TCP的分包粘包这种概念理解更深,以及TCP协议的设计和序列化,这里可以了解下protocolbuffer序列化方式。
对于Java开发者,Netty源码可以看看;对于Android开发者,OkHttp可以看看,可以加深对HTTP协议的理解。
操作系统
春招时,被阿里问到了进程管理,当时没看操作系统,然后就白瞎了。我认为主要掌握进程管理、内存管理,这是问的比较多的。其他部分的话,追求越高,自然懂的也就要越多
项目
项目就仁者见仁,智者见智了,不过建议是可以放到github上,包装包装。
其他
面试表现=80%基础+20%临场发挥,所以基础很重要,基础很重要,基础很重要。
关于比赛和论文,这些都是我没有的,这些也都是加分项。之前参加了阿里中间件比赛,进了复赛,面试中也被问到过几次,还没找工作的朋友们可以准备准备,还来得及。
最后祝大家都能找到一个满意的工作,满意是针对你自己的水平和期望而言的。水平是根据你的天赋和付出而言的,什么都不做而拿不到好的offer而说不满意,这是不对的。心态很重要,认识自己很重要。
作者:星风雪雨
本文来源于牛客网
——————————
牛客网(www.nowcoder.com)
- 互联网名企笔试真题
- 校招求职笔经&面经
- 程序员求职实习信息
- 程序员学习交流社区