金九银十面试即将来临,资深面试官向你揭露Android面试‘潜规

2023-08-02  本文已影响0人  小城哇哇

前言

从接触 Android 开发到步入社会工作再到现在,经历过多次面试,也面试过其他人,其中有着不错的面试体验;也有令人不爽的面试情况,历经这么多次的面试和被面经验,我总结出来一个道理, 一个好的面试体验的产生必然会有一个专业的面试官

所以接下来就从"面试官"的角度来阐述一下,面试中所不可轻视且可能被遗忘的一些重点,希望这篇文章能够对你的职场生涯提供一些帮助,特别是那些正在面试或者跳槽的程序员们;话不多说,正式开讲

通常来说你要注意下面几点:

自我介绍及知识考察

自我介绍这个环节是必不可少的,时长一般在三分钟以内,我个人通常是一分半不到就介绍完了,自我介绍之后;面试官接下来就是对一些技术基础知识的考察,面试官会根据每位候选人的背景不同,选择性的对其引导询问

项目经历考察

项目经历是面试官最为看重的一点,简历上的项目介绍较为笼统,并不能对候选人有着清晰的了解,所以这时候面试官就对其会刨根问底,试图通过候选人对项目的亲口述说;以达到了解候选人对项目的深入层次;下面这几个关键点,希望大家能够记住,避免在面试中翻车

有人会说,应聘者的经历可以被他自己编出来的,他可以把一些不是他做的事说成是他做的。是的,的确是有这种可能。不过,不要忘了,一个谎言背后需要用更多的谎言来圆谎的,所以,你不必担心这个问题,只要你在应聘者的描述过程中逐步求精,细化问题,你会知道应聘者是否是在编故事的

针对上述的问题,这里特别提供刚刚整理出来的一份 《2023年大厂 Android 面试题汇总》,希望为你理清 Android 面试的主线思路,通过详解各大互联网公司的常见面试题,从面试的角度去展开介绍某一知识点,以及该知识点在项目中的使用,并在此过程中帮你梳理和建立 Android 开发的知识体系

因此,无论是你短期内想提升 Android 内功实力,突破自己工作中的能力瓶颈,还是准备参加 Android 面试,都会在这份指导手册中有所收获;

面试题展示

一、Activity的启动方式

standard 不管有没有已存在的实例,都生成新实例
singleTop 如果发现有对应的Activity实例位于栈顶,则重复利用,否则创建实例
singleTask a)栈内复用,复用时具有clearTop机制 b)single taskAffinity in task
singleInstance a)启用一个新的栈结构,将Activity放置于栈结构中,并保证不会有其
它Activity实例进入 b)方便多个应用共享全局唯一的实例

二、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);
}
}
}

三、SoftReference跟WeakRefrence的区别

WeakRefrence => 与强引用对象的生命周期一致,不会增加引用计数
SoftReference => 内存不足时才进行回收

四、如何避免OOM

减少内存对象的占用

  1. ArrayMap/SparseArray代替hashmap
  2. 避免在android里面使用Enum
  3. 减少bitmap的内存占用
  4. 减少资源图片的大小,过大的图片可以考虑分段加载

五、Devik 进程,linux 进程,线程的区别

Dalvik进程。
每一个android app都会独立占用一个dvm虚拟机,运行在linux系统中。
所以dalvik进程和linux进程是可以理解为一个概念。

六、Framework 工作方式及原理,Activity 是如何生成一个 view 的,机制是什么

Framework是android 系统对 linux kernel,lib库等封装,提供WMS,AMS,bind机制,handler-message机制等方式,供app使用。
简单来说framework就是提供app生存的环境。

  1. Activity在attch方法的时候,会创建一个phonewindow(window的子类)
  2. onCreate中的setContentView方法,会创建DecorView
  3. DecorView 的addview方法,会把layout中的布局加载进来。

七、 请说一说HashMap,SparseArrary原理,SparseArrary相比HashMap的优点、ConcurrentHashMap如何实现线程安全?

八、Flutter中的Widget、State、Context 的核心概念?是为了解决什么问题?

九、谈谈 Handler 机制和原理?

十、为什么在子线程中创建Handler会抛异常?

十一、Handler中有Loop死循环,为什么没有阻塞主线程,原理是什么?

十二、HandlerThread是什么?为什么它会存在?

十三、简述下 Handler 机制的总体原理?

十四 Looper 存在哪?如何可以保证线程独有?

十五、请说一说hashmap put()底层原理,发生冲突时,如何去添加(顺着链表去遍历,挨个比较key值是否一致,如果一致,就覆盖替换,不一致遍历结束后,插入该位置) ?

........
由于文章篇幅有限,不能将完整面试题+答案解析展示出来,关注哇哇,以上均可分享哦~!!!

上一篇 下一篇

猜你喜欢

热点阅读