每年的9月和10月
是互联网大厂疯狂招人的时期
也是程序员们跳槽的黄金期
不知道你有没有幻想过这样一个场景:
大厂的面试官说
恭喜你通过面试,明天来办理入职吧!
今天,为大家整理了2022年Android大厂面试真题
刷企业历年真题,助你轻松搞定offer
你确定不看?
你确定不收藏?
你确定不转发?
1.Application能不能启动Activity
startActivity(intent:Intent,FLAG_ACTIVITY_NEW_TASK) standard模式启动的
Activity,该实例会存放在启动该Activity的Activity所在的任务栈中,而
ApplicationContext不存放在任务栈中
2.Activity的启动方式
standard 不管有没有已存在的实例,都生成新实例
singleTop 如果发现有对应的Activity实例位于栈顶,则重复利用,否则创建实例
singleTask a)栈内复用,复用时具有clearTop机制 b)single taskAffinity in task
singleInstance a)启用一个新的栈结构,将Activity放置于栈结构中,并保证不会有其
它Activity实例进入 b)方便多个应用共享全局唯一的实例
3.Handler防止内存泄露
原因 a).声明Handler为静态类,同时对于Activity的this引用封装成WeakReference
否则会导致匿名类引用了外部Activity,导致Activity不能被回收 b).如果这时对手机硬
件进行横竖屏切换,讲导致Activity被创建,却不能被回收
措施
a).public void onDestroy()
{
mHandler.removeCallbacksAndMessages(null);
}
>>static class MyHandler extends Handler {
WeakReference<Activity > mActivityReference;
MyHandler(Activity activity) {
mActivityReference= new WeakReference<Activity>(activity);
}
@Override
public void handleMessage(Message msg) {
final Activity activity = mActivityReference.get();
if (activity != null) {
mImageView.setImageBitmap(mBitmap);}
}
}
4.如何在ListView间添加分割线.
//推荐用divider设置drawable的分割线
>>.设置全局属性
a).android:divider="#FFF" //设置为null可无视间距b).android:dividerHeight="1px" c).默认的list view不支持设置footerDevider,采取在每个item布局中添加
> <View
android:layout_width="match_parent" android:layout_height="1dp" android:background="#999"
/>
5.如何优化布局
设置为invisible或者gone的View -> ViewStub :1.ViewStub是一个不可见且大小为0
的视图 :2.当ViewStub被设置为visible或者调用.inflate()时就会被指定的layout所代
替 :3.inflatedId指定加载过来的layout id :4.例子
6.在按钮上显示图像的方式有哪些
Button android:drawableXXX(left|rigth|…) Button继承自TextView,可以通过采用
SpannableString进行setText ImageButton a).layout_width&layout_height //设置
了具体的宽高后,图像并不会拉伸,而是背景增大 b).src //设置图片 c).不设置宽高,
表现与ImageView一致
7.如何让一个显示图像的按钮在不同状态下显示不同图像
drawable //通过selector标签构建xml
<selector>
<item android:state_pressed=“true” android:drawable=“@drawable/pressed”/>
<item android:state_focused=“true” android:drawable=“@drawable/focused”/>
<item android:drawable=“@drawable/normal”/>
</selector>
>>程序里设置监听
a).button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Drawable drawable=getResources().getDrawable(R.mipmap.ic_launcher);
v.setBackground(drawable);
}
});
b).button.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
}
});
做了几道大厂面试题,感觉怎么样?
但由于篇幅原因,以上面试题只抽取部分内容展示,需要更多章节面试题内容的可以继续往下看哦,文末卡片直接领取完整版。
第一章 Java方面
- 第一节 Java基础
- 第二节 Java集合
- 第三节 Java多线程
- 第四节 Java虚拟机
第二章 Android 方面
- 第一节 Android 四大组件相关
- 第二节 Android 异步任务和消息机制
- 第三节 Android UI 绘制相关
- 第四节 Android 性能调优相关
- 第五节 Android 中的 IPC
- 第六节 Android 系统 SDK 相关
- 第七节 第三方框架分析
- 第八节 综合技术
- 第九节 数据结构方面
- 第十节 设计模式
- 第十一节 计算机网络方面
- 第十二节 Kotlin方面
第三章 音视频开发高频面试题
- 为什么巨大的原始视频可以编码成很小的视频呢?这其中的技术是什么呢?
- 怎么做到直播秒开优化?
- 直方图在图像处理里面最重要的作用是什么?
- 数字图像滤波有哪些方法?
- 图像可以提取的特征有哪些?
- …
第四章 Flutter高频面试题
- 第一节 Dart部分
- Dart 语言的特性?
- Dart的一些重要概念?
- dart是值传递还是引用传递?
- Dart 多任务如何并行的?
- 说一下 mixin?
- …
- 第二节 Flutter 部分
- Flutter 特性有哪些?
- Flutter 中的生命周期
- Widget 和 element 和 RenderObject 之间的关系?
- mixin extends implement 之间的关系?
- Flutter 和 Dart的关系是什么?
- …
第五章 算法高频面试题
- 如何⾼效寻找素数
- 如何运⽤⼆分查找算法
- 如何⾼效解决接⾬⽔问题
- 如何去除有序数组的重复元素
- 如何⾼效进⾏模幂运算
- …
第六章 Android Framework方面
- 第一节 系统启动流程面试题解析
- 第二节 Binder面试题解析
- 第三节 Handler面试题解析
- 第四节 AMS面试题解析
- …
第七章 企业常见174道面试题
- 1.SD卡
- 2.android的数据存储方式
- 3.BroadcastReceiver
- 4.sp频繁操作会有什么后果?sp能存多少数据?
- 5.dvm与jvm的区别
- 6.ART
- 7.Activity的生命周期
- 8.Application能不能启动Activity
- 9.Activity的状态都有哪些
- 10.横竖屏切换时Activity的生命周期
- …