今年秋招面试了一些公司,现在把面经和面试体验发一下,大佬们共同学习。
由于水平比较差,所以才获得几个offer(小公司无算):百度,美团,小米,华为,百度外卖(后期获得头条,拼多多Offer)
职位都是:android开发
小米
小米一面 (1小时20分钟)
1.Activity生命周期。然后一系列场景问题
2.onNewIntent()
3.启动模式场景题
4.IPC通信。App中开辟一个新进程的好处
5.广播注册方式
6.事件分发机制;拦截方式
7.Handler原理。会有什么问题
8. removeCallbacksAndMessages();使用什么参数
9.postDelay实现原理。给了个场景
10.Android图片质量,默认图片格式。压缩方式
11.自定义View过程
12.kotlin相关(写一个重载)
13.webp,jpg进行图片转换为同一大小的bitmap格式后,大小是否一样?
- 反问
小米二面(1小时)
1、自我介绍
2、聊项目,为什么用socket通信,能连几个主机,部署在哪,看过cpu状态吗,pagehelper怎么保证线程安全(其实就是问spring 单例,用thread local),介绍一下threadlocal ,shiro介绍一下,你是怎么用的。
3、说一下用过数据结构。
4、内存结构,堆栈结构,为什么要用栈
5、平时看哪些论坛
6、写算法:数组中找平衡点,这个数的左边加起来与右边加起来相等。
7、Java中的异常,怎么用的
8、反问
武汉现场面三面 40分钟
- 自我介绍
- 讲一个你熟悉的项目
- 手写代码:一个数组中的数字,有大有小,如何用最少的+1或者-1的操作消除数组中的数字差异过大的情况,返回你的操作次数
- intentService了解么?说一下他的用处和原理
- intentService和service的区别
- intentService现在要求让他的任务可以并行执行,你会怎样去实现
- asyncTask说下主要的方法
- activity销毁之后,那么asyncTask如果还在执行,那么会造成什么问题
- activity的旋转屏幕的生命周期变化
- 手写代码:一个单链表,每三个节点反转一次
- 你有什么想问我的么?
面试体验:
一定要做好点准备,难度都一般,不是难的那种。另外从android的技术上来说,从我的面试经历来说都是一点即过,面试官没有多少深入的挖掘知识点。面试官都很nice,有些算法上卡着了,会一步一步的引导你。赞一个
今日头条
今日头条 1面 30分钟
1.自我介绍
2. 什么是内存泄漏,Android里有哪些内存泄漏的场景,原因是什么
3. JVM的GC过程,GC的算法都有哪些
4. 进程和线程的概念,Android里怎样实现多线程?(Thread Handler AsyncTask IntentService等等)
5. Handler的原理和使用
6. Handler是怎么和线程绑定的(Looper),为什么Looper.loop()要设计成死循环
7. Java的几种内部类,区别是什么
8. Activity的生命周期和启动模式
9. 写题:二叉树的右视图(层序遍历即可)
今日头条 2面 1小时20分钟
1.自我介绍
2.GC讲一下?
3.Java数据结构了解吗?
4.链表和数组的区别
5.Final?讲一下
6.项目中使用过锁吗?synchronized和reentrantlock?
7.讲一下多态?
8.内存泄漏?
9.android中的内存泄露?
10.讲一下handler机制?
11.listview和RecyclerView的区别
12.activity的生命周期
13.activity的启动模式
14.singletop中再次启动栈顶的activity,生命周期怎么变化?(不了解)
15.fragment了解吗?
16.和activity的区别?
17.handle机制?
18.onNetIntent了解吗?(不了解)
手机百度电话一面 34分钟
- JVM垃圾回收算法(详细介绍)
- JVM垃圾回收器(详细介绍)
- https连接过程,握手过程
- 对称加密,非对称加密
- 三次握手过程
- android消息机制
- android事件分发机制
- 二叉树的非递归实现(前序、中序、后序)
- 给一个NN的矩阵,找出22矩阵的和的最大值,时间复杂度?最优?
- android蓝牙连接(传统蓝牙,BLE蓝牙),如何连接?
- JVM内存分区(每部分异常会报什么错误?)
百度二面
- lambda编程知道么?
- afinal框架?
- volley中对cookie的处理?
- GC回收算法
- http报文 cookie
- GC roots有哪些
- GC roots 遍历递归
- 同步,异步函数函数修饰符修饰符?future
- 题目:任务调度器
百度三面(50分钟)
- 自我介绍
- 能不能立即过来实习?
- 网络分层?7层,5层,4层,具体说下每层干啥
- ip是哪一层协议?
- post与get的区别,get有长度限制么?
- 为什么要使用ip协议?直接使用mac地址连接不可以么?
- 全球这么多厂商,生产的设备如果有重复的mac地址,你如何解决这个问题?网络数据包传输会有什么问题
- 你是网络管理员,从英国的一台电脑要打开中国的一个网页,现在就是连接不上(dns正常可以解析到正确IP),你能考虑到哪些问题?
接着问,你数据结构知道吧?
- 快排时间复杂度是多少?最差?平均?为什么时间复杂度是O(N*logN)?怎样推导出来的?
- 你对app推送有什么了解?如果是你来实现的话,你能怎么做?
- 中国有13亿人,对全国身份证号进行排序,你会怎样去做
- 你上级让你去安排一个日子来举办活动,要求这一天一定不能是周六或者周日,一定要在周一到周五之间,你如何判断一年里面有哪些日子是合适的?
- 你有什么想问我的?
面试感受:1面基本上完美,很舒服。2面面试官很有深度,并且人超棒,会引导你去如何解决。3面是经理面。我说错了一句话,嗯,导致失败了吧,其实三面总的来说打得也算是马马虎虎到70%,一句话失误导致最后失败了吧。。。郁闷了好多天,,,
华为
华为优招
一面:
上来是做自我介绍,之后开始问项目,讲项目中的认为的难点,印象深刻的地方。
即时通讯IM,BLE蓝牙连接
针对简历继续问
android消息机制 view分发机制 android性能优化 binder机制 设计模式(包含设计原则)
android相关:
广播的静态注册与动态注册 广播的有序与无序 service的如何保持不被杀死 内存泄露(handler 等...)
java:
== 与equals区别 stringBuffer与stringBuilder区别 hashmap的原理
网络:
post与get区别 http与https区别 网络错误码
二面
聊人生。。。
拼多多
拼多多 一面(60分钟)
- 做自我介绍
- android布局说下
- android四大组件说下
- activity和activity传输数据怎么做
- 使用intent传输数据对数据有什么要求
- service和activity的区别说下
- ANR了解么?如何解决?
- 给你一个数组,里面都是long类型数据,有重复数字有空格,要求去重,空间复杂度O(1)。说下思路
- 跨进程通讯你说说看有哪些
- binder机制说说你知道的
- 常用的排序算法说下
- 自定义View实现,应该注意什么
- View的生命周期—如果activity被重建,那么view的生命周期怎样变化
- activity横竖屏切换,对应的view的生命周期
- activity横竖屏切换,activity的生命周期
- activity横竖屏切换,activity一定会调用onDestory方法么?
- 通过在清单文件中进行设置不让他进行横竖屏切换的话,activity是如何知道进行了横竖屏切换
- 有什么想问我的?
二面
- 讲一下你做的这些项目里面哪个印象最深刻
- 你负责的这些部分讲几个你认为比较重要的点
- Volley框架机制说下,你能抽取出(学到)几个技术点?
- android性能优化说下
- binder实现机制
- AIDL文件的用处,aidl生成的类有什么用?讲下这个类做的事情和原理
- 进程之间是相互隔离的,那么从A进程到B进程使用binder进行通讯,那么猜想下到底是怎样做的呢?
- View的消息机制你说下,对于ViewGroup和View有什么不一样?
- 事件拦截的话,可不可以从子View来进行操作?具体思路说下
- 考虑一种场景:listView加上一个header实现下拉刷新的功能,你要怎样去实现?说说思路
- 如果这样的场景下:listView和header属于不同的view,相互为兄弟View,外部套一个大的viewGroup,如何进行事件分发?从初始态到用户拉下出现header的过程来依次分析
- 如果是这样的场景:listView和header属于同一个view层,那么下拉刷新又该如何实现?事件拦截又该如何去做?
- 发过来一个网址,手写代码
- 根据他提的需求,写代码(主要就是设计模式的使用原则和设计模式的使用):基本上涉及的知识点:策略模式,工厂方法模式。之后根据不同的新需求如何尽可能少的修改原来代码来实现新功能。
- 对上一步中的抽象类和接口说下优缺点?
- 为什么java是要求是只能单一继承?却可以实现多个接口?说下你的见解
- 抽象类属性中什么场景下是优点?什么场景下优点又变成了缺点?
- 使用接口什么场景下是优点?什么场景下优点又变成了缺点?
- 权利翻转:你有什么需要问的么?......
网易一面:40分钟
自我介绍……
1 项目挨个问了下(准备充分,无压力)
2. volley框架说下
3. 手写一个生产者消费者
4.手写fragment生命周期和activity生命周期,并把生命周期一一对应上。
5. 热修复说下,几种方式?各自原理?
6. 插件化了解么?说下,基本原理知道么?
7 混合开发了解么?
8.A应用如何打开B应用的界面?
9. 安卓性能优化有哪些?
10.recycleView说下
11. activity与fragment交互,如何互传数据
12. binder说下
13 activityManagerService知道么?说下
- android中的广播说下,粘性广播知道么
网易二面:基本没问项目,完全面试官自由发挥。40分钟
无自我介绍,直接开怼。
- popupwindow中是否可以再创建popupwindow?为什么?
- dialog中是否可以创建子window?为什么?
- dialog创建为什么传入activity的context而不是applicationContext ?
- fragement和activity交互方式
- fragment可不可以在构造函数传递参数?使用setArgument的原理?
- 两个应用程序A和B,A要用B的登录信息,怎么做?
- contentprovider是如何保证操作数据库原子性?
- 加载进来的class类是否可以动态修改?
- 热修复原理有哪些?说下
- binder是在jni层怎样实现的(一次拷贝)?
- client使用serviceManager可以找到对应的service,那么自己写的service的话,client是怎样找到的这个service?
- 安卓性能优化你知道有哪些?
- 一个后台任务栈,从上到下 A B C三个activity,内存不足回收。那么从后台到前台打开是哪个界面?为什么,原理?
- 子线程是否可以更新UI?那为什么安卓要求不能在子线程更新UI?
结束,几分钟以后问hr小姐姐:很遗憾……
面试体验:
一面面试官很nice,基本上问的问题也都答上来了。也乐于听你说的话。二面面试官上来没让自我介绍,拿一个笔开始划你的简历,但是基本上也没有问过简历上的项目。问的问题有些很刁钻也很深入。如果在开发过程中没有真的去搞懂一些api的话,会很吃亏。感觉面试官技术有深度,对于一些项目api中的细节有比较深的认识。有些自负,问问题都声音小的很。最后都不让问问题。很nb的样子
美团点评
美团点评 1面 40分钟
- 自我介绍
- 手写代码:View树遍历(有viewGroup和view,打印所有的view还有他们对应的层级)
- 在列表里,如何实现多种不同的布局?有哪些方法
- java语言中的现在的一些新特性你知道有哪些
- java反射和注解你知道么?讲下
- EventBus的原理说下
- 现在有一个书签,书签有三种类型,现在你需要提供一个功能类,针对于不同的需求进行不同的书签选择,你会如何去实现?
- 网盘中有 10 个文件,现在用户可以任意拖动这些文件,改变它们的排序,怎么设计上传的接口,使用什么样的数据结构进行存储
- 你在开发中使用的是哪种结构框架?有几种结构框架,介绍下
- 平常是如何学习的?
- 你有什么想问的么?
2面 40分钟
- 自我介绍
- 你认为什么样的代码是最好的?你会注意些什么?
- 手写代码
判断一个字符串是否为一个合格的密码,一个合格的密码需要满足如下条件:
1. 长度必须大于 6;
2. 首字母必须为大写字母
3. 只能包含 'a ~ z' 或 'A ~ Z' 或 '_'或'0~9'
4. 至少有两种不同类型的字符
- github账号有么?
- 使用什么编译器进行开发?gradle了解么?关于他的配置文件你简单介绍下
- 设计模式你在日常开发过程中用到过什么?有没有特别印象深刻的设计模式
- 手写代码:有一个类似于exel的列命名规则的字符串,现在给你这样的一个字符串,需要你给出这个串后面的串是什么?
- 你看过哪些源码?你在里面学到了什么?
- 当时为什么选择volley这个http库?
- 你在项目中开发的话,有什么很难解决的bug吗?你是怎样解决的
- 平时你是怎么学习的?
- 你有什么想问我的?
3面 40分钟
- 自我介绍
- 你所在的实验室叫什么名字?
- 你在实验室的话,没有让你出去实习,那么平时你是怎样学习进步的
- 你们现在研究生毕业不考虑到高校任职?现在一流大学去当老师都是什么要求
- 本科和研究生对比的话,你感觉你的成长或者感悟在哪里
- 本科同学的毕业去向
- 玩游戏么?王者荣耀什么级别?现在不玩了等级不下降?
- 现在有几家offer
- 百度的测开岗位你有什么看法,你对这个岗位满意么
- concurrent包下的一些类有了解么?
- 画一下concurrentHashMap的结构和hashMap的结构
- 对于concurrentHashMap来说的话,同时两个线程的put操作会有什么影响?
- 对于concurrentHashMap来说的话,同时两个线程的put和get操作会有什么影响?
- 你在项目中用过这些类么?为什么知道他们?
- 读写锁你知道么?说下
- 你有什么想问我的
4面 HR 30分钟
- 自我介绍
- …..
面试体验:
问的一些问题还是挺开放的,注重你的思路。一些题目还是有些深度。但是大部分还是可以轻松搞定。本来因为一些原因晚去了面试,但是还有面试机会,谢谢帮助过我的那个萌妹纸~~
一下午一口气面到三面,爽快三面经理面也是一个爽快人哈哈,要不是太晚了就直接面试hr了,无奈,只能第二天面试hr了。。最后走的时候三个面试官和我说再见,挺温馨~
腾讯
腾讯一面 30分钟
1.自我介绍
2.介绍一下毕业论文
3.问了下我本科专业(双学位)
4.group by与order by的区别
5.介绍一下TCP协议
6.介绍一下泛型
7.泛型编译阶段会报错吗
8.磁盘调度算法有哪些?
9.撕题,给你二维平面上,给三个点的坐标,并给出另外一个点的坐标,判断这一点在不在前三个点构成的三角形内。
10.有没有想问我的?
腾讯二面 25分钟
1.自我介绍
2.==和equals的区别
3.new String相关问题,好像是问指向的对象是不是一样的
4.强引用、弱引用、虚引用
5.页面置换算法有哪些?
6.介绍一下网络模型有几层,分别是哪些?
7.IP协议跟TCP分别在哪一层?
(问了一堆面经上的题目,不难,我记不太清楚了)
8.撕题:给你一个数组,删除数组中为“A”的字符,刚开始我用Arraylist存的,然后用for去遍历,结果不对,后面改了一下(集合遍历需要用迭代器)
9.智力题:给你十个箱子,每个箱子有十块金条,其中有一个箱子被偷了(每个金条都被磨去了相同的重量,外表看不出来),只称一次,找出被偷了的箱子是哪一个。(在面试官的提示下答出来了)
面试体验:
好吧,聊天到了二面,确实是该挂人的时候了,该说再见了。应该是招够人了,所以走走过场。恩,还不错吧,至少没有遇到过其他同学面试官上来怼人的情况。面试官还是挺好的,面试体验蛮好再见腾讯
最后
文末附上我的宝典,内容包含:Android学习PDF+架构视频+源码笔记,高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料 这几块的内容
这些都是我现在闲暇还会反复翻阅的精品资料。里面对近几年的大厂面试高频知识点都有详细的讲解。相信可以有效的帮助大家掌握知识、理解原理。
分享给大家,非常适合近期有面试和想在技术道路上继续精进的朋友。也是希望可以帮助到大家提升进阶
如果你有需要的话,可以点击获取!
喜欢本文的话,不妨顺手给我点个赞、评论区留言或者转发支持一下呗~
网友评论