写点什么

网易被裁后,68 天吃透这份阿里学长甩我的 Android 面试笔记,竟让我收到字节跳动和小米 offer

用户头像
Android架构
关注
发布于: 6 小时前

(4)如何证明给定的链表是否包含循环?如何找到循环的头节点?(优酷)


(5).两个有交叉的单链表,求交叉点 (华为)


(6).如何得到单链表的长度? (360)


(7).如何在不使用递归的情况下逆转单链表?(小米/美团)


(8).怎么判断链表有环? (滴滴)


1.1.4 队列 &堆栈


(1).如何使用栈实现队列的功能?(广州荔枝 FM)


(2).两个栈实现一个队列(蘑菇街)


(3).两个队列实现一个栈 (腾讯)


(4).对比一下队列和栈,以及它们底部实现 (腾讯)


1.1.5 二叉树


(1).如何在给定的二叉树中执行先序遍历?(百度)


(2).如何实现后序遍历算法?(百度)


(3).如何在给定数组中执行二分法搜索?(苏宁)


(4).已知前序遍历为{1,2,4,7,3,5,6,8},中序遍历为{4,7,2,1,5,3,8,6},它的二叉树是怎么样的?(58)


(5).输入两棵二叉树 A 和 B,判断 B 是不是 A 的子结构。 (爱奇艺)


(6).请实现两个函数,分别用来序列化二叉树和反序列化二叉树。 (YY)


(7).平衡二叉树和红黑树的区别?(字节跳动)


(8).什么是平衡二叉树,它有什么特征 (美团)


(9).B 树,B+树


1.1.6 HashMap


(1).HashMap 的底层原理是什么?线程安全么? (百度( 美团)


(2).HashMap 中 put 是如何实现的? (滴滴)


(3).谈一下 hashMap 中什么时候需要进行扩容,扩容 resize()又是如何实现的?


(4).什么是哈希碰撞?怎么解决? (滴滴.美团)


(5).HashMap 和 HashTable 的区别 (小米)


(6).HashMap 中什么时候需要进行扩容,扩容 resize()是如何实现的? (滴滴)


(7).hashmap concurrenthashmap 原理 (美团)


(8).arraylist 和 hashmap 的区别,为什么取数快?(字节跳动)


1.1.7 图


(1).旋转输出矩阵


(2).给定一个矩阵 int matrixA[m][n],每行每列都是增序的,实现一个算法去寻找矩阵中的某个元素 element. (搜狗)


1.1.8 排序算法有哪些?


(1).top-k 排序堆排序,位图法) (美团)


(2).冒泡排序的手写 (华捷艾米)


(3).堆排序算法的手写 (华捷艾米)


(4).椭圆形场地有两个赛道,可以同时提供两匹马比赛,两匹马比赛后,可以获知两匹马中跑的快的那匹马,但是没有计时工具。问题,如何最优的算法(比赛次数最少),获知 10 匹马中速度最快的三匹马 (阿里)


(5).输入一个整型无序数组,对堆排序(阿里)


