想进BAT一线互联网大厂,该怎么准备技术面试?一位6年老Android的面经总结(附300+面试题)

前言

准备面试其实已经准备了挺久了,当时打算面试准备了差不多以后,跟公司谈谈涨薪的事情,谈不拢的话,就年后直接找其他的公司。谁想到婚假还没休完,老板就在公司宣布了撤出上海的决定,愿意去深圳的就去,不愿意的就自己找工作,给了一个多月的时间找工作,就没有赔偿了,反正公司也没钱。悲哀….

幸好提前准备过,不过都是断断续续的今天看点这个,明天看点那个,三天打鱼两天晒网的,也没用心去准备。这下好了,直接到了最差的地步了,没办法,用心准备吧。

简历内容

基本信息

姓名,联系方式,工作年限,学校,专业,学历

个人技能

  • 工作几年
  • 独立开发
  • 掌握的技能,组件化、插件化、热修复、自定义view
  • 适配、架构、第三方源码、性能优化
  • 职业技能:管理能力、产品能力、沟通能力

这些东西一定要写自己熟悉的,最好项目里面能体现出来的内容

项目经验

项目描述:一句话 工作内容:做了哪些模块,用了什么技术、做过哪些优化,重构方面的内容

项目方面写两到三个项目,最好最近一两家公司做的项目

公司经历

公司名称 时间 工作内容

面试题准备

项目中用到的技术

整理出来,上网找找相关的技术文章和面试题看看,然后用自己的话把这些内容梳理出来,最好有自己的看到,面试官习惯问为什么。

Android知识点

基础:

四大组件、fragment、自定义View、事件分发、滑动处理、handler、AsyncTask、IntentService、ThreadHandler、Bitmap相关的、动画的用法

进阶:

ListView、RecyclerView、AIDL、LruCache、DiskLruCache、View,Window,Activity的关系、进程保活、性能优化、

高阶:

Bindler、AMS、WMS、Context、APP的启动流程、插件化、组件化、热修复什么的等等

第三方框架:

okhttp、retrofit、RxJava等等,熟悉一个框架的源码,然后知道其他框架的优缺点

混合开发:

通常都是RN相关的,目前Flutter用的不多

架构和语言:

MVC、MVP、MVVM、组件化、插件化、热修复等等
上面介绍得不需要全部掌握,看你项目,挑一些内容掌握住,怎么问都不怕得那种,前提是不去一二线得大厂

java知识点

多线程、并发、java基本语法、泛型、hashmap等容器相关的,一般这几差不多了
面试内容准备

自我介绍

就聊聊最近一个项目里面的工作内容,遇到的问题,有什么亮点,难点 这个看项目,有人说我们没什么亮点啊,我只想说你写的代码都没有bug么,花你半天一天时间搞不定的bug就可以聊了

职业规划

技术线路:架构师技术专家 管理线路:开发leader,项目经理什么的

有什么想问的

技术面试官问你:

问问技术团队多少人、技术氛围怎么样的、如果有可能问问他们的技术栈是什么,围绕着技术来问

HR问:

转正的考核标准啊,薪资待遇啊,公司现有规模啊、发展情况啊,表现出对这个公司很感兴趣就行了

注意一点:

考虑好你得目标公司的规模和行业。

小微公司:不看项目随便问,没有逻辑性,闭了眼睛瞎问,对于这种会就会,不会就不会,别怂,反正也不想去。

稍微大点的厂:一般是围绕项目去问,然后衍生出一些技术问题来细问,问的比较深的时候别慌,把你的理解说出来,然后说其他的就不知道了,体现出你的思考和应变能力。

基本上面试就这些的,剩下的就是尽人事听天命了,记住,面试不上有时候不是你得问题,很可能是公司其实不急着找人,或者面试官不行。

谈一下某次面试的经历

我从找工作到找到工作,历时大概有20多天,前后投了不下于百家公司,接收到的面试不到10家,收到第一家面试的通知之前我已经投了3、40家公司,那时候整个人都快崩溃了,后来把心态放平,还是照着自己心里的期望薪资来,不要将就,后来继续投,陆陆续续有两三家公司通知面试,面试感觉还可以。

