关于android:破釜沉舟拿到了网易offer腾讯字节网易Android面试经验总结

43次阅读

共计 4638 个字符,预计需要花费 12 分钟才能阅读完成。

前言

很多人挤破脑袋,背水一战的想进大厂的根本原因还是大厂和小公司真的不一样。

我是双非本科 16 年毕业的,毕业之后就始终在做 Android 相干方面的开发工作,到 19 年经验了两家守业公司,一家工作了不到半年老板就跑路了,一家工作到 19 年底,因为经营不当开张了(一度狐疑本人是不是去哪家公司就得哪家开张)。

在小公司做开发,一个同时开发几个 app 也是比拟常见的,而且公司的代码和项目管理都十分的不标准,一些祖传代码能让你一些白了头。诸多因素综合下来更加动摇了我奔大厂的信心,晋升技术能力也好,镀金也罢,又或是开篇说的一种能力的见证,在去年 3 月份我毅然决然的抉择了裸辞,开始我的奔大厂之路。

至 4 月完结,面完了腾讯,字节,阿里 … 后果都是凉凉(心田还是很虚的,所以先找了些规模偏小的大厂下手)。总体的一个感觉就是,感觉面试官问的感觉都会,然而就是卡在喉咙外面说不出来,问到一些底层,源码方面的货色,更是脑子一片空白,有个面试官甚至反诘我,“你之前的 16k 是怎么拿到的?”。筹备还是太不充沛了,忽然意识到,随后在 5 月份开始升高了面试的频率,开始温习,从 java 根底到底层源码,该背的背,该写的写,并在每次面试之后记录下面试官的问题,回去做复盘和延长,实际出真知。另起炉灶,通过几经挫折终于入职了网易。

本人整顿了一下被问到的问题,当初分享给大家,另外本人整顿的一下材料也会分享给大家,心愿能帮忙到各位求职的小伙伴。

腾讯一面 50 分钟

1.MVVM 与 mvc、mvp 架构的区别与分割

2.mvvm 用到的设计模式

3.viewmodel 的实现原理

4.viewmodel 怎么更新数据的

5. 安卓的线程通信

6.looper 阻塞为什么不会造成 ANR

7. 播送里怎么执行耗时操作

8. 阻塞多久会呈现 ANR

9. 开发遇到的一些异样,怎么解决

10. 线程平安的队列有哪些

11.concurrenthashmap 详解

12.fragment 的生命周期

13. 安卓里解决多线程抵触的办法

14.volatile 详解、synchronized 详解,两者区别

15.activity 生命周期

16.onStart 与 onResume 解释

17. 安卓中过程间通信形式

18. 内核态与用户态

19.redis 原理

20.redis 怎么保障原子性

21.TCP 传输中 header 里的字段

22.http 状态码

23.Java GC 机制

24. 过程、线程、协程的分割与区别

25. 死锁的必要条件

26. 银行家算法

27.TCP 拥塞管制

28. 四次挥手详解

29.TCP 与 UDP 区别

30.TCP 怎么保障牢靠传输

31.DNS 解析过程

32.TCP 报文里的字段

33. 算法题:计算二叉树的高度(递归与非递归两种形式)

腾讯二面,35 分钟

1.mvvm,mvp,mvc

2. 具体介绍我的项目

3. 网络传输层的协定

4.TCP 报头

5.TCP 三次握手,为什么三次

6.linux 内存管理机制

7. 虚拟内存与物理内存

8. 罕用数据结构

9. 堆排序原理

字节一面 1 小时

1. 过程、线程、协程

2. 过程间能共享内存吗

3. 安卓中挂起函数怎么实现的

4. 安卓中实现多线程的办法

5. 线程池详解

6. 线程池设计模式,怎么本人设计一个线程池

7.handler 详解,是否会内存透露,泄露的原理

8. 匿名外部类,原理是什么

9.Java GC 算法

10.Java 援用类型,弱援用的作用,援用队列。

11. 安卓图片缓存,加载

12. 安卓中的布局,布局优化办法,罕用标签

13. 安卓四大组件

14.activity 四大启动模式

15.onnewintent 办法

16. 本地播送

17.jetpack 组件

