Android面经:百度腾讯美团头条网易华为小米拼多多

今年秋招面试了一些公司,现在把面经和面试体验发一下,大佬们共同学习。

由于水平比较差,所以才获得几个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小时)

1、自我介绍

2、聊项目,为什么用socket通信,能连几个主机,部署在哪,看过cpu状态吗,pagehelper怎么保证线程安全(其实就是问spring 单例,用thread local),介绍一下threadlocal ,shiro介绍一下,你是怎么用的。

3、说一下用过数据结构。

4、内存结构,堆栈结构,为什么要用栈

5、平时看哪些论坛

6、写算法:数组中找平衡点,这个数的左边加起来与右边加起来相等。

7、Java中的异常,怎么用的

8、反问

武汉现场面三面 40分钟

  1. 自我介绍
  2. 讲一个你熟悉的项目
  3. 手写代码:一个数组中的数字,有大有小,如何用最少的+1或者-1的操作消除数组中的数字差异过大的情况,返回你的操作次数
  4. intentService了解么?说一下他的用处和原理
  5. intentService和service的区别
  6. intentService现在要求让他的任务可以并行执行,你会怎样去实现
  7. asyncTask说下主要的方法
  8. activity销毁之后,那么asyncTask如果还在执行,那么会造成什么问题
  9. activity的旋转屏幕的生命周期变化
  10. 手写代码:一个单链表,每三个节点反转一次
  11. 你有什么想问我的么?

面试体验:

一定要做好点准备,难度都一般,不是难的那种。另外从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分钟

  1. JVM垃圾回收算法(详细介绍)
  2. JVM垃圾回收器(详细介绍)
  3. https连接过程,握手过程
  4. 对称加密,非对称加密
  5. 三次握手过程
  6. android消息机制
  7. android事件分发机制
  8. 二叉树的非递归实现(前序、中序、后序)
  9. 给一个NN的矩阵,找出22矩阵的和的最大值,时间复杂度?最优?
  10. android蓝牙连接(传统蓝牙,BLE蓝牙),如何连接?
  11. JVM内存分区(每部分异常会报什么错误?)

百度二面

  1. lambda编程知道么?
  2. afinal框架?
  3. volley中对cookie的处理?
  4. GC回收算法
  5. http报文 cookie
  6. GC roots有哪些
  7. GC roots 遍历递归
  8. 同步,异步函数函数修饰符修饰符?future
  9. 题目:任务调度器

百度三面(50分钟)

  1. 自我介绍
  2. 能不能立即过来实习?
  3. 网络分层?7层,5层,4层,具体说下每层干啥
  4. ip是哪一层协议?
  5. post与get的区别,get有长度限制么?
  6. 为什么要使用ip协议?直接使用mac地址连接不可以么?
  7. 全球这么多厂商,生产的设备如果有重复的mac地址,你如何解决这个问题?网络数据包传输会有什么问题
  8. 你是网络管理员,从英国的一台电脑要打开中国的一个网页,现在就是连接不上(dns正常可以解析到正确IP),你能考虑到哪些问题?

接着问,你数据结构知道吧?

  1. 快排时间复杂度是多少?最差?平均?为什么时间复杂度是O(N*logN)?怎样推导出来的?
  2. 你对app推送有什么了解?如果是你来实现的话,你能怎么做?
  3. 中国有13亿人,对全国身份证号进行排序,你会怎样去做
  4. 你上级让你去安排一个日子来举办活动,要求这一天一定不能是周六或者周日,一定要在周一到周五之间,你如何判断一年里面有哪些日子是合适的?
  5. 你有什么想问我的?

**面试感受:**1面基本上完美,很舒服。2面面试官很有深度,并且人超棒,会引导你去如何解决。3面是经理面。我说错了一句话,嗯,导致失败了吧,其实三面总的来说打得也算是马马虎虎到70%,一句话失误导致最后失败了吧。。。郁闷了好多天,,,

华为

华为优招

一面:

上来是做自我介绍,之后开始问项目,讲项目中的认为的难点,印象深刻的地方。

即时通讯IM,BLE蓝牙连接

针对简历继续问

android消息机制 view分发机制 android性能优化 binder机制 设计模式(包含设计原则)

android相关:

广播的静态注册与动态注册 广播的有序与无序 service的如何保持不被杀死 内存泄露(handler 等…)

java:

== 与equals区别 stringBuffer与stringBuilder区别 hashmap的原理

网络:

post与get区别 http与https区别 网络错误码

二面

聊人生。。。

拼多多