后来有家公司a通知我面试,这家公司投的比较早了,中间改过一次简历的,最终面完试,技术说我这边过了,后面领导随便聊聊就行,等了两天没消息,以为a公司没希望了,没想到是他们公司要走流程什么的,然后电话给我说让我给个现在工资流水,后面就是定薪资,走审批,体检,后来总算拿到offer。而且转正以后的薪资福利加一起要比我期望的还要高,还有几个月的年终奖,是不是很羡慕,嘿嘿。

总体来说还算幸运吧,至少有个坑让我呆了。

总之,面试需认真谨慎地对待。

300+Android面试题分享

我是整理了一份一千多页的Android 高级开发面试题,但由于篇幅太长了,所以这里就只放上300多的Android方面的面试题,关于面试题解析可以先戳这里获取:【github

第一部分

  1. Overload 和 Override 的区别
  2. String 和 StringBuffer 的区别
  3. 实现一个字符串倒序
  4. 抽象类与接口的区别(abstract 与 interface 的区别)
  5. 集合的实现类与区别
  6. 线程有几种状态,分别是哪些(调用 run()和调用 start()的区别)
  7. Final、finally、finanlize()的区别
  8. J2EE 是什么?请对以下在 J2EE 中常用的名词进行解释(或简单描述)
  9. j2ee 常用的设计模式?说明工厂模式
  10. 开发中都用到了那些设计模式?用在什么场合
  11. 常用设计模式及应用场景
  12. 广播如何调用,有什么方式,各自的区别,实现广播的意图是什么,哪里用到
  13. android 系统架构
  14. Android 的四大组件是什么?它们的作用是什么
  15. Activity 生命周期?保存 activity 的一些信息在哪个生命周期方法中
  16. Activity 的 onSaveInstanceState() 和 onRestoreInstanceState()
  17. activity 在屏幕旋转时的生命周期
  18. Android 中 asset 文件夹和 raw 文件夹区别
  19. Android 中的五种存储方式及其应用场景
  20. 什么是 ANR 如何避免它?(Android 线程间的通信方式 )
  21. listview 优化策略
  22. ListView 分页加载实现思路
  23. ListView 图片异步加载实现思路
  24. Intent 的原理、作用、可以传递哪些类型的参数
  25. 如何实现屏幕分辨率的自适应(布局、九线图、目录)
  26. 简述 Android 中的 IPC 机制
  27. Android 程序入口如何判断
  28. android 哪几种方式访问网络
  29. 说说 HttpClient 的通信过程
  30. 移动互联数据交互格式有哪些及其区别

第二部分

  1. XML 解析有哪几种?各自优缺点,官方推荐使用哪种
  2. sax 解析代码
  3. 百度地图核心类,及实现的功能
  4. GC 内存泄露在什么情况下会出现?怎么解决
  5. android 内存的优化
  6. 加载大图片的时候如何防止内存溢出
  7. Android 缓存机制
  8. 如何实现消息推送
  9. MVC 在 Android 中的应用
  10. Android 自定义组件实现思路
  11. 版本更新的实现思路
  12. 播放视频有哪些实现方式
  13. NDK 开发流程?(JNI 运行原理)
  14. 如何实现一键退出
  15. AndroidManifest.xml 清单文件<Activity>标签中属性的含义
  16. 如何将一个 Activity 设置成窗口的样式
  17. 谈谈 UI 中, Padding 和 Margin 有什么区别,gravity 与 layout_gravity 的区别
  18. 实现手风琴效果
  19. Android SDK 3.0(HoneyComb)及 4.0(Ice Cream)新特性
  20. android 客户端如何实现自动登录
  21. 请介绍下 Android 中常用的五种布局。
  22. android 中的动画有哪几类,它们的特点和区别是什么
  23. activity 的启动模式有哪些?是什么含义
  24. 跟 activity 和 Task 有关的 Intent 启动方式有哪些?其含义是
  25. 如何启用 Service,如何停用 Service。
  26. Handler
  27. 说明 handler 机制的原理
  28. 什么情况会导致 Force Close ?如何避免?能否捕获导致其的异常
  29. 请介绍下 ContentProvider 是如何实现数据共享的。
  30. Service 和 Thread 的区别