18.viewmodel 设计模式,mvc,mvp,mvvm 介绍

19.retrofit 的具体实现,其中接口的作用,注解的作用

20.hashtable,hashmap 与 concurrenthashmap 详解

21. 哈希抵触解决办法,

22. 算法题:随机生成不反复的 100 个数 0 -99

字节二面,50 分钟

1.https 具体介绍

2.get 与 post 区别

3. 申请状态码

4.cookie 与 session

5.Java 外部类

6. 泛型擦除机制

7.Java 内存回收

8.GC roots

9.Java 加锁形式

10. 线程平安的单例模式(双重检测),为什么要两次判断,volatile 作用

11. 安卓的事件散发机制

12. 算法题:取得二叉树的最大宽度,写出最优解

字节三面,50 分钟

5 道代码题

1. 写一个泛型办法,实现删除数组中的元素性能

2. 写一个单例模式

3. 返回二叉树的第 k 大数

另外两个记不得了,代码写的很差,所以三面卒。。。

陌陌一面,40 分钟

1. 我的项目介绍, 难点

2. 看代码说运行后果

3. 栈帧的概念

4. 锁的概念,加锁起因

5. 过程、线程、协程

6.activity 四大启动模式

7. 事件散发机制

8.mvc,mvp,mvvm 架构

9. 用过的设计模式

10. 线程平安的数据结构

11.app 编译过程

12.http 协定介绍

13.https 求解过程

14.TCP 三次握手,牢靠传输机制

15. 快排的事件,空间复杂度

陌陌二面,30 分钟

1.Java 字符串具体介绍

2.JVM 内存具体介绍,对象,变量等存储地位

3.OOM,怎么解决

4. 过程、线程、协程

5. 创立线程的形式

6. 线程池详解

7. 线程生命周期,状态

8. 循环援用,怎么防止

9. 内存透露,怎么排查

10.mvc,mvp,mvvm 架构,怎么选用适合的架构形式

11. 安卓的网络申请

12. 安卓中的数据存储形式

13.fragment 与 activity 间的通信

14.activity 启动形式对 fragment 的影响

15. 域名劫持

16.http header 介绍

17.get 与 post 区别

18. 跨过程通信形式

网易技术一面 -1h

自我介绍

我的项目介绍

  • 华为解 bug 印象最深的

Android

  • TouchEvent 传递过程?onTouchEvent 返回 flase 怎么办?
  • 怎么设计缓存
  • Android 数据长久化
  • 数据库怎么批处理(原理)
  • SP 支不反对多线程?SP 怎么实现多线程
  • View 绘制过程
  • Handler 音讯机制

Java

  • B 线程怎么实现期待 A 线程实现工作
  • 线程怎么完结工作 Java 完结线程的三种办法
  • Java 哪些办法反对中断
  • 设计一个无限资源的申请
  • 怎么设计对象池(对象的存与放回)
  • 线程池的线程什么时候创立
  • Java 中的锁
  • 可重入锁性能

口试题

  • 两个数组替换一个值,让和相等,找到这两个值

网易技术二面 -1h

自我介绍

华为实习

  • 参加的我的项目
  • 解的 bug
  • 参加的编程标准说一下
  • Lint 工具?

设计模式

  • 单例模式
  • volatile 关键字原子性

Android

  • 过程间通信形式(与 linux 过程间通信区别)
  • Socket 怎么验证安全性
  • 播送(全局 本地区别)
  • 怎么实现文件的多过程通信(A 过程改了文件怎么告诉 B 过程读取)
  • 二级缓存怎么设计(网络 数据库 view 间关系)

View

  • Activivty 生命周期
  • onSaveInstanceState onRestoreInstanceState 区别,调用机会
  • 播送注册应该在 Activity 哪个生命周期里
  • 怎么统计 onCreate 的次数
  • Fragment 与 Activity 区别
  • Fragment 生命周期治理
  • Fragment 与 ViewPager 怎么做到反复加载
  • View 绘制过程 MeasureSpec 的三种模式
  • Framelayout LinearLayout ReativeLayout 怎么做到 View 在右下
  • margin padding 区别
  • gone invisible 的区别
  • requestLayout、invalidate 与 postInvalidate 区别
  • Android 动画 怎么勾销循环动画 repeat 模式
  • drawable 与 view 区别 有哪些 drawable

