资讯专栏INFORMATION COLUMN

测测你的Kotlin基础

荆兆峰 / 1737人阅读

摘要:本次测试满分分,测测看,你能拿几分语言有基本数据类型吗分中有哪些访问控制符,分别代表什么意思默认访问控制符是什么分接口是否允许有方法实现是否允许声明成员变量分类有什么作用分语言中如何实现类似创建匿名内部类对象分的扩展相对继承有什么优势扩展方

</>复制代码

  1. 本次测试满分160分,测测看,你能拿几分 <<<

1)Kotlin语言有基本数据类型吗?(5分)

2)Kotlin中有哪些访问控制符,分别代表什么意思?默认访问控制符是什么?(5分)

3)Kotlin接口是否允许有方法实现?是否允许声明成员变量?(5分)

4)Sealed类有什么作用?(5分)

5)Kotlin语言中如何实现类似Java创建匿名内部类对象?(10分)

6)Kotlin的扩展相对继承有什么优势?扩展方法的执行是否也遵循多态?(10分)

7)如果一个类同时实现多个接口,接口中存在同名方法,如何解决冲突?(5分)

8)Kotlin语言中是否存在static关键字,如果没有,如何声明静态变量,并实现与Java互通(5分)

9)使用Kotlin语言是否一定不会出现空指针异常?为什么?(10分)

10)Kotlin语言中推荐使用什么方式判断两个对象是否相等?如何判断两个对象是同一个对象?(5分)

11)如果使用Foo 这种方式声明泛型,使用Foo<*>这种方式接收该对象实例,代表什么意思?如何理解Kotlin泛型,与Java有什么区别?(10分)

12)如何自定义setter/getter方法?(5分)

13)使用语句var x = null声明变量x是否合法?如果合法,x的具体类型是什么?(5分)

14)下面这段代码的输出结果是什么?(10分)

</>复制代码

  1. val list = listOf(1, 2, 3)
  2. list.add(4)
  3. println(list)

15)下面这段代码的执行结果是什么?(5分)

</>复制代码

  1. // Kotlin端
  2. object A {
  3. fun init() {
  4. println("A init")
  5. }
  6. }
  7. // Java端
  8. A.init()

16)下面代码的执行结果是什么?(5分)

</>复制代码

  1. fun sum(a: Int, b: Int) = { a + b }
  2. println(sum(1, 3))

17)下面代码的执行结果是什么?(5分)

</>复制代码

  1. println(null is Any)
  2. println(null!! is Nothing)

18)下面代码的执行结果是什么?(10分)

</>复制代码

  1. class A {
  2. init() {
  3. f()
  4. }
  5. val a = "a"
  6. fun f() {
  7. println(a)
  8. }
  9. }
  10. fun main(args: Array) {
  11. A()
  12. }

19)下面代码的执行结果是什么?(10分)

</>复制代码

  1. println(127 as Int? === 127 as Int?)
  2. println(128 as Int? === 128 as Int?)

20)下面代码的执行结果是什么?如果运行异常,应该怎样修改才能达到预期效果?(10分)

</>复制代码

  1. (1..5).forEach {
  2. if (it == 3) break
  3. println(it)
  4. }

21)下面代码的执行结果是什么?如果运行异常,应该怎样修改,为什么要这样修改?(10分)

</>复制代码

  1. val A.x: Int = 3
  2. println(A().x)

22)下面这段代码的执行结果是什么?(10分)

</>复制代码

  1. fun isOdd(x: Int) = x % 2 != 0
  2. fun length(s: String) = s.length
  3. fun compose(f: (B) -> C, g: (A) -> B): (A) -> C {
  4. return { x -> f(g(x)) }
  5. }
  6. fun main(args: Array) {
  7. val oddLength = compose(::isOdd, ::length)
  8. val strings = listOf("a", "ab", "abc")
  9. println(strings.filter(oddLength))
  10. }

注:本篇例子Kotlin版本为1.2.31,更新版本可能存在部分差异

下面是你的基础等级:

得分 评价
0 ~ 80 基础较差
80 ~ 108 基础较好
108 ~ 160 基础很棒
查看答案方法

微信扫描下方二维码关注欧阳锋工作室,回复“Kotlin测试题答案”即可获取当前测试题答案

欢迎加入Kotlin交流群

如果你也喜欢Kotlin语言,欢迎加入我的Kotlin交流群: 329673958 ,一起来参与Kotlin语言的推广工作。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/8818.html

相关文章

  • Android Gradle系列-进阶篇

    摘要:如果你有新建一个项目的经历,那么你将看到推荐的方案在的中使用来定义版本号全局变量。例如之前的版本号就可以使用如下方式实现因为使用的是语言,所以以上都是语法例如版本控制,上面代码的意思就是将有个相关的版本依赖放到的变量中,同时放到了中。 showImg(https://segmentfault.com/img/bVbsh3m?w=2560&h=1280); 上篇文章我们已经将Gradle...

    lvzishen 评论0 收藏0
  • [译] WorkManager 基础入门

    摘要:让我们探讨一下如何确保你的工作脱离主线程运行并保证执行。这确保在默认情况下,你的工作是同步运行的,并且在主线程之外运行。这是应该脱离主线程运行的工作,但是,因为它与直接相关,所以如果关闭应用程序则不需要继续。 原文地址:WorkManager Basics 原文作者:Lyla Fujiwara 译文出自:掘金翻译计划 本文永久链接:github.com/xitu/gold-m… 译者:Ri...

    番茄西红柿 评论0 收藏0

发表评论

0条评论

荆兆峰

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<