第三部分

  1. Android 异常
  2. IntentService 有何优点
  3. Activity
  4. 如何将一个 Activity 设置成窗口的样式
  5. 如何退出 Activity?如何安全退出已调用多个 Activity 的 Application
  6. AIDL 的全称是什么?如何工作?能处理哪些类型的数据
  7. 请解释下 Android 程序运行时权限与文件系统权限的区别
  8. 系统上安装了多种浏览器,能否指定某浏览器访问指定页面?请说明原由
  9. android 系统的优势和不足
  10. Android dvm 的进程和 Linux 的进程, 应用程序的进程是否为同一个概念
  11. 嵌入式操作系统内存管理有哪几种, 各有何特性
  12. 什么是嵌入式实时操作系统, Android 操作系统属于实时操作系统吗
  13. 一条最长的短信息约占多少 byte
  14. 用算法调整图片的透明度
  15. 如何将 SQLite 数据库(dictionary.db 文件)与 apk 文件一起发布
  16. sqlite 的用处及用法, 哪里用过
  17. sqlite,修改,添加字段,版本更新,排序,默认排序
  18. 如何建一个“aaa.db”数据库,如何建一个 user 表;写出增删改查语句
  19. SQLite 线程安全吗?sqlite3_threadsafe()来确实是否线程安全版本
  20. 怎么提高 sqlite 的效率
  21. 如何将打开 res aw 目录中的数据库文件
  22. DDMS 和 TraceView 的区别
  23. java 中如何引用本地语言
  24. ListView 切换奇偶行背景色
  25. getView()方法中判断 position 的奇偶性, 然后给 ConvertView 设置背景色
  26. EditText 单行显示
  27. oom 避免以及产生方式,遇到过几种 OOM
  28. throw 与 throws 区别
  29. LOST.DIR
  30. 设置界面怎么做的

第四部分

  1. ui 效果图介绍布局
  2. login 模块怎么做的
  3. 点击登录按钮的时候,会从 server 端获得什么?传送什么
  4. android 客户端如何实现自动登录
  5. 版本更新,从 server 端获得什么,通过什么进行更新
  6. Fragment 和 Activity 之间的联系
  7. Fragment 如何实现 Activity 跳转,你怎么处理 Fragment 之间的信息交互
  8. fragment 在哪个方法里实现代码
  9. res 和 assets 资源文件的作用分别是什么,怎么读取
  10. 了解 pad 开发吗
  11. 常用的适配有哪些,如何进行优化
  12. 应用换肤有什么方案可以实现
  13. 异步任务中允许有多个线程同时进行吗
  14. 图片是怎么获取的
  15. 文件的下载
  16. 图片的下载
  17. 缓存区的图片如何适当的释放
  18. 图片缓存到哪里
  19. 那你的图片是如何请求的
  20. 图文混排怎么实现
  21. 相册缩略图是怎么实现的
  22. 下拉刷新的实现思路,反弹的效果是怎么实现的
  23. 自定义的 View
  24. 自定义控件用过哪些?对自定义控件是怎么看的
  25. 瀑布流的实现思路
  26. 聊天窗口的实现
  27. android 的 dvm 和 Linux 进程是一样的吗
  28. 监听模式
  29. 如何刷新 view
  30. Listview

第五部分

  1. viewPager 左右切屏
  2. listview 加载图片错位,什么原因导致的
  3. ListView 中条目中显示 webView 会怎么样
  4. 用 listview 进行快速翻页,如何解决内存溢出
  5. listview 快速滑动时,加载几条数据
  6. 实现 listview 分页
  7. 动画分为哪几种,各自的特点和区别
  8. 写出 Socket 服务器与客户端交互的代码和实现思路
  9. 谈谈对 Http 的理解
  10. 谈谈递归
  11. 写出 Activity 里的方法都是在什么情况下执行
  12. dp 与 sp 的区别
  13. java 有那些排序,冒泡代码
  14. Java 线程实现方式和区别
  15. Android 中布局、区别、应用场景
  16. 线程间通讯
  17. 进程间通讯
  18. 判断网络
  19. 网络代理
  20. HTTP 的 post 和 get 方法的区别
  21. 怎么判断服务端返回的数据类型
  22. 栈,队列代码
  23. 服务 service
  24. 多线程下载,离线下载
  25. 支付方式
  26. 如果想改变分辨率但不动原来布局,实现思路是什么
  27. java 常用的处理异常的机制,原理及应用
  28. 一段字符串“abdecffr”,请输出只出现一次的字母
  29. 输入一个数,求其二进数中有多少个 1
  30. 有一个 pizza 生产线

