前言
准备面试其实已经准备了挺久了,当时打算面试准备了差不多以后,跟公司谈谈涨薪的事情,谈不拢的话,就年后直接找其他的公司。谁想到婚假还没休完,老板就在公司宣布了撤出上海的决定,愿意去深圳的就去,不愿意的就自己找工作,给了一个多月的时间找工作,就没有赔偿了,反正公司也没钱。悲哀….
幸好提前准备过,不过都是断断续续的今天看点这个,明天看点那个,三天打鱼两天晒网的,也没用心去准备。这下好了,直接到了最差的地步了,没办法,用心准备吧。
简历内容
基本信息
姓名,联系方式,工作年限,学校,专业,学历
个人技能
-
工作几年
-
独立开发
-
掌握的技能,组件化、插件化、热修复、自定义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】
第一部分
-
Overload 和 Override 的区别
-
String 和 StringBuffer 的区别
-
实现一个字符串倒序
-
抽象类与接口的区别(abstract 与 interface 的区别)
-
集合的实现类与区别
-
线程有几种状态,分别是哪些(调用 run()和调用 start()的区别)
-
Final、finally、finanlize()的区别
-
J2EE 是什么?请对以下在 J2EE 中常用的名词进行解释(或简单描述)
-
j2ee 常用的设计模式?说明工厂模式
-
开发中都用到了那些设计模式?用在什么场合
-
常用设计模式及应用场景
-
广播如何调用,有什么方式,各自的区别,实现广播的意图是什么,哪里用到
-
android 系统架构
-
Android 的四大组件是什么?它们的作用是什么
-
Activity 生命周期?保存 activity 的一些信息在哪个生命周期方法中
-
Activity 的 onSaveInstanceState() 和 onRestoreInstanceState()
-
activity 在屏幕旋转时的生命周期
-
Android 中 asset 文件夹和 raw 文件夹区别
-
Android 中的五种存储方式及其应用场景
-
什么是 ANR 如何避免它?(Android 线程间的通信方式 )
-
listview 优化策略
-
ListView 分页加载实现思路
-
ListView 图片异步加载实现思路
-
Intent 的原理、作用、可以传递哪些类型的参数
-
如何实现屏幕分辨率的自适应(布局、九线图、目录)
-
简述 Android 中的 IPC 机制
-
Android 程序入口如何判断
-
android 哪几种方式访问网络
-
说说 HttpClient 的通信过程
-
移动互联数据交互格式有哪些及其区别
第二部分
-
XML 解析有哪几种?各自优缺点,官方推荐使用哪种
-
sax 解析代码
-
百度地图核心类,及实现的功能
-
GC 内存泄露在什么情况下会出现?怎么解决
-
android 内存的优化
-
加载大图片的时候如何防止内存溢出
-
Android 缓存机制
-
如何实现消息推送
-
MVC 在 Android 中的应用
-
Android 自定义组件实现思路
-
版本更新的实现思路
-
播放视频有哪些实现方式
-
NDK 开发流程?(JNI 运行原理)
-
如何实现一键退出
-
AndroidManifest.xml 清单文件标签中属性的含义
-
如何将一个 Activity 设置成窗口的样式
-
谈谈 UI 中, Padding 和 Margin 有什么区别,gravity 与 layout_gravity 的区别
-
实现手风琴效果
-
Android SDK 3.0(HoneyComb)及 4.0(Ice Cream)新特性
-
android 客户端如何实现自动登录
-
请介绍下 Android 中常用的五种布局。
-
android 中的动画有哪几类,它们的特点和区别是什么
-
activity 的启动模式有哪些?是什么含义
-
跟 activity 和 Task 有关的 Intent 启动方式有哪些?其含义是
-
如何启用 Service,如何停用 Service。
-
Handler
-
说明 handler 机制的原理
-
什么情况会导致 Force Close ?如何避免?能否捕获导致其的异常
-
请介绍下 ContentProvider 是如何实现数据共享的。
-
Service 和 Thread 的区别
第三部分
-
Android 异常
-
IntentService 有何优点
-
Activity
-
如何将一个 Activity 设置成窗口的样式
-
如何退出 Activity?如何安全退出已调用多个 Activity 的 Application
-
AIDL 的全称是什么?如何工作?能处理哪些类型的数据
-
请解释下 Android 程序运行时权限与文件系统权限的区别
-
系统上安装了多种浏览器,能否指定某浏览器访问指定页面?请说明原由
-
android 系统的优势和不足
-
Android dvm 的进程和 Linux 的进程, 应用程序的进程是否为同一个概念
-
嵌入式操作系统内存管理有哪几种, 各有何特性
-
什么是嵌入式实时操作系统, Android 操作系统属于实时操作系统吗
-
一条最长的短信息约占多少 byte
-
用算法调整图片的透明度
-
如何将 SQLite 数据库(dictionary.db 文件)与 apk 文件一起发布
-
sqlite 的用处及用法, 哪里用过
-
sqlite,修改,添加字段,版本更新,排序,默认排序
-
如何建一个“aaa.db”数据库,如何建一个 user 表;写出增删改查语句
-
SQLite 线程安全吗?sqlite3_threadsafe()来确实是否线程安全版本
-
怎么提高 sqlite 的效率
-
如何将打开 res aw 目录中的数据库文件
-
DDMS 和 TraceView 的区别
-
java 中如何引用本地语言
-
ListView 切换奇偶行背景色
-
getView()方法中判断 position 的奇偶性, 然后给 ConvertView 设置背景色
-
EditText 单行显示
-
oom 避免以及产生方式,遇到过几种 OOM
-
throw 与 throws 区别
-
LOST.DIR
-
设置界面怎么做的
第四部分
-
ui 效果图介绍布局
-
login 模块怎么做的
-
点击登录按钮的时候,会从 server 端获得什么?传送什么
-
android 客户端如何实现自动登录
-
版本更新,从 server 端获得什么,通过什么进行更新
-
Fragment 和 Activity 之间的联系
-
Fragment 如何实现 Activity 跳转,你怎么处理 Fragment 之间的信息交互
-
fragment 在哪个方法里实现代码
-
res 和 assets 资源文件的作用分别是什么,怎么读取
-
了解 pad 开发吗
-
常用的适配有哪些,如何进行优化
-
应用换肤有什么方案可以实现
-
异步任务中允许有多个线程同时进行吗
-
图片是怎么获取的
-
文件的下载
-
图片的下载
-
缓存区的图片如何适当的释放
-
图片缓存到哪里
-
那你的图片是如何请求的
-
图文混排怎么实现
-
相册缩略图是怎么实现的
-
下拉刷新的实现思路,反弹的效果是怎么实现的
-
自定义的 View
-
自定义控件用过哪些?对自定义控件是怎么看的
-
瀑布流的实现思路
-
聊天窗口的实现
-
android 的 dvm 和 Linux 进程是一样的吗
-
监听模式
-
如何刷新 view
-
Listview
第五部分
-
viewPager 左右切屏
-
listview 加载图片错位,什么原因导致的
-
ListView 中条目中显示 webView 会怎么样
-
用 listview 进行快速翻页,如何解决内存溢出
-
listview 快速滑动时,加载几条数据
-
实现 listview 分页
-
动画分为哪几种,各自的特点和区别
-
写出 Socket 服务器与客户端交互的代码和实现思路
-
谈谈对 Http 的理解
-
谈谈递归
-
写出 Activity 里的方法都是在什么情况下执行
-
dp 与 sp 的区别
-
java 有那些排序,冒泡代码
-
Java 线程实现方式和区别
-
Android 中布局、区别、应用场景
-
线程间通讯
-
进程间通讯
-
判断网络
-
网络代理
-
HTTP 的 post 和 get 方法的区别
-
怎么判断服务端返回的数据类型
-
栈,队列代码
-
服务 service
-
多线程下载,离线下载
-
支付方式
-
如果想改变分辨率但不动原来布局,实现思路是什么
-
java 常用的处理异常的机制,原理及应用
-
一段字符串“abdecffr”,请输出只出现一次的字母
-
输入一个数,求其二进数中有多少个 1
-
有一个 pizza 生产线
第六部分
-
推送了解吗?推送底层代码掌握吗
-
asynctack 原理
-
NDK 具体说一下
-
Service 结合代码说一下,原理
-
当内存不足时,如何对尚未关闭的应用程序进行回收
-
service 的运行级别
-
service 如何一直保持在后台运行
-
service 的启动方式
-
软引用怎么用?为什么要用软引用
-
还有一个 Service 是建立在哪个线程上面
-
接口都有哪些内容
-
接口是否可继承接口
-
如何通过程序进行对服务器的接口调用,写出具体过程
-
分页加载思路
-
分页加载需要传递哪些参数
-
讯飞语音在什么地方用到
-
消息推送
-
LBS 定位用到哪个地图?为什么要使用这个?实现了哪些功能
-
地图中怎样获得附近的信息
-
百度地图显示周边招聘信息
-
移动互联使用了哪种方式
-
集合方面的底层理解
-
每个 item 都是不同的内容,怎么弄
-
有没有自己写过 NDK
-
一个版本的 app 不更新,只是给他赠加或着减少一个功能,怎么弄
-
架构的情况
-
多线程的讲解
-
线程的异常怎么处理
-
请求网络用什么,http 的使用
-
解释 intent 和 activity 的区别
第七部分
-
如何处理内存溢出
-
如何去除一个字符串首尾的空格
-
如何把一个字符串转换成 asll 码
-
得到一个数组中出现次数最多的数
-
手机 QQ 聊天框冒泡效果怎么做
-
groupby 是干什么的
-
你 android 应用假如你手机设置了其他语言你的应用语言会变吗
-
了解后台吗,对后台的认识
-
'学 java'内存中占多少个字节
-
Intent 可以传递那些数据
-
DDMS 与 TraceView 的区别
-
横竖屏切换不设置属性会怎么样
-
单例类在 android 中哪种更合适
-
一串字符串编写程序翻转 split()
-
json 写实体类
-
如果标题过长超出界面,请写出你的解决方法
-
开发 android 应用怎样减少耗电量
-
提供额外的两个 int 域和一个 Object 域
-
android 开发过程有几种缓存方式,并说明缺点
-
Activity 相关
-
Bitemap 内存溢出解决方法
-
推送
-
文件传输
-
缓存 app 缓存
-
边距测试
-
Java 数据结构
-
常用的分辨率
-
Ui 一般有几套,是什么格式的,.9 格式的还是什么格式的
-
onCreateView 和 onViewCreated 之间的区别
-
继承与组合的关系
第八部分
-
IPC 机制具体解释
-
aidl 具体解释
-
为什么要有 NDK
-
为什么 json 与 js 交互方便
-
进程与线程的区别
-
当一个 activity 退出之后在进程中会不会杀死
-
jvm 的内存分配
-
MVC 模式的理解
-
排序有了解过吗?及其实现复杂度
-
android 手机的密度,你如何对屏幕密度进行自适应
-
handler 的理解
-
对于 instancevariable 和 localvarial,JVM 在少女情怀内存时有什么区别
-
Java 线程都有哪些状态?列举你所知道的线程同步方法
-
如何避免比不加载图片混乱的问题
-
AysnTask 最多可以开启几个线程
-
数据库如何升级(添加字段什么的)
-
WebService
-
IntentService 的用法
-
service 的启动
-
异步任务
-
强引用
-
新浪微博头像设置
-
加密算法
-
高德地图
-
asynctask 和 handler 的区别
-
跳转图片释放
-
shareprefercnce 保存用户名密码时候怎么加密
-
离线下载怎么实现
-
用过 viewstub 吗?include 呢
-
android 应用程序自启动
第九部分
-
service 是在主线程中吗?service 中可不可以耗时操作
-
数据库优化
-
socket
-
屏幕适配
-
关于图片压缩,用算法实现
-
关于第三方分享
-
MVC 在安卓的体现
-
surfaceview 和 VIEW 和 GLsurfaceview 的区别
-
都用过什么模式,经常用到的服务器是什么
-
编写代码输入安卓 abc 汉字 6 字节输出安卓 abc 而不是安卓 abc
-
看一个 for 循环循环了几次
-
怎杨跳出一个循环继续执行下一个循环
-
使一个字符串逆序输出 Stringa=abcde
-
一个 for 循环,每次 i+=2,截取字符串输出。
-
Math 的操作,其实用了好几个方法,选择正确的结果
-
线程的状态
-
消息推送,xmpp 轮询
-
udp/tcp
-
动画
-
intent 的几种模式
-
分页加载,每页 15 条数据,拉到底部自动加载数据。
-
Android 系统架构从小到大写
-
用代码手写堆栈
-
即时通讯
-
多人聊天,视频,语音
-
侧拉效果
-
侧拉多界面,组件焦点
-
别的公司封装好的播放器,从 C 中提取源码
-
AsyTask 的三个参数是什么
-
finish()与 System.exit(0)的区别,再谈谈你对退出的理解。
第十部分
-
反编译和防止反编译
-
tcp/ip,通讯思路
-
UDP,通讯思路
-
hTTP 请求网络流程,HTTPclient
-
httpUrlconnection
-
Java 对象池
-
Int 与 intger 的区别
-
做项目的时候遇到哪些印象深刻的问题
-
你在安卓开发中的心得
-
网络互联使用哪种方式
-
动画
-
书架跟随书滚动
-
3D 效果如何实现的
-
读取详细的新闻信息里面的图片读取多张不固定显示
-
服务器端使用什么搭建的
-
怎么调用 android 自带的功能
-
图片的优化
-
Android 每个进程分配的内存是多少
-
都使用过那些第三方平台
-
一个不同公司用一个 APP 的思路
-
平台兼容性
-
重复登录怎么解决比如两台设备同时登录一个账号
-
是每次获取图片都用 AsyncTask 获取吗
-
用户体验度:获取数据之前等待的时间是怎么做的
-
从网络获取图片的大概思路
-
是否做过视频类,关于视频播放使用的什么方式
-
大量耗时操作使用哪种方式,为什么
-
建立一个 Android 工程,实现一个简单的书籍管理应用
-
图片上传怎么做的
-
如果图片太大怎么处理
-
项目开发流程
-
GSON 的使用
-
讯飞语音在什么地方用到
-
LBS 定位用到哪个地图?为什么要使用这个?实现了哪些功能
-
分页加载需要传递哪些参数
-
移动互联使用了哪种方式
-
java.exe 指的是
-
掌握 Android 项目目录结构
-
掌握 AndroidManifest.xml 结构(应用程序入口)
-
掌握模拟器的使用以及常用 adb 命令
以上只是一份面试大纲,相关的详细知识点解析我都已经整理成了文档,接下来用部分截图列举出来:
目录
Activity面试题
Fragment面试题
Service面试题
Handler面试题
..........
最后
要想面试成功进大厂,面试前的准备肯定是要很充分的,除了上面的面试资源分享,我还整理了以下安卓面试复习资源给大家
需要以上Android面试资料内容的朋友,可以【点击这里直达免费获取方式】