写点什么

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

用户头像
Android架构
关注
发布于: 2021 年 11 月 03 日

基本信息

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


个人技能


  • 工作几年

  • 独立开发

  • 掌握的技能,组件化、插件化、热修复、自定义 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. 开发中都用到了那些


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


设计模式?用在什么场合


  1. 常用设计模式及应用场景

  2. 广播如何调用,有什么方式,各自的区别,实现广播的意图是什么,哪里用到

  3. android 系统架构

  4. Android 的四大组件是什么?它们的作用是什么

  5. Activity 生命周期?保存 activity 的一些信息在哪个生命周期方法中

  6. Activity 的 onSaveInstanceState() 和 onRestoreInstanceState()

  7. activity 在屏幕旋转时的生命周期

  8. Android 中 asset 文件夹和 raw 文件夹区别

  9. Android 中的五种存储方式及其应用场景

  10. 什么是 ANR 如何避免它?(Android 线程间的通信方式 )

  11. listview 优化策略

  12. ListView 分页加载实现思路

  13. ListView 图片异步加载实现思路

  14. Intent 的原理、作用、可以传递哪些类型的参数

  15. 如何实现屏幕分辨率的自适应(布局、九线图、目录)

  16. 简述 Android 中的 IPC 机制

  17. Android 程序入口如何判断

  18. android 哪几种方式访问网络

  19. 说说 HttpClient 的通信过程

  20. 移动互联数据交互格式有哪些及其区别


第二部分


  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. 分页加载需要传递哪些参数

用户头像

Android架构

关注

还未添加个人签名 2021.10.31 加入

还未添加个人简介

评论

发布
暂无评论
想进BAT一线互联网大厂,该怎么准备技术面试?一位6年老Android的面经总结