第六部分

  1. 推送了解吗?推送底层代码掌握吗
  2. asynctack 原理
  3. NDK 具体说一下
  4. Service 结合代码说一下,原理
  5. 当内存不足时,如何对尚未关闭的应用程序进行回收
  6. service 的运行级别
  7. service 如何一直保持在后台运行
  8. service 的启动方式
  9. 软引用怎么用?为什么要用软引用
  10. 还有一个 Service 是建立在哪个线程上面
  11. 接口都有哪些内容
  12. 接口是否可继承接口
  13. 如何通过程序进行对服务器的接口调用,写出具体过程
  14. 分页加载思路
  15. 分页加载需要传递哪些参数
  16. 讯飞语音在什么地方用到
  17. 消息推送
  18. LBS 定位用到哪个地图?为什么要使用这个?实现了哪些功能
  19. 地图中怎样获得附近的信息
  20. 百度地图显示周边招聘信息
  21. 移动互联使用了哪种方式
  22. 集合方面的底层理解
  23. 每个 item 都是不同的内容,怎么弄
  24. 有没有自己写过 NDK
  25. 一个版本的 app 不更新,只是给他赠加或着减少一个功能,怎么弄
  26. 架构的情况
  27. 多线程的讲解
  28. 线程的异常怎么处理
  29. 请求网络用什么,http 的使用
  30. 解释 intent 和 activity 的区别

第七部分

  1. 如何处理内存溢出
  2. 如何去除一个字符串首尾的空格
  3. 如何把一个字符串转换成 asll 码
  4. 得到一个数组中出现次数最多的数
  5. 手机 QQ 聊天框冒泡效果怎么做
  6. groupby 是干什么的
  7. 你 android 应用假如你手机设置了其他语言你的应用语言会变吗
  8. 了解后台吗,对后台的认识
  9. '学 java'内存中占多少个字节
  10. Intent 可以传递那些数据
  11. DDMS 与 TraceView 的区别
  12. 横竖屏切换不设置属性会怎么样
  13. 单例类在 android 中哪种更合适
  14. 一串字符串编写程序翻转 split()
  15. json 写实体类
  16. 如果标题过长超出界面,请写出你的解决方法
  17. 开发 android 应用怎样减少耗电量
  18. 提供额外的两个 int 域和一个 Object 域
  19. android 开发过程有几种缓存方式,并说明缺点
  20. Activity 相关
  21. Bitemap 内存溢出解决方法
  22. 推送
  23. 文件传输
  24. 缓存 app 缓存
  25. 边距测试
  26. Java 数据结构
  27. 常用的分辨率
  28. Ui 一般有几套,是什么格式的,.9 格式的还是什么格式的
  29. onCreateView 和 onViewCreated 之间的区别
  30. 继承与组合的关系

第八部分

  1. IPC 机制具体解释
  2. aidl 具体解释
  3. 为什么要有 NDK
  4. 为什么 json 与 js 交互方便
  5. 进程与线程的区别
  6. 当一个 activity 退出之后在进程中会不会杀死
  7. jvm 的内存分配
  8. MVC 模式的理解
  9. 排序有了解过吗?及其实现复杂度
  10. android 手机的密度,你如何对屏幕密度进行自适应
  11. handler 的理解
  12. 对于 instancevariable 和 localvarial,JVM 在少女情怀内存时有什么区别
  13. Java 线程都有哪些状态?列举你所知道的线程同步方法
  14. 如何避免比不加载图片混乱的问题
  15. AysnTask 最多可以开启几个线程
  16. 数据库如何升级(添加字段什么的)
  17. WebService
  18. IntentService 的用法
  19. service 的启动
  20. 异步任务
  21. 强引用
  22. 新浪微博头像设置
  23. 加密算法
  24. 高德地图
  25. asynctask 和 handler 的区别
  26. 跳转图片释放
  27. shareprefercnce 保存用户名密码时候怎么加密
  28. 离线下载怎么实现
  29. 用过 viewstub 吗?include 呢
  30. android 应用程序自启动