拼多多 一面(60分钟)

  1. 做自我介绍
  2. android布局说下
  3. android四大组件说下
  4. activity和activity传输数据怎么做
  5. 使用intent传输数据对数据有什么要求
  6. service和activity的区别说下
  7. ANR了解么?如何解决?
  8. 给你一个数组,里面都是long类型数据,有重复数字有空格,要求去重,空间复杂度O(1)。说下思路
  9. 跨进程通讯你说说看有哪些
  10. binder机制说说你知道的
  11. 常用的排序算法说下
  12. 自定义View实现,应该注意什么
  13. View的生命周期—如果activity被重建,那么view的生命周期怎样变化
  14. activity横竖屏切换,对应的view的生命周期
  15. activity横竖屏切换,activity的生命周期
  16. activity横竖屏切换,activity一定会调用onDestory方法么?
  17. 通过在清单文件中进行设置不让他进行横竖屏切换的话,activity是如何知道进行了横竖屏切换
  18. 有什么想问我的?

二面

  1. 讲一下你做的这些项目里面哪个印象最深刻
  2. 你负责的这些部分讲几个你认为比较重要的点
  3. Volley框架机制说下,你能抽取出(学到)几个技术点?
  4. android性能优化说下
  5. binder实现机制
  6. AIDL文件的用处,aidl生成的类有什么用?讲下这个类做的事情和原理
  7. 进程之间是相互隔离的,那么从A进程到B进程使用binder进行通讯,那么猜想下到底是怎样做的呢?
  8. View的消息机制你说下,对于ViewGroup和View有什么不一样?
  9. 事件拦截的话,可不可以从子View来进行操作?具体思路说下
  10. 考虑一种场景:listView加上一个header实现下拉刷新的功能,你要怎样去实现?说说思路
  11. 如果这样的场景下:listView和header属于不同的view,相互为兄弟View,外部套一个大的viewGroup,如何进行事件分发?从初始态到用户拉下出现header的过程来依次分析
  12. 如果是这样的场景:listView和header属于同一个view层,那么下拉刷新又该如何实现?事件拦截又该如何去做?
  13. 发过来一个网址,手写代码
  14. 根据他提的需求,写代码(主要就是设计模式的使用原则和设计模式的使用):基本上涉及的知识点:策略模式,工厂方法模式。之后根据不同的新需求如何尽可能少的修改原来代码来实现新功能。
  15. 对上一步中的抽象类和接口说下优缺点?
  16. 为什么java是要求是只能单一继承?却可以实现多个接口?说下你的见解
  17. 抽象类属性中什么场景下是优点?什么场景下优点又变成了缺点?
  18. 使用接口什么场景下是优点?什么场景下优点又变成了缺点?
  19. 权利翻转:你有什么需要问的么?…

网易一面:40分钟

自我介绍……

1 项目挨个问了下(准备充分,无压力)

2. volley框架说下

3. 手写一个生产者消费者

4.手写fragment生命周期和activity生命周期,并把生命周期一一对应上。

5. 热修复说下,几种方式?各自原理?

6. 插件化了解么?说下,基本原理知道么?

7 混合开发了解么?

8.A应用如何打开B应用的界面?

9. 安卓性能优化有哪些?

10.recycleView说下

11. activity与fragment交互,如何互传数据

12. binder说下

13 activityManagerService知道么?说下

  1. android中的广播说下,粘性广播知道么

网易二面:基本没问项目,完全面试官自由发挥。40分钟

无自我介绍,直接开怼。

  1. popupwindow中是否可以再创建popupwindow?为什么?
  2. dialog中是否可以创建子window?为什么?
  3. dialog创建为什么传入activity的context而不是applicationContext ?
  4. fragement和activity交互方式
  5. fragment可不可以在构造函数传递参数?使用setArgument的原理?
  6. 两个应用程序A和B,A要用B的登录信息,怎么做?
  7. contentprovider是如何保证操作数据库原子性?
  8. 加载进来的class类是否可以动态修改?
  9. 热修复原理有哪些?说下
  10. binder是在jni层怎样实现的(一次拷贝)?
  11. client使用serviceManager可以找到对应的service,那么自己写的service的话,client是怎样找到的这个service?
  12. 安卓性能优化你知道有哪些?
  13. 一个后台任务栈,从上到下 A B C三个activity,内存不足回收。那么从后台到前台打开是哪个界面?为什么,原理?
  14. 子线程是否可以更新UI?那为什么安卓要求不能在子线程更新UI?

结束,几分钟以后问hr小姐姐:很遗憾……

