最后
一线互联网Android面试题含详解(初级到高级专题)
这些题目是今年群友去腾讯、百度、小米、乐视、美团、58、猎豹、360、新浪、搜狐等一线互联网公司面试被问到的题目。并且大多数都整理了答案,熟悉这些知识点会大大增加通过前两轮技术面试的几率
如果设置门槛,很多开发者朋友会因此错过这套高级架构资料,错过提升成为架构师的可能。这就失去了我们的初衷;让更多人都能通过高效高质量的学习,提升自己的技术和格局,升职加薪。
最后送给大家一句话,望共勉,永远不要放弃自己的梦想和追求;
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
-
9、sqlit 操作 (分割操作)
-
10、replace 完成加密解码操作
-
11、== 与 === 比较操作符
-
12、字符串的遍历
-
13、数字类型的安全转换函数
-
14、Double 转 Int 类型格式化
-
15、apply 内置函数
-
16、let 内置函数
-
17、run 内置函数
-
18、with 内置函数
-
19、also 内置函数
-
20、takeIf 内置函数
-
21、takeUnless 内置函数
-
总结
================================================================
任何语言都有自己的特性,了解特性,才能深入的学习
// kotlin 在声明参数的时候,默认是不可空类型。
var name: String = “tiger”
// name = null 如果赋值为null 将会报错, 可以赋值成 空串 “”
println(name)
// 但是我们在声明时,使用 ? 指定成可空类型
var name2: String ?
name2 = null
name2 = “tiger”
println(name2)
var name: String ?
name = “tiger”
name = null
// name 是可空类型,可能是null 想要使用name,必须给出补救措施,在name后面添加 ? 符号
// name 是可空类型 如果真的是null,?后面的代码不执行,就不会引发空指针异常
val str = name?.capitalize()
println(str)
var name: String? = null
name = “tiger”
name = “”
// name 是可空类型,可能是null 想要使用name,必须给出补救措施,在name后面添加 ? 符号
// name 是可空类型 如果真的是null,?后面的代码不执行,就不会引发空指针异常
val str = name?.let {
// 如果能进入这里,it 一定不为null
if (it.isBlank()){ // isBlank name是空串 “” 没有内容
“Default”
}else{
“我是:$it”
}
}
println(str)
var name: String? = null
// name 是可空类型,可能是null 想要使用name,必须给出补救措施,在name后面添加 ? 符号
name = “tiger”
// !! 断言操作符,和Java一样,不论name 是否为空,都会走后面的代码
// 如果不能保证name 被赋值,就会出现崩溃的情况
val str = name!!.capitalize()
println(str)
var name: String? = null
// name 是可空类型,可能是null 想要使用name,必须给出补救措施,在name后面添加 ? 符号
if (name != null){ // if 也算是补救措施,代码会自动识别, 和Java一样
val str = name.capitalize()
println(str)
}else{
println(“name is null”)
}
var name: String? = “tiger”
name = null
// ?: 空合并操作符, 如果name 等于 null ,就会执行 ?: 后面的区域
println(name ?: “原来你没名字啊”)
// let 函数 + 空合并操作符
println(name?.let { “$it” ?: “原来你没名字啊” })
try {
var name: String? = null
checkException(name)
println(name!!.capitalize())
}catch (e: Exception){
println(“啊呀,又出差了 $e”)
}
fun checkException(name: String?) {
name ?: throw CustomException()
}
// 自定义的异常
class CustomException : IllegalArgumentException(“传null 还想使用 非空断言操作符?不出错才怪呢”)
val info = “You are handsome.”
val indexOf = info.indexOf(“.”)
println(info.substring(0, indexOf))
// kotlin 基本使用下面的这种方式截取, 从0 直到(until) indexOf
println(info.substring(0 until indexOf))
val jsonText = “张三,王五,大漂亮,杨美丽”
// list 自动类型推断成 list == List
val list = jsonText.split(“,”)
// 直接输出list 集合
println(list)
// C++ 里面有解构操作。 kotlin 里面也有解构操作
val (v1, v2, v3, v4) = list
println(“解构之后的4个数据,分别是: v1:$v1, v2: $v2, v3: $v3, v4: $v4”)
val sourcePwd = “qwertyuiopasdfghjklzxcvbnm”
println(sourcePwd)
// 加密操作:就是把字符替换打乱的操作
val newPwd = sourcePwd.replace(Regex(“[asdwq]”)){
when(it.value){ // 轮询字符串中的每个字符
“a” -> “2”
“s” -> “4”
“d” -> “3”
“w” -> “5”
“q” -> “7”
else -> it.value //不做任何操作,直接返回原值
}
}
println(newPwd)
// 解密操作
val sourcePwdNew = newPwd.replace(Regex(“[24357]”)){
when(it.value){
“2” -> “a”
“4” -> “s”
“3” -> “d”
“5” -> “w”
“7” -> “q”
else -> it.value
}
}
println(sourcePwdNew)
// == 是内容的比较,相当于Java 中的 equals()
// === 是引用的比较,对比的是状态池里面的引用
val name1 = “Tiger”
val name2 = “tiger”
val name3 = “tiger”
val name4 = name2.capitalize()
println(name1 === name2)
println(name3 == name2)
println(name1 === name4)
val str = “qwertyuiopasdfghjklzxcvbnm”
str.forEach {
// it 隐式函数,是str 中的每一个字符
println(“遍历出来的数据 $it”)
}
val number: Int = “666”.toInt()
println(number)
val number1: Int = “666.6”.toInt() // 字符串里面放入double 类型,转换成int 类型,会失败导致程序崩溃
println(number1)
// 解决 上面崩溃的问题
val number2: Int? = “666.6”.toIntOrNull()
println(number1 ?: "字符类型转换失败,返回一个null ")
// 四舍五入 算法转int
println(54.2334.toInt())
// 四舍五入 算法转int
println(54.2334.roundToInt())
// 保留小数点后三位
val r = “%.3f”.format(53.3432212)
println®
val info = “The tiger you are the most handsome”
// 普通写法
println(“info 字符串的长度是 ${info.length}”)
println(“info 的最后一个字符是 ${info[info.length-1]}”)
println(“info 全部转换成大写字符 ${info.toUpperCase()}”)
// apply 内置函数的方式
// info.apply 的特点:apply 函数始终是返回 info 本身 String 类型
val str = info.apply {
// 大部分情况下,匿名函数,都会持有一个it ,但是apply 不会持有it,却会持有当前 this == info 本身
println(“info 字符串的长度是 ${this.length}”)
println(“info 的最后一个字符是 ${info[this.length-1]}”)
println(“info 全部转换成大写字符 ${this.toUpperCase()}”)
// 也可以直接把this 去掉
println(“info 字符串的长度是 ${length}”)
println(“info 的最后一个字符是 ${info[length-1]}”)
println(“info 全部转换成大写字符 ${toUpperCase()}”)
}
println(str)
// 真正使用apply 函数的方法如下
// info.apply 特点: apply 函数始终是返回 info 本身,可以使用链式调用
info.apply {
println(“info 字符串的长度是 ${length}”)
}.apply {
println(“info 的最后一个字符是 ${info[length-1]}”)
}.apply {
println(“info 全部转换成大写字符 ${toUpperCase()}”)
}
// 文件读取小例子
// 普通写法
val file = File(“/Users/tiger/Desktop/aaa.text”)
file.setExecutable(true)
file.setReadable(true)
println(file.readLines())
// apply 写法
val r = file.apply {
写在最后
本次我的分享也接近尾声了,感谢你们在百忙中花上一下午来这里聆听我的宣讲,希望在接下来的日子,我们共同成长,一起进步!!!
最后放上一个大概的Android学习方向及思路(详细的内容太多了~),提供给大家:
对于程序员来说,要学习的知识内容、技术有太多太多,这里就先放上一部分,其他的内容有机会在后面的文章向大家呈现出来,不过我自己所有的学习资料都整理成了一个文档,一直在不断学习,希望能帮助到大家,也节省大家在网上搜索资料的时间来学习,也可以分享动态给身边好友一起学习!
为什么某些人会一直比你优秀,是因为他本身就很优秀还一直在持续努力变得更优秀,而你是不是还在满足于现状内心在窃喜!希望读到这的您能点个小赞和关注下我,以后还会更新技术干货,谢谢您的支持!
Android架构师之路很漫长,一起共勉吧!
如果你觉得文章写得不错就给个赞呗?如果你觉得那里值得改进的,请给我留言,一定会认真查询,修正不足,谢谢。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
的宣讲,希望在接下来的日子,我们共同成长,一起进步!!!
最后放上一个大概的Android学习方向及思路(详细的内容太多了~),提供给大家:
[外链图片转存中…(img-mJ8Had6Z-1715723408047)]
对于程序员来说,要学习的知识内容、技术有太多太多,这里就先放上一部分,其他的内容有机会在后面的文章向大家呈现出来,不过我自己所有的学习资料都整理成了一个文档,一直在不断学习,希望能帮助到大家,也节省大家在网上搜索资料的时间来学习,也可以分享动态给身边好友一起学习!
为什么某些人会一直比你优秀,是因为他本身就很优秀还一直在持续努力变得更优秀,而你是不是还在满足于现状内心在窃喜!希望读到这的您能点个小赞和关注下我,以后还会更新技术干货,谢谢您的支持!
Android架构师之路很漫长,一起共勉吧!
如果你觉得文章写得不错就给个赞呗?如果你觉得那里值得改进的,请给我留言,一定会认真查询,修正不足,谢谢。
[外链图片转存中…(img-WzxPTquY-1715723408047)]
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!