第九部分

  1. service 是在主线程中吗?service 中可不可以耗时操作
  2. 数据库优化
  3. socket
  4. 屏幕适配
  5. 关于图片压缩,用算法实现
  6. 关于第三方分享
  7. MVC 在安卓的体现
  8. surfaceview 和 VIEW 和 GLsurfaceview 的区别
  9. 都用过什么模式,经常用到的服务器是什么
  10. 编写代码输入安卓 abc 汉字 6 字节输出安卓 abc 而不是安卓 abc
  11. 看一个 for 循环循环了几次
  12. 怎杨跳出一个循环继续执行下一个循环
  13. 使一个字符串逆序输出 Stringa=abcde
  14. 一个 for 循环,每次 i+=2,截取字符串输出。
  15. Math 的操作,其实用了好几个方法,选择正确的结果
  16. 线程的状态
  17. 消息推送,xmpp 轮询
  18. udp/tcp
  19. 动画
  20. intent 的几种模式
  21. 分页加载,每页 15 条数据,拉到底部自动加载数据。
  22. Android 系统架构从小到大写
  23. 用代码手写堆栈
  24. 即时通讯
  25. 多人聊天,视频,语音
  26. 侧拉效果
  27. 侧拉多界面,组件焦点
  28. 别的公司封装好的播放器,从 C 中提取源码
  29. AsyTask 的三个参数是什么
  30. finish()与 System.exit(0)的区别,再谈谈你对退出的理解。

第十部分

  1. 反编译和防止反编译
  2. tcp/ip,通讯思路
  3. UDP,通讯思路
  4. hTTP 请求网络流程,HTTPclient
  5. httpUrlconnection
  6. Java 对象池
  7. Int 与 intger 的区别
  8. 做项目的时候遇到哪些印象深刻的问题
  9. 你在安卓开发中的心得
  10. 网络互联使用哪种方式
  11. 动画
  12. 书架跟随书滚动
  13. 3D 效果如何实现的
  14. 读取详细的新闻信息里面的图片读取多张不固定显示
  15. 服务器端使用什么搭建的
  16. 怎么调用 android 自带的功能
  17. 图片的优化
  18. Android 每个进程分配的内存是多少
  19. 都使用过那些第三方平台
  20. 一个不同公司用一个 APP 的思路
  21. 平台兼容性
  22. 重复登录怎么解决比如两台设备同时登录一个账号
  23. 是每次获取图片都用 AsyncTask 获取吗
  24. 用户体验度:获取数据之前等待的时间是怎么做的
  25. 从网络获取图片的大概思路
  26. 是否做过视频类,关于视频播放使用的什么方式
  27. 大量耗时操作使用哪种方式,为什么
  28. 建立一个 Android 工程,实现一个简单的书籍管理应用
  29. 图片上传怎么做的
  30. 如果图片太大怎么处理
  31. 项目开发流程
  32. GSON 的使用
  33. 讯飞语音在什么地方用到
  34. LBS 定位用到哪个地图?为什么要使用这个?实现了哪些功能
  35. 分页加载需要传递哪些参数
  36. 移动互联使用了哪种方式
  37. java.exe 指的是
  38. 掌握 Android 项目目录结构
  39. 掌握 AndroidManifest.xml 结构(应用程序入口)
  40. 掌握模拟器的使用以及常用 adb 命令

以上只是一份面试大纲,相关的详细知识点解析我都已经整理成了文档,接下来用部分截图列举出来:

目录

Activity面试题

Fragment面试题

Service面试题

Handler面试题

..........

要想面试成功进大厂,面试前的准备肯定是要很充分的,除了上面的面试资源分享,我还整理了以下安卓面试复习资源给大家,有需要的朋友自行领取:Android高级开发面试题及答案整理

猜你喜欢

转载自blog.csdn.net/weixin_44339238/article/details/111048800