练习 / kt

Kotlin 练习

Kotlin 的全部练习都来自可随时对照的主题。

66项练习 离线运行
kt 测验 新题 如何区分键不存在与键存在但值为 null? 掌握 List、Set、Map、只读与可变接口、集合操作链和 Sequence 惰性求值,并避开别名、键覆盖与无限序列陷阱。 进阶 1分钟 · 来自 集合 kt 预测输出 新题 终结操作执行时会产生哪组输出? 掌握 List、Set、Map、只读与可变接口、集合操作链和 Sequence 惰性求值,并避开别名、键覆盖与无限序列陷阱。 进阶 2分钟 · 来自 集合 kt 预测输出 新题 这段程序会输出什么? 掌握 List、Set、Map、只读与可变接口、集合操作链和 Sequence 惰性求值,并避开别名、键覆盖与无限序列陷阱。 入门 2分钟 · 来自 集合 kt 审查 AI 代码 新题 审查生成的启用商品索引 掌握 List、Set、Map、只读与可变接口、集合操作链和 Sequence 惰性求值,并避开别名、键覆盖与无限序列陷阱。 高级 6分钟 · 来自 集合 kt 测验 新题 哪个操作会触发求值并返回非 Sequence 结果? 掌握 List、Set、Map、只读与可变接口、集合操作链和 Sequence 惰性求值,并避开别名、键覆盖与无限序列陷阱。 入门 1分钟 · 来自 集合 kt 找出 bug 新题 找出 SKU 索引里的 bug 掌握 List、Set、Map、只读与可变接口、集合操作链和 Sequence 惰性求值,并避开别名、键覆盖与无限序列陷阱。 进阶 4分钟 · 来自 集合 kt 测验 新题 两个 Packet 实例分别持有 byteArrayOf(1, 2)。对于 data class Packet(val bytes: ByteArray),packetA == … 用数据类定义值语义,理解编译器生成的相等性、解构与浅拷贝,并避开可变键、数组和敏感字段陷阱。 进阶 1分钟 · 来自 数据类 kt 测验 新题 copy() 创建数据类实例时,已经初始化过的类体属性会怎样? 用数据类定义值语义,理解编译器生成的相等性、解构与浅拷贝,并避开可变键、数组和敏感字段陷阱。 进阶 1分钟 · 来自 数据类 kt 测验 新题 默认情况下,哪些属性会参与数据类生成的全部成员? 用数据类定义值语义,理解编译器生成的相等性、解构与浅拷贝,并避开可变键、数组和敏感字段陷阱。 入门 1分钟 · 来自 数据类 kt 预测输出 新题 这段程序会输出什么? 用数据类定义值语义,理解编译器生成的相等性、解构与浅拷贝,并避开可变键、数组和敏感字段陷阱。 入门 2分钟 · 来自 数据类 kt 审查 AI 代码 新题 审查生成的购物车快照 用数据类定义值语义,理解编译器生成的相等性、解构与浅拷贝,并避开可变键、数组和敏感字段陷阱。 高级 6分钟 · 来自 数据类 kt 找出 bug 新题 找出可变数据类键里的 bug 用数据类定义值语义,理解编译器生成的相等性、解构与浅拷贝,并避开可变键、数组和敏感字段陷阱。 进阶 4分钟 · 来自 数据类 kt 测验 新题 当 values 的类型为 Map<String, Any?> 时,val age: Int by values 能保证什么? Kotlin 委托属性把 getter 和 setter 交给可复用对象;掌握 lazy、observable、自定义委托以及共享状态和线程安全陷阱。 进阶 1分钟 · 来自 委托属性 kt 预测输出 新题 这段程序会输出什么? Kotlin 委托属性把 getter 和 setter 交给可复用对象;掌握 lazy、observable、自定义委托以及共享状态和线程安全陷阱。 入门 2分钟 · 来自 委托属性 kt 预测输出 新题 拒绝赋值后,这段程序会输出什么? Kotlin 委托属性把 getter 和 setter 交给可复用对象;掌握 lazy、observable、自定义委托以及共享状态和线程安全陷阱。 入门 2分钟 · 来自 委托属性 kt 测验 新题 成员委托属性的 provideDelegate() 在什么时候调用? Kotlin 委托属性把 getter 和 setter 交给可复用对象;掌握 lazy、observable、自定义委托以及共享状态和线程安全陷阱。 进阶 1分钟 · 来自 委托属性 kt 审查 AI 代码 新题 审查生成的账户字段委托 Kotlin 委托属性把 getter 和 setter 交给可复用对象;掌握 lazy、observable、自定义委托以及共享状态和线程安全陷阱。 高级 6分钟 · 来自 委托属性 kt 找出 bug 新题 找出单例委托里的 bug Kotlin 委托属性把 getter 和 setter 交给可复用对象;掌握 lazy、observable、自定义委托以及共享状态和线程安全陷阱。 进阶 4分钟 · 来自 委托属性 kt 测验 新题 两个嵌套接收者类型带有同一个 DSL 标记。内层块怎样有意访问外层接收者? 用带接收者的 lambda、类型安全构建器与 DSL 标记设计边界清楚、可验证的 Kotlin 内部领域语言。 进阶 1分钟 · 来自 DSL kt 预测输出 新题 这个基于接收者的构建器会输出什么? 用带接收者的 lambda、类型安全构建器与 DSL 标记设计边界清楚、可验证的 Kotlin 内部领域语言。 入门 2分钟 · 来自 DSL kt 审查 AI 代码 新题 审查生成的数据库 DSL 用带接收者的 lambda、类型安全构建器与 DSL 标记设计边界清楚、可验证的 Kotlin 内部领域语言。 高级 6分钟 · 来自 DSL kt 找出 bug 新题 找出菜单快照里的 bug 用带接收者的 lambda、类型安全构建器与 DSL 标记设计边界清楚、可验证的 Kotlin 内部领域语言。 进阶 4分钟 · 来自 DSL kt 测验 新题 只有最后阶段能产生结果时,分阶段构建器保证了什么? 用带接收者的 lambda、类型安全构建器与 DSL 标记设计边界清楚、可验证的 Kotlin 内部领域语言。 进阶 1分钟 · 来自 DSL kt 测验 新题 某个 SQL DSL 接收 String 并把它插入查询。Kotlin 类型检查证明了什么? 用带接收者的 lambda、类型安全构建器与 DSL 标记设计边界清楚、可验证的 Kotlin 内部领域语言。 进阶 1分钟 · 来自 DSL kt 测验 新题 类型与导入的扩展都定义了兼容签名的 render()。value.render() 会选择哪个声明? 用接收者语法为现有类型补充函数与计算属性,并理解静态解析、成员优先、可空接收者和作用域边界。 入门 1分钟 · 来自 扩展 kt 预测输出 新题 直接调用与安全调用的结果有什么不同? 用接收者语法为现有类型补充函数与计算属性,并理解静态解析、成员优先、可空接收者和作用域边界。 进阶 2分钟 · 来自 扩展 kt 预测输出 新题 这段程序会输出什么? 用接收者语法为现有类型补充函数与计算属性,并理解静态解析、成员优先、可空接收者和作用域边界。 进阶 2分钟 · 来自 扩展 kt 审查 AI 代码 新题 审查生成的账户标签扩展 用接收者语法为现有类型补充函数与计算属性,并理解静态解析、成员优先、可空接收者和作用域边界。 高级 6分钟 · 来自 扩展 kt 找出 bug 新题 找出扩展属性里的 bug 用接收者语法为现有类型补充函数与计算属性,并理解静态解析、成员优先、可空接收者和作用域边界。 入门 4分钟 · 来自 扩展 kt 测验 新题 已经列出枚举所有成员的 when 表达式,为什么应省略 else? 从只读引用、静态类型与空安全出发,掌握 Kotlin 的表达式、控制流和函数调用边界。 进阶 1分钟 · 来自 Kotlin 基础 kt 测验 新题 count 的类型是 Int。哪个表达式能把它传给 fun store(value: Long)? 从只读引用、静态类型与空安全出发,掌握 Kotlin 的表达式、控制流和函数调用边界。 入门 1分钟 · 来自 Kotlin 基础 kt 预测输出 新题 这段程序会输出什么? 从只读引用、静态类型与空安全出发,掌握 Kotlin 的表达式、控制流和函数调用边界。 入门 2分钟 · 来自 Kotlin 基础 kt 审查 AI 代码 新题 审查生成的发票合计 从只读引用、静态类型与空安全出发,掌握 Kotlin 的表达式、控制流和函数调用边界。 高级 6分钟 · 来自 Kotlin 基础 kt 找出 bug 新题 找出名称长度函数里的 bug 从只读引用、静态类型与空安全出发,掌握 Kotlin 的表达式、控制流和函数调用边界。 入门 4分钟 · 来自 Kotlin 基础 kt 测验 新题 对于 @JvmInline value class UserId(val value: Long),哪个使用位置通常需要装箱表示? 使用 `@JvmInline value class` 建模单值领域类型,理解 JVM 表示、装箱边界、构造校验与 Java 互操作。 进阶 1分钟 · 来自 内联值类 kt 测验 新题 要发布一个可从 Java 调用、而 Kotlin API 接受内联值类的函数,哪种做法可靠? 使用 `@JvmInline value class` 建模单值领域类型,理解 JVM 表示、装箱边界、构造校验与 Java 互操作。 高级 1分钟 · 来自 内联值类 kt 预测输出 新题 这段程序会输出什么? 使用 `@JvmInline value class` 建模单值领域类型,理解 JVM 表示、装箱边界、构造校验与 Java 互操作。 入门 2分钟 · 来自 内联值类 kt 审查 AI 代码 新题 审查生成的 API 令牌包装器 使用 `@JvmInline value class` 建模单值领域类型,理解 JVM 表示、装箱边界、构造校验与 Java 互操作。 高级 6分钟 · 来自 内联值类 kt 找出 bug 新题 找出值类映射键里的 bug 使用 `@JvmInline value class` 建模单值领域类型,理解 JVM 表示、装箱边界、构造校验与 Java 互操作。 进阶 4分钟 · 来自 内联值类 kt 测验 新题 哪个类型表示“可缺省的函数,它接收 String 并返回 Int”? Lambda 表达式把行为表示为有静态类型的值;这里讲清函数类型、捕获、接收者、返回控制与 JVM 边界。 入门 1分钟 · 来自 Lambda 表达式 kt 预测输出 新题 这个程序会输出什么? Lambda 表达式把行为表示为有静态类型的值;这里讲清函数类型、捕获、接收者、返回控制与 JVM 边界。 入门 2分钟 · 来自 Lambda 表达式 kt 预测输出 新题 传入尾随 lambda 后会输出哪些行? Lambda 表达式把行为表示为有静态类型的值;这里讲清函数类型、捕获、接收者、返回控制与 JVM 边界。 进阶 2分钟 · 来自 Lambda 表达式 kt 审查 AI 代码 新题 审查生成的事件注册表 Lambda 表达式把行为表示为有静态类型的值;这里讲清函数类型、捕获、接收者、返回控制与 JVM 边界。 高级 6分钟 · 来自 Lambda 表达式 kt 找出 bug 新题 找出回调索引捕获里的 bug Lambda 表达式把行为表示为有静态类型的值;这里讲清函数类型、捕获、接收者、返回控制与 JVM 边界。 进阶 4分钟 · 来自 Lambda 表达式 kt 测验 新题 哪个类型同时允许列表本身和其中的每个元素为 null? 用可空类型、智能转换、安全调用与 Elvis 运算符表达缺失值,并在 Java 互操作和生成代码边界避免运行时空指针异常。 入门 1分钟 · 来自 空安全 kt 测验 新题 未注解的 Java 方法返回平台 String 类型。实现不可信时,哪项第一步能如实表达 Kotlin 边界? 用可空类型、智能转换、安全调用与 Elvis 运算符表达缺失值,并在 Java 互操作和生成代码边界避免运行时空指针异常。 进阶 1分钟 · 来自 空安全 kt 预测输出 新题 这段程序会输出什么? 用可空类型、智能转换、安全调用与 Elvis 运算符表达缺失值,并在 Java 互操作和生成代码边界避免运行时空指针异常。 入门 2分钟 · 来自 空安全 kt 审查 AI 代码 新题 审查生成的客户导入器 用可空类型、智能转换、安全调用与 Elvis 运算符表达缺失值,并在 Java 互操作和生成代码边界避免运行时空指针异常。 高级 6分钟 · 来自 空安全 kt 找出 bug 新题 找出主机名读取里的 bug 用可空类型、智能转换、安全调用与 Elvis 运算符表达缺失值,并在 Java 互操作和生成代码边界避免运行时空指针异常。 进阶 4分钟 · 来自 空安全 kt 测验 新题 一组解析器需要构造时持有的共享缓存,以及固定的解析模板。哪个起点最符合该契约? 用类、接口、继承与组合建立清晰的对象边界,理解 Kotlin 的默认 final、运行时多态、构造顺序和可见性规则。 进阶 1分钟 · 来自 面向对象编程 kt 测验 新题 BillingService 需要通过可替换目标发送审计记录。哪种关系能保持最小边界? 用类、接口、继承与组合建立清晰的对象边界,理解 Kotlin 的默认 final、运行时多态、构造顺序和可见性规则。 进阶 1分钟 · 来自 面向对象编程 kt 测验 新题 哪个声明允许子类覆盖 calculate()? 用类、接口、继承与组合建立清晰的对象边界,理解 Kotlin 的默认 final、运行时多态、构造顺序和可见性规则。 入门 1分钟 · 来自 面向对象编程 kt 预测输出 新题 这段程序会输出什么? 用类、接口、继承与组合建立清晰的对象边界,理解 Kotlin 的默认 final、运行时多态、构造顺序和可见性规则。 入门 2分钟 · 来自 面向对象编程 kt 审查 AI 代码 新题 审查生成的通知服务 用类、接口、继承与组合建立清晰的对象边界,理解 Kotlin 的默认 final、运行时多态、构造顺序和可见性规则。 高级 6分钟 · 来自 面向对象编程 kt 找出 bug 新题 找出账户余额里的 bug 用类、接口、继承与组合建立清晰的对象边界,理解 Kotlin 的默认 final、运行时多态、构造顺序和可见性规则。 入门 4分钟 · 来自 面向对象编程 kt 测验 新题 对于 String? 类型的 value,关于 value.let 与 value?.let 的哪项说法正确? 用接收者与返回值两个维度选择 Kotlin 的 let、run、with、apply 和 also,并避开空值、嵌套接收者与链式返回陷阱。 进阶 1分钟 · 来自 作用域函数 kt 预测输出 新题 接收者存在但 let 块返回 null 时,lookup("known") 会输出什么? 用接收者与返回值两个维度选择 Kotlin 的 let、run、with、apply 和 also,并避开空值、嵌套接收者与链式返回陷阱。 进阶 2分钟 · 来自 作用域函数 kt 预测输出 新题 这个程序会输出什么? 用接收者与返回值两个维度选择 Kotlin 的 let、run、with、apply 和 also,并避开空值、嵌套接收者与链式返回陷阱。 入门 2分钟 · 来自 作用域函数 kt 审查 AI 代码 新题 审查生成的注册表 用接收者与返回值两个维度选择 Kotlin 的 let、run、with、apply 和 also,并避开空值、嵌套接收者与链式返回陷阱。 高级 6分钟 · 来自 作用域函数 kt 找出 bug 新题 找出嵌套 it 接收者里的 bug 用接收者与返回值两个维度选择 Kotlin 的 let、run、with、apply 和 also,并避开空值、嵌套接收者与链式返回陷阱。 进阶 4分钟 · 来自 作用域函数 kt 测验 新题 一个实现既是已知的 Failure 变体,又是已知的 Retryable 变体,最适合用哪种声明建模? 用受限继承层级表达有限状态,借助穷尽 when 在新增分支时获得编译器反馈,并分清密封类、密封接口与枚举的边界。 进阶 1分钟 · 来自 密封类与密封接口 kt 测验 新题 在 Kotlin 2.4.10 中,密封类的直接子类可以声明在哪里? 用受限继承层级表达有限状态,借助穷尽 when 在新增分支时获得编译器反馈,并分清密封类、密封接口与枚举的边界。 进阶 1分钟 · 来自 密封类与密封接口 kt 预测输出 新题 这段程序会输出什么? 用受限继承层级表达有限状态,借助穷尽 when 在新增分支时获得编译器反馈,并分清密封类、密封接口与枚举的边界。 入门 2分钟 · 来自 密封类与密封接口 kt 预测输出 新题 这段程序会输出什么? 用受限继承层级表达有限状态,借助穷尽 when 在新增分支时获得编译器反馈,并分清密封类、密封接口与枚举的边界。 进阶 2分钟 · 来自 密封类与密封接口 kt 审查 AI 代码 新题 审查生成的支付状态层级 用受限继承层级表达有限状态,借助穷尽 when 在新增分支时获得编译器反馈,并分清密封类、密封接口与枚举的边界。 高级 6分钟 · 来自 密封类与密封接口 kt 找出 bug 新题 找出配送状态标签里的 bug 用受限继承层级表达有限状态,借助穷尽 when 在新增分支时获得编译器反馈,并分清密封类、密封接口与枚举的边界。 进阶 4分钟 · 来自 密封类与密封接口