一 面试主要知识点

  1. kotlin协程
  2. 协程异常处理
  3. kotlin中高阶函数
  4. kotlin中with,run,apply,let函数
  5. 安卓中扫码区域大小(分别率-自定义)
  6. 多语言适配(多语言占位符)
  7. 静态代理和动态代理
  8. Android网络访问框架(Okhttp+retrofit)
  9. Jetpack Compose 组件介绍
  10. 约束布局
  11. 线程中断
  12. VMC/MVP/MVVM
  13. 项目亮点及难点
  14. flutter与安卓通信

二 面试题解答

2.1 kotlin协程

1- 协程是我们在 Android 上进行异步编程的推荐解决方案。它的特点包括:

2- 创建协程

// 方法一,使用 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)
}

3-协程使用

协程最常用的功能是并发,而并发的典型场景就是多线程。

可以使用 Dispatchers.IO 参数把任务切到 IO 线程执行

coroutineScope.launch(Dispatchers.IO) {...
}

使用Dispatchers.Main 切换到主线程

coroutineScope.launch(Dispatchers.Main) {...
}

4-协程的挂起(suspend)

2.2 协程异常处理

  • 协程的异常,一般使用try/catch或者runCatching内置函数来处理
  • 协程处理异常的第二个方法是使用CoroutineExceptionHandler

2.3 kotlin中高阶函数

1-定义

高阶函数定义:参数有函数类型或者返回值是函数类型的函数。

2-高阶函数示例

(String, Int) -> Unit

3-高阶函数有三种用法

4-系统常用的高阶函数

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)

OkHttp拦截器链

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相关面试题相关推荐

  1. Kotlin相关面试题

    目录 一.请简述下什么是kotlin?它有什么特性? 二.密封类与枚举的区别? 三.Kotlin 中注解 @JvmOverloads 的作用? 四.Kotlin中的MutableList与List有什 ...

  2. foo( a )JAVA面试题_Java相关面试题总结+答案(五)

    [异常] 74. throw 和 throws 的区别? throw 是真实抛出一个异常: throws 是声明可能会抛出一个异常. 75. final.finally.finalize 有什么区别? ...

  3. Android性能优化面试题,与性能优化相关面试题 - 与IPC机制相关面试题 - 《Android面试宝典》 - 书栈网 · BookStack...

    源码分析相关面试题 Activity相关面试题 与XMPP相关面试题 与性能优化相关面试题 与登录相关面试题 与开发相关面试题 与人事相关面试题 与人事相关面试题现在三四月份,金三银四最好找工作时间, ...

  4. android kotlin面试题,Kotlin面试25题

    大家好,这一期呢,我们谈一下kotlin的面试题. 第1题,什么是kotlin? kotlin是静态类型的编程语言,运行于jvm之上. 第2题, 是谁开发了kotlin? kotlin是由jetbra ...

  5. Android知识点汇总以及常见面试题

    Android知识点汇总以及常见面试题 1. 链表和数组的区别 2. List Hash 数组的区别 3. 用过哪些三方SDK 4. Android四大组件 5. 堆和栈的区别 6. Activity ...

  6. Android Java 网络 OS等笔试题 -- 全

    前19题为常考题目!!(版本号:201108141031) 1.Android的四大组件是哪些,它们的作用? 3 2.请介绍下Android中常用的五种布局. 3 3.android中的动画有哪几类, ...

  7. View的实现和优化相关面试题

    1-ListView优化?ListView如何提高其效率? 1. Item布局,层级越少越好,使用hierarchyview工具查看优化. 2. 复用convertView ,使用历史的view 3. ...

  8. Java Web 相关面试题总结

    为什么80%的码农都做不了架构师?>>>    Spring 相关的的面试题 1.什么是 IoC 容器? 2.解释下 Spring Bean 的生命周期 IoC 容器是 Spring ...

  9. Vue相关面试题及答案分享

    Web前端重点技能是什么?Vue相关面试题有哪些?Vue是一套构建用户界面的渐进式框架,具有简单易用.性能好.前后端分离等优势,是Web前端工程师工作的好帮手,也是企业选拔人才时考察的重点技能.接下来 ...

最新文章

  1. Java基础教程——包装类
  2. airpods pro连接安卓声音小_安卓(一加5)用airpods音量偏低怎么解决?
  3. 思科安全:加密流量威胁检测、加密流量威胁和恶意软件检测、识别无线干扰或威胁、Talos 情报源可加强对已知和新型威胁的防御、分布式安全异常检测...
  4. chrome浏览器插件开发经验(一)
  5. CF662C Binary Table
  6. 【转】[Python Tip]如何在Windows下方便地进入命令行运行程序
  7. 我有一百种方法让你的Excel连上数据库
  8. linux系统刷苹果4s,iOS8.4降级6.1.3教程 iPhone4s降级iOS6.1.3
  9. Music Radio Beta-Perview 1.0.0.0.(做了一个听音乐电台的东东.:)
  10. Python解析xml文件详解
  11. 开发QQ桌球瞄准器(1):桌球瞄准器介绍与使用方法
  12. 2021-07-19支付宝扫码点餐推广怎么做(干货来了)
  13. LeetCode ---Fizz和Buzz
  14. AFNetworking理解:
  15. MySQL8.0.27 修改编码类型(utf8mb3)
  16. 2015图片处理软件排行榜
  17. 2PSK的调制解调,编码解码,还有它的误码率,功率谱(语音信号的)
  18. 手撕代码1:Deep image matting(3)
  19. 软件测试电商项目实战(写进简历没问题)
  20. 无法输入文字,电脑变慢,禁止IE浏览器自动更新怎么办,进来这里有方法!

热门文章

  1. 理解加密资产中的验证者两难
  2. PyCharm找不到SSH interpreter
  3. Auto-sklearn 安装及用于分子性质预测
  4. 原生js开发canvas双人射击游戏
  5. HTTP接口交互开发之okhttp
  6. java基础(n个人围成一圈)
  7. Moravec,Forstner和Harris特征点提取opencv实现
  8. StringBuffer类append方法的用法和用途
  9. 星型结构 和 雪花型结构区别
  10. 三次样条曲线插值(cubic spline)实例应用