想进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 清单文件标签中属性的含义

  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 的区别

第七部分
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Android)

总结

【Android 详细知识点思维脑图(技能树)】

image

其实Android开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。

虽然 Android 没有前几年火热了,已经过去了会四大组件就能找到高薪职位的时代了。这只能说明 Android 中级以下的岗位饱和了,现在高级工程师还是比较缺少的,很多高级职位给的薪资真的特别高(钱多也不一定能找到合适的),所以努力让自己成为高级工程师才是最重要的。

这里附上上述的面试题相关的几十套字节跳动,京东,小米,腾讯、头条、阿里、美团等公司19年的面试题。把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节。

由于篇幅有限,这里以图片的形式给大家展示一小部分。

网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。

《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门即可获取!

【Android 详细知识点思维脑图(技能树)】

[外链图片转存中…(img-wJ4FJQUY-1712419889604)]

其实Android开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。

虽然 Android 没有前几年火热了,已经过去了会四大组件就能找到高薪职位的时代了。这只能说明 Android 中级以下的岗位饱和了,现在高级工程师还是比较缺少的,很多高级职位给的薪资真的特别高(钱多也不一定能找到合适的),所以努力让自己成为高级工程师才是最重要的。

这里附上上述的面试题相关的几十套字节跳动,京东,小米,腾讯、头条、阿里、美团等公司19年的面试题。把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节。

由于篇幅有限,这里以图片的形式给大家展示一小部分。

[外链图片转存中…(img-lZFMbaTb-1712419889604)]

网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。

《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门即可获取!
  • 16
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值