网易技术三面 -50min

自我介绍

我的项目介绍不用说太细

Android

  • 图片传输过程中 URL 加上默认大小如果是 wrap_content 怎么办
  • 图片相干缓寸,编码,内存复用
  • svg (其余图片格式)
  • drawable mutate 理解不
  • okhttp 桥接拦截器和缓存拦截器
  • 设计自定义 DNS 解析器
  • 打点零碎设计: 写文件过程中会有 buffer,此时过程被杀怎么办,怎么设计日志零碎 打点日志被用户篡改怎么办,保障日志安全性
  • 磁盘内存映射原理
  • 有没有看过开源打点框架
  • 平时开发有没有遇到过资源复用
  • 最近理解啥 Android 新动向不
  • 本人学习打算

最初

本人如果有想要去的大公司,肯定要晋升好本人,让本人的能力和素质与公司匹配的上,我也始终置信,机会永远是留给有筹备的人。

在面试前我也筹备了很久,刷了很多大厂面试题,知识点整理出来分享给大家,算是一个感恩回馈吧:

《Android 开发中高级面试合集》

一、Android 根底 + 进阶

1.Activity 启动模式
2.Activity 的启动过程
3. 过程通信
4.Android Binder 之应用层总结与剖析
5. 过程保活办法
6. 从源码理解 handler looper ,messageQueue 思路
7.handler 如何实现延时发消息 postdelay()
8.Android 中为什么主线程不会因为 Looper.loop() 里的死循环卡死?
9.RxJava 原理及如何封装应用
10.okhttp 源码剖析
11.retrofit 源码剖析

12.LeakCanary 外围原理源码浅析
13.LruCache 应用及原理
14.ARouter 原理
15. 注解框架实现原理
16.Android 如何编写基于编译时注解的我的项目
17.RxJava2+Retrofit2+OkHttp3 的根底、封装和我的项目中的应用
18.Rxjava2.0+Retrofit+Okhttp(封装应用)+MVP 框架搭建
19.Android 插件化和热修复常识梳理
20.Android 开发中比拟常见的内存透露问题及解决办法
21. 如何检测和定位 Android 内存透露
22. 图片占据的内存算法
23. 为什么图片须要用软援用,MVP 模式中的 view 接口用弱援用
24. 基于 DataBinding 与 LiveData 的 MVVM 实际
25.App 稳定性优化
26.App 启动速度优化
27.App 内存优化
28.App 绘制优化
29.App 瘦身
30. 网络优化
31.App 电量优化
32. 安卓的平安优化
33. 为什么 WebView 加载会慢呢?
34. 如何优化自定义 View

二、Java 根底 + 进阶

1.HashMap
2.ArrayList
3.LinkedList
4.Hashset 源码剖析
5. 内存模型
6. 垃圾回收算法(JVM)
7. 垃圾回收机制和调用 System.gc() 的区别?
8. 类加载过程
9. 反射
10. 多线程和线程池
11. 创立多线程形式、线程池工作原理
12. 设计模式(六大根本准则、我的项目中罕用的设计模式、手写单例等)
13. 断点续传
14.Java 四大援用
15.Java 的泛型
16. 接口、抽象类的区别
17. 从 java 容器类的设计探讨抽象类和接口的利用

三、数据结构与算法面试题

1. 罕用的数据结构有哪些?
2. 数组
3. 链表
4. 队列 & 堆栈
5. 二叉树
6.HashMap
7. 图
8. 排序算法有哪些?
9. 查找算法
10. 串

四、计算机网络局部

1.HTTP 协定
2.TCP/IP 协定
3.TCP 的三次握手与四次挥手了解及面试题
4. 网页中输出 url,到渲染整个界面的整个过程,以及两头用了什么协定?
5.TCP 和 UDP 的区别?
6.HTTP 的几种申请办法具体介绍
7.HTTP 申请和响应报文的格局,以及罕用状态码
8. 一个 TCP 连贯下面能发多少个 HTTP 申请

因为本套笔记干货内容过多,没有方法一 一展现,须要的敌人能够点击这里收费获取!

正文完
 0