(6).如何使用快速排序算法对整数数组进行排序([CVTE)


1.1.9 查找算法


(1).有序数组的二分查找算法(百度)


1.1.10 串


(1).给定一个字符串,请你找出其中不含有重复字符的 最长子串的长度。 (字节跳动)


(2).给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。


1.1.11 请写出以下算法的时间复杂度


冒泡排序法 插入排序法 堆排序法 二叉树排序法


**1.1.1


《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》
浏览器打开:qq.cn.hn/FTe 免费领取
复制代码


2 其他算法**


(1).常用的对称加密算法,有什么不同? (字节跳动)


(2).如何在无序(有负数)的数组中查找是否存在和为 target 的两个数组合,twoSum();(字节)


1.2 Java 基础


(1).什么情况下会发生栈内存溢出?


(2).如果让你写一段栈溢出的代码你会什么写,一个栈大概有多大,为什么?每个线程都有这样大小的一个栈吗? (美团)


(3).JVM 中一次完整的 GC 流程是怎样的,对象如何晋升到老年代?


(4).介绍下 GC 回收机制与分代回收策略。


(5).Java 中有几种引用关系,它们的区别是什么?


(6).GC 收集算法有哪些?它们的特点是什么?


(7).如何判断一个对象是否被回收,有哪些 GC 算法,实际虚拟机使用最多的是什么 GC 算法(美团)


(8).Jvm 内存 结构说一下。


a.描述 JVM 内存模型。(东方头条)


(9).JVM DVM ART 的区别(360)


(10).描述 GC 机制。Class 会不会回收?用不到的 Class 怎么回收?(东方头条)


(11).StackOverFlow 与 OOM 的区别?分别发生在什么时候,JVM 栈中存储的是什么,堆存储的是什么?([美团])


(12).Java 虚拟机和 Dalvik 虚拟机的区别?


(13).请描述 new 一个对象的流程。


(14).Java 对象会不会分配到栈中?


(15).String, Stringbuffer, StringBuilder 的区别是什么?(东方头条)


a.String StringBuffer StringBuilder 在进行字符串操作时的效率;这里主要考察 String 在内存中是如何创建的。(字节跳动)


(16).String 为什么是不可变的?(字节跳动)


a.String 为什么设计成 final 的?


(17).final 、finally、finalize 区别。


(18).抽象类和接口的区别。


(19).重载和重写的区别 (京东)


(20).什么是值传递和引用传递,Java 是值传递还是引用传递?


(21).String s = new String(“”);创建了几个对象?


(22).java 里 equals 和== 区别。


(23).try-catch-finally,try 里有 return,finally 还执行么?


(24).Excption 与 Error 区别。


(25).Static class 与 non static class 的区别。


(26).PathClassLoader 与 DexClassLoader 的区别是什么?


(27).什么是双亲委托机制,为什么需要双亲委托机制?


(28).描述 JVM 类加载过程。


(29).动态代理是什么?如何实现?


(30).动态代理的方法怎么初始化的?(字节跳动)


(31).CGLIB 动态代理(字节跳动)


(32).说说反射的应用场景,哪些框架,原理是什么?


(33).Java 泛型的特点与优缺点,泛型擦除是怎么回事?


(34).List 能否转为 List。


(35).泛型 super 和 extends 的区别。


a.说法 2:Java 的泛型,<? super T> 和 <? extends T> 的区别。


(36).为什么 IO 是耗时操作?


1.3 并发编程


(1).假如只有一个 cpu,单核,多线程还有用吗 ?(美团)


(2).sychronied 修饰普通方法和静态方法的区别?什么是可见性?


(3).锁分哪几类?


(4).CAS 无锁编程的原理。(字节跳动)


(5).ReentrantLock 的实现原理。


(6).AQS 原理 (小米 京东)


(7).Synchronized 的原理以及与 ReentrantLock 的区别。(360)


(8).Synchronized 在 JDK1.8 之后做了哪些优化 (京东)


(9).Synchronized static 与非 static 锁的区别和范围(小米)


(10).volatile 关键字干了什么?(什么叫指令重排) (字节跳动)


(11).volatile 能否保证线程安全?在 DCL 上的作用是什么?


(12).volatile 和 synchronize 有什么区别?(B 站 小米 京东)


(13).两个线程用不同的对象,怎么样?(字节跳动)


(14).什么是守护线程?你是如何退出一个线程的?


(15).sleep 、wait、yield 的区别,wait 的线程如何唤醒它?(东方头条、字节跳动)


(16).sleep 是可中断的么?(小米)


(17).实现非阻塞式生产者消费者(字节跳动)


(18).如何开启一个线程,开启大量线程会有什么问题,如何优化?(美团)


(19).线程生命周期。


(20).ThreadLocal 是什么?


(21).AyncTask 的原理。


(22).AsyncTask 中的任务是串行的还是并行的?


(23).线程池管理线程原理。


(24).线程池的相关参数,有哪些类型的线程池,线程池任务如何调度,任务队列只是先进先出的队列吗,任务有优先级怎么办,知道优先级反转吗? (美团)


(25).有三个线程 T1,T2,T3,怎么确保它们按顺序执行?


(26).Android 中操作多线程的方式有哪些?


(27).怎样获取当前线程是否是主线程 (字节跳动)


(28).HandlerThread 是什么?


(29).线程间如何通信?


(30).RxJava 线程切换原理,RxJava1 和 RxJava2 的区别有哪些?


1.4 网络编程


(1).描述 TCP 三次握手与四次挥手的过程与意义。


a.TCP 的三次握手过程?为什么会采用三次握手,若采用二次握手可以吗?


b.三次握手为什么不是两次一次 五次六次(美团)


(2).TCP 与 UDP 的区别是什么?(腾讯)


(3).Http 与 Https 的关系是什么?


(4).SSL 握手的过程。


(5).Http 的 post 与 get 请求的区别是什么?


(6).输入一个 URL 到浏览器发生了什么?(美团)


Android 相关:


======================================================================


  • 性能优化与源码

  • Android 之 SharedPreferences 内部原理浅析

  • Android 源码分析-消息队列和 Looper

  • Android 源码分析—带你认识不一样的 AsyncTask

  • Android 性能优化之使用线程池处理异步任务

  • Android Context 完全解析,你所不知道的 Context 的各种细节

  • Android 进程间通信(IPC)机制 Binder 简要介绍和学习计划

  • Activity

  • Activity 是什么?

  • 典型情况下的 Activity 生命周期?

  • 异常情况下的 Activity 的生命周期 & 数据如何保存和恢复?

  • 从 Activity A 跳转到 Activity B 之后,然后再点击 back 键之后,它们的生命周期调用流程是什么?

  • 如何统计 Activity 的工作时间?

  • 给我说说 Activity 的启动模式 & 使用场景。

  • 如何在任意位置关掉应用所有 Activity & 如何在任意位置关掉指定的 Activity?

  • Activity 的启动流程(从源码角度解析)?

  • 启动一个其它应用的 Activity 的生命周期分析。

  • BroadcastReceiver

  • 广播是什么?

  • 广播的注册方式有哪些?

  • 广播的分类 & 特性 & 使用场景?

  • 说说系统广播和本地广播的原理 & 区别 & 使用场景。

  • 有两个应用注册了一样的广播,一个是静态,一个是动态,连优先级也一样,那么当广播从系统发出来后,哪个应用先接收到广播?

  • Fragment

  • Android 中 v4 包下 Fragment 和 app 包下 Fragment 的区别是什么?

  • Fragment 的生命周期 & 请结合 Activity 的生命周期再一起说说。

  • 说说 Fragment 如何进行懒加载。

  • ViewPager + Fragment 结合使用会出现内存泄漏吗 & 如何解决?

  • Fragment 如何和 Activity 进行通信 & Fragment 之间如何进行通信?

  • 给我谈谈 Fragment3 种切换的方式以及区别 & 使用场景。

  • getFragmentManager,getSupportFragmentManager,getChildFragmentManager 之间的区别?

  • FragmentPagerAdapter 和 FragmentStatePagerAdapter 区别?

  • Fragment 如何实现类似 Activity 栈的压栈和出栈效果的?

  • 序列化

  • 什么是序列化 & 能用来干什么?

  • Android 中序列化方式有几种?说说它们的区别。

  • 如果想要序列化的类中某些字段不序列化,那么应该怎么做?

  • ** IPC**

  • 说说你对 Android 多进程开发的认识?

  • Android 中进程间通信的方式有哪些?

  • 什么是 AIDL?如何创建一个 AIDL。

  • 文件存储

  • 说说 Android 中数据持久化的方式 & 使用场景。

  • 接触过 MMKV 吗?说说 SharedPreference 和它的区别。

  • 第三方数据库框架用过哪些?有没有自己封装过一个 SQLite 的库?

  • SQLite 是线程安全的吗 & SharedPreference 是线程安全的吗?

  • 请简单的给我说说什么是三级缓存?

  • SharedPreference 的 apply 和 commit 的区别。

  • 谈谈你对 SQLite 事务的认识。

  • ListView & RecyclerView

  • ListView 是什么?如何使用?

  • RecyclerView 是什么?如何使用?如何返回不一样的 Item。

  • ListView 和 RecycyclerView 的区别是什么?

  • 分别讲讲你对 ListView & RecyclerView 的优化经验。

  • 给我说说 RecyclerView 的回收复用机制

  • 说说你是如何给 ListView & RecyclerView 加上拉刷新 & 下拉加载更多机制。

  • 谈谈你是如何对 ListView & RecycleView 进行局部刷新的?

  • 谈谈如何进行分页加载?

  • ScrollView 下嵌套一个 ListView 通常会出现什么问题?

  • 一个 ListView 或者一个 RecyclerView 在显示新闻数据的时候,出现图片错位,可能的原因有哪些 & 如何解决?

  • View 事件分发机制

  • View 绘制机制

  • 布局

  • Binder

  • 动画机制

  • JNI

  • Window & Appliction & Context

  • 通知

  • 对话框(Dialog & DialogFragment & PopWindow)

  • 蓝牙

  • Android 中进程与线程调度之 nice

  • Android 动态链接库 so 的加载原理

  • Toast 原理剖析

  • Android I/O

  • Android 项目构建流程

  • HTTP、HTTPS、TCP/IP、Socket 通信、三次握手四次挥手过程

  • TCP 协议与 UDP 协议的区别

  • 网页中输入 url,到渲染整个界面的整个过程,以及中间用了什么协议?

  • 具体介绍下 TCP/IP

  • TCP 的三次握手和四次挥手,为什么不是两次握手?为什么挥手多一次呢?

  • HTTP 的几种请求方法具体介绍

  • HTTP 请求和响应报文的格式,以及常用状态码。

  • Service 的两种启动方式?区别在哪?

  • 如何保证 Service 不被杀死 ?

  • 能否在 Service 开启耗时操作 ? 怎么做 ?

  • 用过哪些系统 Service ?

  • 了解 ActivityManagerService 吗?发挥什么作用

  • 描述一下 Android 数据持久存储方式?

  • SharedPreferences 的应用场景?注意事项?

  • SharedPrefrences 的 apply 和 commit 有什么区别?

  • 了解 SQLite 中的事务操作吗?是如何做的

  • 使用 SQLite 做批量操作有什么好的方法吗?

  • 如何删除 SQLite 中表的个别字段

  • 使用 SQLite 时会有哪些优化操作?

  • 广播有几种形式 ? 都有什么特点 ?

  • 广播的两种注册方式 ?

  • 广播发送和接收的原理了解吗 ?(Binder 机制、AMS)

  • 谈谈消息机制 Handler 作用 ?有哪些要素 ?流程是怎样的 ?

  • 一个线程能否创建多个 Handler,Handler 跟 Looper 之间的对应关系 ?

  • 软引用跟弱引用的区别

  • Handler 引起的内存泄露原因以及最佳解决方案

  • 为什么系统不建议在子线程访问 UI?

  • Looper 死循环为什么不会导致应用卡死?

  • 使用 Handler 的 postDealy 后消息队列会有什么变化?

  • 可以在子线程直接 new 一个 Handler 吗?怎么做?

  • Message 可以如何创建?哪种效果更好,为什么?

  • 线程池的好处? 四种线程池的使用场景,线程池的几个参数的理解?

  • Android 中还了解哪些方便线程切换的类?

  • 讲讲 AsyncTask 的原理

  • IntentService 有什么用 ?

  • Bitmap 使用需要注意哪些问题 ?

  • Bitmap.recycle()会立即回收么?什么时候会回收?如果没有地方使用这个 Bitmap,为什么垃圾回收不会直接回收?

  • 一张 Bitmap 所占内存以及内存占用的计算

  • Android 中缓存更新策略 ?

  • LRU 的原理 ?

  • 内存泄露和内存溢出的区别 ?AS 有什么工具可以检测内存泄露

  • 性能优化,怎么保证应用启动不卡顿? 黑白屏怎么处理?

  • 强引用置为 null,会不会被回收?

  • ListView 跟 RecyclerView 的区别

  • ListView 的 adapter 是什么 adapter

  • LinearLayout、FrameLayout、RelativeLayout 性能对比,为什么?

  • 谈谈 MVC、MVP 和 MVVM,好在哪里,不好在哪里 ?

  • 封装 p 层之后.如果 p 层数据过大,如何解决?

  • 是否能从 Android 中举几个例子说说用到了什么设计模式 ?

  • 装饰模式和代理模式有哪些区别 ?

  • 如何进行单元测试,如何保证 App 稳定 ?

  • Android 中如何查看一个对象的回收情况 ?

  • Apk 的大小如何压缩 ?

  • 如何通过 Gradle 配置多渠道包?

  • 插件化原理分析

  • 组件化原理

  • 跨组件通信

  • 组件化中路由、埋点的实现

  • Hook 以及插桩技术

  • Android 的签名机制?

  • 会用 Kotlin、Fultter 吗? 谈谈你的理解

  • Kotlin 和 Java 的区别

  • 说一下 Kotlin 的伴生对象

  • 请简单介绍下 Flutter 框架,以及它的优缺点?

  • 介绍下 Flutter 的理念架构

  • 介绍下 Flutter 的 FrameWork 层和 Engine 层,以及它们的作用

  • 介绍下 Widget、State、Context 概念

  • StatefulWidget 的生命周期

  • 简述 Widgets、RenderObjects 和 Elements 的关系

  • 简述 Flutter 的绘制流程

  • 简述 Flutter 的线程管理模型

  • 设计思想与代码质量优化

  • 程序性能优化

  • 内存优化

  • 耗电优化

  • 网络传输与数据存储优化

  • 开发效率优化

  • 热修复设计

  • 插件化框架设计

  • 组件化框架设计.

  • 图片加载框架

  • 网络访问框架设计

  • RXJava 响应式编程框架设计

  • IOC 架构设计

  • Android 架构组件 Jetpack

  • LeakCanary 核心原理源码浅析

  • LruCache 使用及原理

  • ARouter 原理

  • 注解框架实现原理

用户头像

Android架构

关注

还未添加个人签名 2021.10.31 加入

还未添加个人简介

评论

发布
暂无评论
网易被裁后,68天吃透这份阿里学长甩我的Android面试笔记,竟让我收到字节跳动和小米offer