面试体验:

一面面试官很nice,基本上问的问题也都答上来了。也乐于听你说的话。二面面试官上来没让自我介绍,拿一个笔开始划你的简历,但是基本上也没有问过简历上的项目。问的问题有些很刁钻也很深入。如果在开发过程中没有真的去搞懂一些api的话,会很吃亏。感觉面试官技术有深度,对于一些项目api中的细节有比较深的认识。有些自负,问问题都声音小的很。最后都不让问问题。很nb的样子

美团点评

美团点评 1面 40分钟

  1. 自我介绍
  2. 手写代码:View树遍历(有viewGroup和view,打印所有的view还有他们对应的层级)
  3. 在列表里,如何实现多种不同的布局?有哪些方法
  4. java语言中的现在的一些新特性你知道有哪些
  5. java反射和注解你知道么?讲下
  6. EventBus的原理说下
  7. 现在有一个书签,书签有三种类型,现在你需要提供一个功能类,针对于不同的需求进行不同的书签选择,你会如何去实现?
  8. 网盘中有 10 个文件,现在用户可以任意拖动这些文件,改变它们的排序,怎么设计上传的接口,使用什么样的数据结构进行存储
  9. 你在开发中使用的是哪种结构框架?有几种结构框架,介绍下
  10. 平常是如何学习的?
  11. 你有什么想问的么?

2面 40分钟

  1. 自我介绍
  2. 你认为什么样的代码是最好的?你会注意些什么?
  3. 手写代码

判断一个字符串是否为一个合格的密码,一个合格的密码需要满足如下条件:

1. 长度必须大于 6;

2. 首字母必须为大写字母

3. 只能包含 ‘a ~ z’ 或 ‘A ~ Z’ 或 '_‘或’0~9’

4. 至少有两种不同类型的字符

  1. github账号有么?
  2. 使用什么编译器进行开发?gradle了解么?关于他的配置文件你简单介绍下
  3. 设计模式你在日常开发过程中用到过什么?有没有特别印象深刻的设计模式
  4. 手写代码:有一个类似于exel的列命名规则的字符串,现在给你这样的一个字符串,需要你给出这个串后面的串是什么?
  5. 你看过哪些源码?你在里面学到了什么?
  6. 当时为什么选择volley这个http库?
  7. 你在项目中开发的话,有什么很难解决的bug吗?你是怎样解决的
  8. 平时你是怎么学习的?
  9. 你有什么想问我的?

3面 40分钟

  1. 自我介绍
  2. 你所在的实验室叫什么名字?
  3. 你在实验室的话,没有让你出去实习,那么平时你是怎样学习进步的
  4. 你们现在研究生毕业不考虑到高校任职?现在一流大学去当老师都是什么要求
  5. 本科和研究生对比的话,你感觉你的成长或者感悟在哪里
  6. 本科同学的毕业去向
  7. 玩游戏么?王者荣耀什么级别?现在不玩了等级不下降?
  8. 现在有几家offer
  9. 百度的测开岗位你有什么看法,你对这个岗位满意么
  10. concurrent包下的一些类有了解么?
  11. 画一下concurrentHashMap的结构和hashMap的结构
  12. 对于concurrentHashMap来说的话,同时两个线程的put操作会有什么影响?
  13. 对于concurrentHashMap来说的话,同时两个线程的put和get操作会有什么影响?
  14. 你在项目中用过这些类么?为什么知道他们?
  15. 读写锁你知道么?说下
  16. 你有什么想问我的

4面 HR 30分钟

  1. 自我介绍
  2. ……

面试体验:

问的一些问题还是挺开放的,注重你的思路。一些题目还是有些深度。但是大部分还是可以轻松搞定。本来因为一些原因晚去了面试,但是还有面试机会,谢谢帮助过我的那个萌妹纸~~

一下午一口气面到三面,爽快三面经理面也是一个爽快人哈哈,要不是太晚了就直接面试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开发面试专题资料,高级进阶架构资料 这几块的内容

这些都是我现在闲暇还会反复翻阅的精品资料。里面对近几年的大厂面试高频知识点都有详细的讲解。相信可以有效的帮助大家掌握知识、理解原理。

分享给大家,非常适合近期有面试和想在技术道路上继续精进的朋友。也是希望可以帮助到大家提升进阶

如果你有需要的话,可以点击获取

喜欢本文的话,不妨顺手给我点个赞、评论区留言或者转发支持一下呗~

猜你喜欢

转载自blog.csdn.net/ajsliu1233/article/details/108270154