Android开发的面经

530 阅读3分钟

面经

1.Java

1.JVM创建对象流程

​        介绍JVM是如何创建对象的。指针碰撞  tlab 对象填充等。

2.引用类型

​        强,弱,软,虚 介绍各种引用类型的特性,以及使用场景。

3.GC

    #### 1.JVM是怎么进行垃圾回收的

​    有两种算法 引用计数法和引用链。

​     介绍回收算法:标记清除 标记整理 复制清除。以及他们怎么配合使用的。

4.线程

    #### 1.线程状态

线程的几种状态是怎么运作的

2.线程安全

为什么会有安全问题,怎么解决安全问题。介绍各种锁。threadLocal原理。volitile可以解决安全问题吗?为什么?Java锁的转型是怎么样的。介绍几个线程并发的api。 例如CountDownLatch  CyclicBarrier等的使用场景

3.介绍AQS以及原理

4.设计模式

介绍设计原则。 常用的设计模式以及好处。动态代理和静态代理Java的实现。深浅拷贝。

2.网络

 ### 1.Http 和 Https 介绍 区别

2.三次握手和四次回收

3.https通信流程

4.零拷贝技术

3.算法和数据结构

1.数据结构

​    数组、栈和队列、链表(单向链表 、双端链表)、树(二叉树、平衡二叉树、搜索二叉树、红黑树、AVL树 介绍 以及如何保持平衡的)、图(有向图、无向图    拓扑排序)

2.算法

1.X节算法题:

1.给一个随机函数 原本随机返回0和1,现在需要你来升级函数 做到50%返回0 50%返回1.
2.环串 例如"abab"  首尾相连,一定能找到原本的字符串。如图 他有3个连接字串分别是: baba  abab baba 有abab 所以返回true 再例如abc1abc 字串分别是:没有abc1abc 所以返回FALSE   参考图2   解决:KMP算法

图1.
1679403779591.png

图2:
1679403866941.png

3.逆序对  力扣原题 leetcode.cn/problems/sh…

2.X度算法题

1.生产者消费者
2.写一个锁

3.XX教育

1.两数相加  力扣原题    leetcode.cn/problems/ad…

​    主要是考链表操作。没啥算法

2.反转单词 力扣原题   leetcode.cn/problems/re…

​    先使用栈 然后进一步优化 使用双指针。 

3.最大间距 力扣原题  leetcode.cn/problems/ma…    

 暴力解N²   排序优化解 n*logN   最优价N (桶排序)

4.Android

1.基础知识:

1.activity 的四种启动模式的使用场景

2.Bitmap在内存中的计算方式

3.Handler Looper MessageQueue 介绍

4.Fragment、Activity的生命周期

5.RecyclerView的缓存机制

6.View的绘制流程和Touch事件分发

7.NDK基础知识CMake  C++

8.Handler展开讯问 同步消息 异步消息 消息屏障  以及消息的唤醒机制 IdleHandler  Handler内存泄漏的原理

9.Kotlin 不变 逆变 协变

10.应用、Activity的启动流程

11.Binder机制

12.View是怎么被绘画的手机屏幕上的

13.ANR机制  以及如何定位 解决

14.应用的信息是什么时候被加载 解析的

15.MVVM、MVC、MVP区别

16.协程

2.黑科技

1.插件化

2.热修复

3.性能监控方案

3.三方库

1.Glide 工作原理 缓存算法

2.RxJava 核心思想 工作原理

3.OkHttp 工作原理  拦截器职责

4.DataBinding 工作原理

以上是我之前的面试经历,希望可以对大家有所帮助。虽然我没成功 但是希望大家可以成功