栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

往年Android 面经复盘,你知道面试官最喜欢问什么?,安卓工程面试问题

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

往年Android 面经复盘,你知道面试官最喜欢问什么?,安卓工程面试问题

msg.setAsynchronous(true);

}

return queue.enqueueMessage(msg, uptimeMillis);

}

这里的this,就是当前的handler。在来看需要Handler处理消息的时候,取的是哪一个handler,下面贴出主要源码。​

public static void loop() {

for (; {

Message msg = queue.next(); // might block

if (msg == null) {

// No message indicates that the message queue is quitting.

return;

}

// This must be in a local variable, in case a UI event sets the logger

if (traceTag != 0 && Trace.isTagEnabled(traceTag)) {

Trace.traceBegin(traceTag, msg.target.getTraceName(msg));

}

final long dispatchStart = needStartTime ? SystemClock.uptimeMillis() : 0;

final long dispatchEnd;

try {

msg.target.dispatchMessage(msg);

dispatchEnd = needEndTime ? SystemClock.uptimeMillis() : 0;

} finally {

if (traceTag != 0) {

Trace.traceEnd(traceTag);

}

}

msg.recycleUnchecked();

}

}

这是循环消息时的部分代码,处理消息代码是msg.target.dispatchMessage(msg);,这里的target就是当时发送消息的handler。

二、网易(2020.5.2面试)


1、介绍项目

刚刚说了,不多介绍

2、说一下你对Java中强引用、弱引用、软引用的理解

强引用:这种引用就是我们在平常频繁使用的引用类型,JVM默认的就是这种引用类型的,例如,A a = new A(),这种就是强引用;

在这种类型下,当内存空间不足的时候,JVM宁可会OOM,使得程序异常中止退出,也不会随意的对其进行回收,只有当此对象没有引用的时候,JVM才会回收他。

软引用:这种引用我们可以这样使用它,SoftReference sr = new SoftReference(new A());可以利用sr.get()获取到这个对象,这种引用类型的对象,如果JVM内存足够的话就不会回收他;如果JVM内存不足了,才会回收这些对象。这种引用类型适合用作缓存来使用。

弱引用:这种引用可以这用使用他,WeakReference wr = new WeakReference(new A());然后利用wr.get()获取到这个对象;这种引用类型的对象,比软引用的对象,拥有更加短暂的生命周期,在垃圾收集器扫描JVM的内存区域的时候,遇到此种引用类型的对象的时候,不管当前内存是否够用,都会回收这些对象。

3、死锁是什么?必要条件是什么?怎么避免?

死锁是指多个进程循环等待它方占有的资源而无限期僵持下去的局面。当两个或两个以上的进程同时对多个互斥资源提出使用要求时,有可能导致死锁。

互斥条件:即一次只有一个进程可以使用资源,其它进程不能访问已经分配给其它进程的资源

占有且等待:一个进程等待其它进程释放资源的时候,它已知占有这个资源

不可抢占:其它进程不能强行占用已经分配给进程的资源

循环等待:存在一个闭合链,链中的进程至少占据链中下一个进程的所需的一个资源

死锁避免:

预防互斥:不可能禁止

预防占有且等待:让进程一次性申请完所有的资源。

预防不可抢占:(1)当占有资源的进程进一步申请资源的时候,拒绝,然后强制释放当前占用的资源。必要时可再申请。(2)当一个进程请求被另外一个进程所占据的资源的时候,操作系统可以抢占这个占据资源的进程。要求释放资源。第二种方案只有在任意两个进程优先级不同的情况下.

预防循环等待:定义资源访问线性序列

4、TCP与UDP的区别

    基于连接与无连接。

    TCP要求系统资源较多,UDP较少。

    UDP程序结构较简单。

    流模式(TCP)与数据报模式(UDP)。

    TCP保证数据正确性,UDP可能丢包。

5、算法题:给定一个非空字符串 s 和一个包含非空单词列表的字典wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词。

答案解析:给定一个非空字符串 s 和一个包含非空单词列表的字典wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词答案解析

Android


1、自定义View需要重写那些方
法?

(结合实际需求,需要滑动则重写onTouchEvent,需要控制自身布局则重写onMeasure,onLayout)

2、如何进行布局优化呢?

答案解析:布局优化_qq_39477770的博客-CSDN博客

3、Handler消息机制

答案解析:Android Handler消息机制原理最全解读(持续补充中)

4、说说你对UI优化的理解

答案解析:UI优化_wfeii的博客-CSDN博客_ui优化

三、新浪(2020.12.21)

1、介绍项目

刚刚说了,不多介绍

2、有没有了解过插件化?插件化和组件化什么区别?

答案解析:模块化、组件化和插件化的区别

3、什么时候用Application的Context,什么时候用Activity的Context

答案解析:什么时候用Application的Context,什么时候用Activity的Context_lulinhua1010

4、一定要在主线程中更新UI吗?能不能在子线程更新?

答案解析:一定要在主线程中更新UI吗?能不能在子线程更新?

5、kotlin是如何兼容Java的?

答案解析:kotlin是如何兼容Java的?答案解析

复盘了这么多,其实细心的朋友可以发现,大厂面试对Java基础、Android基础还是比较看重的,所以在面试前,进行一波知识的梳理是很有必要的。

1、Java基础面试考察点


JVM 工作流程

运行时数据区(Runtime Data Area)

类加载器

垃圾回收 GC

String、StringBuffer、StringBuilder

接口

HashMap

单例模式

线程的属性、状态、状态控制

synchronized

volatile

2、Android基础面试考察点


Activity:生命周期、启动模式、启动过程

Fragment:特点、生命周期、与 Activity 通信

Service:启动过程、绑定过程、生命周期、启用前台服务(注册过程)、BroadcastReceiver、ContentProvider、数据存储

View:MeasureSpec、MotionEvent、VelocityTracker、GestureDetector、View的滑动、Scroller、事件分发、自定义View、Draw的基本流程

进程:进程的生命周期、多进程、OOM_ADJ

Parcelable接口:Parcelable与Serializable对比

IPC:IPC方式、Binder、AIDL通信、Messenger

过程

Fragment:特点、生命周期、与 Activity 通信

Service:启动过程、绑定过程、生命周期、启用前台服务(注册过程)、BroadcastReceiver、ContentProvider、数据存储

View:MeasureSpec、MotionEvent、VelocityTracker、GestureDetector、View的滑动、Scroller、事件分发、自定义View、Draw的基本流程

进程:进程的生命周期、多进程、OOM_ADJ

Parcelable接口:Parcelable与Serializable对比

IPC:IPC方式、Binder、AIDL通信、Messenger

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/716841.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号