Android面试题——kotlin相关面试题
一 面试主要知识点
- kotlin协程
- 协程异常处理
- kotlin中高阶函数
- kotlin中with,run,apply,let函数
- 安卓中扫码区域大小(分别率-自定义)
- 多语言适配(多语言占位符)
- 静态代理和动态代理
- Android网络访问框架(Okhttp+retrofit)
- Jetpack Compose 组件介绍
- 约束布局
- 线程中断
- VMC/MVP/MVVM
- 项目亮点及难点
- flutter与安卓通信
二 面试题解答
2.1 kotlin协程
1- 协程是我们在 Android 上进行异步编程的推荐解决方案。它的特点包括:
// 方法一,使用 runBlocking 顶层函数
runBlocking {get(url)
}// 方法二,自行通过 CoroutineContext 创建一个 CoroutineScope 对象,通过launch开启协程
val coroutineScope = CoroutineScope(context)
coroutineScope.launch {get(url)
}// 方法三,使用 GlobalScope 单例对象,GlobalScope 实际是CoroutineScope的子类,本质是CoroutineScope
GlobalScope.launch {get(url)
}//方法四,使用async开启协程
GlobalScope.async {get(url)
}
可以使用 Dispatchers.IO
参数把任务切到 IO 线程执行
coroutineScope.launch(Dispatchers.IO) {...
}
coroutineScope.launch(Dispatchers.Main) {...
}
2.2 协程异常处理
- 协程的异常,一般使用
try/catch
或者runCatching
内置函数来处理 - 协程处理异常的第二个方法是使用
CoroutineExceptionHandler
2.3 kotlin中高阶函数
(String, Int) -> Unit
2.4 kotlin中with,run,apply,let函数
1- 基本介绍:
- with:不是T的扩展函数,需要传入对象进去,不能判空,最后一行是返回值。
- run:是T的扩展函数,内部使用this,最后一行是返回值。
- apply:是T的扩展函数,内部使用this,最后一行返回的是自身。
- let:是T的扩展函数,内部使用it,当然可以自定义名称(通过修改lambda表达式参数),最后一行是返回值。
- also:是T的扩展函数,和let一样内部使用it,最后一行是返回自身。
2- 使用场景
- 用于初始化对象或更改对象属性,可使用apply
- 如果将数据指派给接收对象的属性之前验证对象,可使用also
- 如果将对象进行空检查并访问或修改其属性,可使用let
- 如果想要计算某个值,或者限制多个本地变量的范围,则使用run
3-区别
函数 | 是否是扩展函数 | 函数参数(this、it) | 返回值(调用本身、最后一行) |
---|---|---|---|
with | 不是 | this | 最后一行 |
T.run | 是 | this | 最后一行 |
T.let | 是 | it | 最后一行 |
T.also | 是 | it | 调用本身 |
T.apply | 是 | this | 调用本身 |
2.5 安卓中扫码区域大小(分别率-自定义)
Zxing包中有个类CameraManager,它是来设置扫描框的大小
private static int MIN_FRAME_WIDTH = 240;private static int MIN_FRAME_HEIGHT = 240;private static int MAX_FRAME_WIDTH = 480;private static int MAX_FRAME_HEIGHT = 360;
此类里面有个getFramingRect方法用来设置扫描的框的大小,如果要修改扫描框的大小可以在这个方法里修改
2.6 多语言适配(多语言占位符)
%s:字符串类型
%d:整数类型
%f:浮点数类型
2.7 静态代理和动态代理
- 静态代理:由程序创建或者特定工具自动生成源代码,在程序运行前,代理类的.class文件已经存在
- 动态代理:在程序运行时,运用反射机制动态创建而成,无需手动编写代码
2.8 Android网络访问框架(Okhttp+retrofit)
- RetryAndFollowUpInterceptor:重试和失败定向拦截器,会创建StreamAllocation对象,用来传递给后面的拦截器
- BridgeInterceptor:桥接和适配拦截器
- CacheInterceptor:缓存拦截器
- ConnectInterceptor:连接拦截器,建立可用的连接,是下面拦截器的基础
- CallServerInterceptor:负责将我们的请求写进网络流中,别切会从IO流中读取服务器返回给我们的客户端的数据
2.9 Jetpack Compose 组件介绍
Jetpack 是一个丰富的组件库,它的组件库按类别分为 4 类
1-架构(Architecture)
- Data Binding
- Lifecycles
- LiveData
- Navigation
- Paging
- Room
- ViewModel
- WorkManager
2- 界面(UI)
- Animation & Transitions
- Auto,Tv&Wear
- Emoji
- Fragment
- Layout
- Palette
3-行为(behavior)
- Download Manager
- Media&Playback
- Permissions
- Notifications
- Sharing
- Slices
4-基础(foundation)
- AppCompat
- Android KTX
- Multidex
- Test
2.10 约束布局(ConstraintLayout)
ConstraintLayout 是一个 ViewGroup,它的出现是为了解决复杂布局时,布局嵌套(布局内的布局)过多的问题(嵌套布局会增加绘制界面所需的时间)。它可以根据同级视图和父布局的约束条件为每个视图定义位置,类似于 RelativeLayout 所有视图都是根据兄弟视图和父级布局之间的关系来布局的,但是与 RelativeLayout 相比,它更加灵活,更易于使用
- 约束布局常用属性
- 参考线(GuideLine)
- 链(Chains)
- 关于view gone
2.11 线程中断
- stop
- interrupt
- 标志位
2.12 VMC/MVP/MVVM
- MVC(Model-View-Controller)
- MVP(Model-View-Presenter)
- MVVM(Model-View-ViewModel)
2.13 项目亮点及难点
结合项目描述
2.14 flutter与安卓通信
- MethodChannel
- BasicMessageChannel
- EventChannel
Android面试题——kotlin相关面试题相关推荐
- Kotlin相关面试题
目录 一.请简述下什么是kotlin?它有什么特性? 二.密封类与枚举的区别? 三.Kotlin 中注解 @JvmOverloads 的作用? 四.Kotlin中的MutableList与List有什 ...
- foo( a )JAVA面试题_Java相关面试题总结+答案(五)
[异常] 74. throw 和 throws 的区别? throw 是真实抛出一个异常: throws 是声明可能会抛出一个异常. 75. final.finally.finalize 有什么区别? ...
- Android性能优化面试题,与性能优化相关面试题 - 与IPC机制相关面试题 - 《Android面试宝典》 - 书栈网 · BookStack...
源码分析相关面试题 Activity相关面试题 与XMPP相关面试题 与性能优化相关面试题 与登录相关面试题 与开发相关面试题 与人事相关面试题 与人事相关面试题现在三四月份,金三银四最好找工作时间, ...
- android kotlin面试题,Kotlin面试25题
大家好,这一期呢,我们谈一下kotlin的面试题. 第1题,什么是kotlin? kotlin是静态类型的编程语言,运行于jvm之上. 第2题, 是谁开发了kotlin? kotlin是由jetbra ...
- Android知识点汇总以及常见面试题
Android知识点汇总以及常见面试题 1. 链表和数组的区别 2. List Hash 数组的区别 3. 用过哪些三方SDK 4. Android四大组件 5. 堆和栈的区别 6. Activity ...
- Android Java 网络 OS等笔试题 -- 全
前19题为常考题目!!(版本号:201108141031) 1.Android的四大组件是哪些,它们的作用? 3 2.请介绍下Android中常用的五种布局. 3 3.android中的动画有哪几类, ...
- View的实现和优化相关面试题
1-ListView优化?ListView如何提高其效率? 1. Item布局,层级越少越好,使用hierarchyview工具查看优化. 2. 复用convertView ,使用历史的view 3. ...
- Java Web 相关面试题总结
为什么80%的码农都做不了架构师?>>> Spring 相关的的面试题 1.什么是 IoC 容器? 2.解释下 Spring Bean 的生命周期 IoC 容器是 Spring ...
- Vue相关面试题及答案分享
Web前端重点技能是什么?Vue相关面试题有哪些?Vue是一套构建用户界面的渐进式框架,具有简单易用.性能好.前后端分离等优势,是Web前端工程师工作的好帮手,也是企业选拔人才时考察的重点技能.接下来 ...
最新文章
- Java基础教程——包装类
- airpods pro连接安卓声音小_安卓(一加5)用airpods音量偏低怎么解决?
- 思科安全:加密流量威胁检测、加密流量威胁和恶意软件检测、识别无线干扰或威胁、Talos 情报源可加强对已知和新型威胁的防御、分布式安全异常检测...
- chrome浏览器插件开发经验(一)
- CF662C Binary Table
- 【转】[Python Tip]如何在Windows下方便地进入命令行运行程序
- 我有一百种方法让你的Excel连上数据库
- linux系统刷苹果4s,iOS8.4降级6.1.3教程 iPhone4s降级iOS6.1.3
- Music Radio Beta-Perview 1.0.0.0.(做了一个听音乐电台的东东.:)
- Python解析xml文件详解
- 开发QQ桌球瞄准器(1):桌球瞄准器介绍与使用方法
- 2021-07-19支付宝扫码点餐推广怎么做(干货来了)
- LeetCode ---Fizz和Buzz
- AFNetworking理解:
- MySQL8.0.27 修改编码类型(utf8mb3)
- 2015图片处理软件排行榜
- 2PSK的调制解调,编码解码,还有它的误码率,功率谱(语音信号的)
- 手撕代码1:Deep image matting(3)
- 软件测试电商项目实战(写进简历没问题)
- 无法输入文字,电脑变慢,禁止IE浏览器自动更新怎么办,进来这里有方法!