前言
希望以下分享的Android开发面试心得与关键知识点能助力各位同仁,早日收获心仪Offer,踏上职业生涯的新征程。欢迎大家在评论区交流各自的面试体会和技巧,共同进步!
谈谈我的求职旅程
我来自一所211高校,研究生学历,从9月份我就开始了求职的征途。起初,我的目标定位在了Android开发的岗位上,尝试面试了多家知名公司,如知乎、携程、网易等,但遗憾的是,几轮面试过后均未获得理想的结果,连续的受挫让我感到颇为沮丧,仿佛求职之路遇到了瓶颈。
幸运的是,在与一位就职于某知名互联网企业的学长交流后,我得到了宝贵的建议。学长指出,当前Android开发领域虽然竞争激烈,但相比其他方向,仍旧保持着较高的市场需求和优厚的薪酬待遇,而且对于技术栈的深度与广度要求更高,是技术成长的优质土壤。
事实上,我之前也尝试过申请该公司的Android岗位,虽然那次面试未能成功,但学长鼓励我说,即使之前在某个公司或岗位上未能通过,转而加强技能,再次尝试进入Android开发领域,完全有机会“逆袭”成功!
经过一段时间的深思熟虑,尤其是在陆续收到阿里巴巴、腾讯等大厂的感谢信后,我意识到原地踏步并非长久之计。我决定主动出击,利用接下来的一个月时间,系统性地强化我的Android开发技能,包括但不限于深入学习Android Framework、性能优化、Jetpack组件、Kotlin等关键技术点,为下一轮的求职冲刺做好充分准备。
在广投简历的同时,学长也给我推了他们组,该说不说,学习沉淀了一段时间,面试也更加得心应手。
下面是我在多场面试后总结下来的面试题,不分公司,整理的都是常见的,高频的面试题,每道题也有答案解析,希望能够帮助到大家!!
-
SD卡
-
android的数据存储方式
-
BroadcastReceiver
-
sp频繁操作会有什么后果?sp能存多少数据?
-
dvm与jvm的区别
-
ART
-
Activity的生命周期
-
Application能不能启动Activity
-
Activity的状态都有哪些
-
横竖屏切换时Activity的生命周期Activity的状态都有哪些
-
如何设置activity成窗口样式
-
Activity的启动方式
-
Service的生命周期
-
IntentService
-
Fragment和Activity的onCreateOptionsMenu
-
Service的onStartCommand有几种返回值
-
Service的onRebind什么情况下执行
-
Handler防止内存泄露
-
IntentFilter的匹配法则
-
Fragment与Activity传值
-
Fragment 生命周期
-
Fragment的add和replace的区别 //replace==remove|append
-
Fragment如何实现Activity栈的压栈和出栈
-
什么情况下造成内存泄露
-
图片过大导致OOM
-
SoftReference跟WeakRefrence的区别
-
dp与px
-
设置布局为一半宽、高
-
多分辨率支持的清单文件配置
-
Android的事件分发机制
-
ArrayList和LinkedList的区别
-
LruCache
-
什么是ANR,如何规避
-
描述Service的启动方式
-
Android有哪几种布局
-
HashMap、HashTable的区别 //从线程安全性、速度
-
红黑树
-
Handler Looper 工作原理
-
Listview的几种adapter介绍
-
如何在ListView间添加分割线
-
LinkedHashMap 源码解读
-
Drawable转Bitmap
-
Layout_weight
-
android:layout_gravity和android:gravity的区别
-
如何重用布局
-
使用merge减少include布局所造成的布局层次
-
如何优化布局
-
android:layout_gravity的使用规则
-
TextView显示图像
-
SpannableString的使用
-
AutoCompleteTextView的使用
-
在按钮上显示图像的方式有哪些
-
如何动态改变Button的大小和位置
-
如何让一个显示图像的按钮在不同状态下显示不同图像
-
如何实现图像的半透明度
-
HttpURLConnection
-
ProgressBar
-
AbsListView
-
ListView,如何进行数据的增删改查
-
ListView中如何显示数据库中的数据
-
android TypedArray
-
如何动态加载apk文件(未安装)的类
-
Android ContentProvider
-
如何设置Activity为程序启动的默认Activity
-
启动Activity的几种方式
-
Activity传递数据的方式
-
如何将Activity设置成半透明的模态框
-
如何接收广播
-
如何获取短信内容
-
如何拦截手机屏幕休眠和唤醒
-
如何发送广播
-
AIDL与Service
-
如何读取联系人信息
-
请描述Content Provider的uri由哪几部分组成
-
介绍开发ContentProvider的步骤
-
如何为ContentProvider添加访问权限
-
AlertDialog
-
如何自己控制对话框的关闭时机
-
如何改变对话框的透明度
-
如何自己控制Toast的显示和关闭
-
如何使用Notification
-
PendingIntent使用 //跨进程intent
-
点击Notification触发Activity跳转
-
如何自定义Notification的view
-
然后为一个Activity添加选项菜单
-
如何将上下文菜单绑定至可视组件View
-
在单击菜单时,如何能跳转进别的Activity
-
菜单的回调函数有哪些
-
如何使用SharedPreferences存取数据
-
SharedPreferences //构造函数(string name,int mode)
-
Android如何解析xml文件
-
gson
-
如何将table1表的数据和结构复制到table2上
-
SQLite
-
SQLiteOpenHelper.getReadableDatabase和SQLiteOpenHelper.getWritableDatabase将数据库文件放哪了
-
然后将带数据的SQLite同apk一起发布
-
Socket连接成功后,怎么获取服务器的ip和域名
-
BufferedInputStream mark //只有BufferedInputStream实现了mark方法
-
如何打开手机中的蓝牙功能
-
如何获取已绑定的蓝牙设备
-
搜索蓝牙的过程中经过哪些状态
-
隐式Intent
-
如何采用广播监听去电和来电
-
Android支持的电话状态
-
Android如何控制接听和挂断电话
-
请给出访问通话记录的Content Provider URI
-
发送短信 //需要动态请求权限:android.permission.SEND_SMS
-
ContactsContract
-
VideoView 播放视频
-
在工程路径下的res/drawable存放tree.png,如果将图片显示在View上
-
调用Drawable进行绘图
-
如何设置图像透明度
-
如何旋转View
-
Activity 切换
-
Android
-
动画
-
属性动画 Animator
-
定义字符串数组资源
-
图层layer资源
-
Clip图像资源
-
ShapeDrawable
-
如何统一设置多个View的android:textSize和android:textColor
-
属性动画 Animator123布局文件中的”@“、”+”、”?”含义
-
Android获取屏幕高度和宽度的办法
-
AsyncTask
-
Intent可传递的数据类型
-
AlarmManager //闹钟
-
HandlerThread
-
自定义ViewGroup
-
JVM的GC算法
-
OkHttp
-
ButterKnife //源码阅读
-
Dalvik内存模型
-
ART垃圾回收
-
JVM 可达性分析中哪些对象可以作为根节点
-
HashSet
-
SSL中的对称加密和非对称加密
-
Handler的内存泄露问题
-
Android volatile关键字
-
EventBus 源码阅读 //反射Class通常采用通配符 =>Class<?>或者Class<? extends T>
-
String a=“ abc”;String b=“ abc”; 创建了几个对象 //栈存放引用变量 堆存在new出来的对象,并且堆划分出一部分作为常量池
-
java的单例创建
-
Android进程优先级
-
ThreadLocal 源码
-
自定义View对象
-
Android @Override //重写
-
Android Semaphore机制
-
Android Lock同步
-
ThreadPoolExecutor 线程池
-
Android下载图片通过bitmap设置ImageView
-
ImageView
-
onSaveInstanceState //保存app数据,当系统因内存不足时而销毁app,会得到调用
-
ViewPager&PagerAdapter&TabFragmentPagerAdapter
-
Fragment在横竖屏切换时的数据保存
-
DialogFragment //采用子类继承的方式进行使用,相比AlertDialog由FragmentManager负责自动重建
-
SQLiteDatabase
-
IntentFilter的匹配规则
-
Android多进程
-
Android Scroller
-
Sqlite 连接操作
-
Spinner
-
RelativeLayout 源代码
-
Message //static Message sPool,指向队列前头的可用Message对象
-
ArrayDeque 源代码阅读
-
RecyclerView
-
LinearLayoutManager //RecyclerView的布局管理器
-
GridLayoutManager
-
RecyclerView 使用
-
Binder
-
ActivityThread //Android应用的主线程
-
CountDownLatch 线程同步
-
retrofit
-
ClassLoader 类加载器
-
RxJava
👀关注公众号:Android老皮!!!欢迎大家来找我探讨交流👀