写点什么

2021 金三银四 Android 面试心得,已拿到多个 offer

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

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


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


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


1.1.9 查找算法


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


1.1.10 串


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


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


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


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


1.1.12 其他算法


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


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


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、RenderObje


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


cts 和 Elements 的关系


  • 简述 Flutter 的绘制流程

  • 简述 Flutter 的线程管理模型

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

  • 程序性能优化

  • 内存优化

  • 耗电优化

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

  • 开发效率优化

  • 热修复设计

  • 插件化框架设计

  • 组件化框架设计.

  • 图片加载框架

  • 网络访问框架设计

  • RXJava 响应式编程框架设计

  • IOC 架构设计

  • Android 架构组件 Jetpack

  • LeakCanary 核心原理源码浅析

  • LruCache 使用及原理

  • ARouter 原理

  • 注解框架实现原理

  • Android 如何编写基于编译时注解的项目

  • RxJava2+Retrofit2+OkHttp3 的基础、封装和项目中的使用

  • Rxjava2.0+Retrofit+Okhttp(封装使用)+MVP 框架搭建

  • Android 插件化和热修复知识梳理

  • Android 开发中比较常见的内存泄漏问题及解决办法

  • 如何检测和定位 Android 内存泄漏

  • 图片占据的内存算法

  • 为什么图片需要用软引用,MVP 模式中的 view 接口用弱引用

  • 基于 DataBinding 与 LiveData 的 MVVM 实践

  • App 稳定性优化

  • App 启动速度优化

  • App 内存优化

  • App 绘制优化

  • App 瘦身

  • 网络优化

  • App 电量优化

  • 安卓的安全优化

  • 为什么 WebView 加载会慢呢?

  • 如何优化自定义 View


(1). Acitvity 的生命周期是什么样的?


a. Acitvity 的生命周期,如何摧毁一个 Activity?


(2). Activity 的 4 大启动模式,与开发中需要注意的问题,如 onNewIntent() 的调用;


a. Activity 的启动模式,区别


b. singleInstance 如果不指定栈名,是怎么分配的?


(3). Intent 显示跳转与隐式跳转,如何使用?


(4). Activity A 跳转 B,B 跳转 C,A 不能直接跳转到 C,A 如何传递消息给 C?


(5). Activity 如何保存状态的?


(6). 请描诉 Activity 的启动流程,从点击图标开始。


a. APP 是怎么启动的?


b. 启动一个 Activity 的流程分析


(7). Service 的生命周期是什么样的?


a. Service 两种生命周期以及区别


(8). 你会在什么情况下使用 Service?


(9). startServer 和 bindServier 的区别?


(10). Service 和 Thread 的区别?


(11). IntentService 与 Service 的区别?


(12). ContentProvider 如何自定义与使用场景是什么?


(13). BroadcastReciver 的静态注册与动态注册的区别?


(14). 广播的分类与工作原理


(15). 可以再 onReceive 中开启线程么,会有什么问题?


(16). 什么是有序广播?


(17). Application、Activity、Service 中 context 的区别?能否启动一个 activity、dialog?


(18). Fragment 的生命周期?


(19). Fragment 的构造函数为啥不让传参?


(20). Fragment add 与 replace 的区别,分别对 Fragment 的生命周期影响

用户头像

Android架构

关注

还未添加个人签名 2021.10.31 加入

还未添加个人简介

评论

发布
暂无评论
2021金三银四Android面试心得,已拿到多个offer