金三银四必备,全面总结 Kotlin 面试知识点

Kotlin 面试题汇总 在kotlin 中,int, double,float 这些类型是没有的,在kotlin 中需要使用 Int,这是引用类型,以及Double,Float 这些类型。您可以使用$符号来使用字符串中的某些变量,也可以在{}符号之间执行一些操作。就是定义一个变量,然后当用户获取时,如果变量值为空,那么就会包未初始化异常,如果用户后面进行了初始化,就直接返回了这个值。因此,要将空值分配给变量,您需要将name变量声明为可空字符串,然后在访问此变量期间,您需要使用安全调用运算符,即? 阅读详情

作者:彭旭锐

前言

  • 在 Android 面试中很重视基础知识的考察,其中语言基础主要包括 Java、Kotlin、C/C++ 三种编程语言。在小彭面试的经验中,发现很多同学的 Kotlin 语言能力只是停留在一些非常入门的语法使用上;
  • 在这篇文章里,我将为你浓缩总结 Kotlin 中最常用的知识点和原理。希望通过这篇文章能够帮助你扫除支持盲区,对于一些语法背后的原理也有所涉猎。

1. 为什么要使用 Kotlin?

面试官问这个问题一方面可能是先想引入 Kotlin 这个话题,另一方面是想考察你的认知能力,是不是真的有思考过 Kotlin 的优势 / 价值,还是随波逐流别人用我也跟着用。你可以这么回答:

在 Android 生态中主要有 C++、Java、Kotlin 三种语言 ,它们的关系不是替换而是互补。其中,C++ 的语境是算法和高性能,Java 的语境是平台无关和内存管理,而 Kotlin 则融合了多种语言中的优秀特性,带来了一种更现代化的编程方式。 例如简化异步编程的协程(coroutines),提高代码质量的可空性(nullability),lambda 表达式等。

2. 语法糖的味道

  • == 和 equal() 相同,=== 比较内存地址

  • 顶级成员(函数 & 属性)的原理: Kotlin 顶级成员的本质是 Java 静态成员,编译后会自动生成文件名Kt的类,可以使用@Jvm:fileName注解修改自动生成的类名。

  • 默认参数的原理: Kotlin 默认参数的本质是将默认值 固化 到调用位置,所以在 Java 中无法直接调用带默认参数的函数,需要在 Kotlin 函数上增加@JvmOverloads注解,指示编译器生成重载方法(@JvmOverloads会为默认参数提供重载方法)。

  • 解构声明的原理: Kotlin 解构声明可以把一个对象的属性分解为一组变量,所以解构声明的本质是局部变量。

    举例:

    val (name, price) = Book("Kotlin入门", 66.6f)
    println(name)
    println(price)
-------------------------------------------
Kotlin 类需要声明`operator fun componentN()`方法来实现解构功能,否则是不具备解构声明的功能的,例如:
    class Book(var name: String, var price: Float) {
        operator fun component1(): String { // 解构的第一个变量
            return name
        }

        operator fun component2(): Float { // 解构的第二个变量
            return price
        }
    }
  • Sequences 序列的原理: Sequences 提升性能的关键在于多个操作共享同一个 Iterator 迭代器,只需要一次循环就可以完成数据操作。Sequences 又是懒惰的,需要遇到终端操作才会开始工作。

  • 扩展函数的原理: 扩展函数的语义是在不修改类 / 不继承类的情况下,向一个类添加新函数或者新属性。本质是静态函数,静态函数的第一个参数是接收者类型,调用扩展时不会创建适配对象或者任何运行时的额外消耗。在 Java 中,我们只需要像调用普通静态方法那样调用扩展即可。相关资料:Kotlin | 扩展函数(终于知道为什么 with 用 this,let 用 it)

  • let、apply、with 的区别和应用场景: let、with、apply 都是标准库函数,它们的主要区别在 lambda 参数类型定义不同。apply、with 的 lambda 参数是 T 的扩展函数,因此在 lambda 内使用 this 引用接收者对象,而 let 的 lambda 参数是参数为 T 的高阶函数,因此 lambda 内使用 it 引用唯一参数。

  • 委托机制的原理: Kotlin 委托的语法关键字是 by,其本质上是面向编译器的语法糖,三种委托(类委托、对象委托和局部变量委托)在编译时都会转化为 “无糖语法”。例如类委托:编译器会实现基础接口的所有方法,并直接委托给基础对象来处理。例如对象委托和局部变量委托:在编译时会生成辅助属性(prop$degelate),而属性 / 变量的 getter() 和 setter() 方法只是简单地委托给辅助属性的 getValue() 和 setValue() 处理。相关资料:Kotlin | 委托机制 & 原理 & 应用

  • 中缀函数: 声明 infix 关键字的函数是中缀函数,调用中缀函数时可以省略圆点以及圆括号等程序符号,让语句更自然。

    中缀函数的要求:

    • 1、成员函数或扩展函数
    • 2、函数只有一个参数
    • 3、不能使用可变参数或默认参数

    举例:

    infix fun String.吃(fruit: String): String {
        return "${this}吃${fruit}"
    }
    调用: "小明" 吃 "苹果"

3. 类型系统

  • 数值类型: Kotlin 将基本数据类型和引用型统一为:Byte、Short、Int、Long、Float、Double、Char 和 Boolean。需要注意的是,类型的统一并不意味着 Kotlin 所有的数值类型都是引用类型,大多数情况下,它们在编译后会变成基本数据类型,类型参数会被编译为引用类型。

  • 隐式转换: Kotlin 不存在隐式类型转换,即时是低级类型也需要显式转换为高级类型:

    //隐式转换,编译器会报错
    val anInt: Int = 5
    val ccLong: Long = anInt 

    //需要去显式的转换,下面这个才是正确的 
    val ddLong: Long = anInt.toLong()
  • 平台类型: 当可空性注解不存在时,Java 类型会被转换为 Kotlin 的平台类型。平台类型本质上是 Kotlin 编译器无法确定其可空信息,既可以把它当作可空类型,也可以把它当作非空类型。

    如果所有来自 Java 的值都被看成非空是不合理的,反之把 Java 值都当作可空的,由会引出大量 Null 检查。综合考量,平台类型是 Kotlin 为开发者选择的折中的设计方案。

  • 类型转换: 较小类型并不是较大类型的子类型,较小的类型不能隐式转换为较大的类型。

    val b: Byte = 1 // OK
    val i: Int = b // 编译错误
    val i: Int = b.toInt() // OK
  • 只读集合和可变集合: 只读集合只可读,而可变集合可以增删该差(例如 List 只读,MutableList 可变)。需要注意,只读集合引用指向的集合不一定是不可变的,因为你使用的变量可能是众多指向同一个集合的其中一个。

  • Array 和 IntArray 的区别: Array 相当于引用类型数组 Integer[],IntArray 相当于数值类型数组 int[]。

  • Unit: Any 的子类,作为函数返回值时表示没有返回值,可以省略,与 Java void 类似。

  • Nothing: 表示表达式或者函数永远不会返回,Nothing? 唯一允许的值是 null。

  • Java Void: void 的包装类,与 void 类似表示一个函数没有有效的返回值,返回值只能是 null。


4. 面向对象

  • 类修饰符: Kotlin 类 / 方法默认是 final 的,如果想让继承类 / 重写方法,需要在基类 / 基方法添加 open 修饰符。
    final:不允许继承或重写
    open:允许继承或重写
    abstract:抽象类 / 抽象方法
  • 访问修饰符: Java 默认的访问修饰符是 protected,Kotlin 默认的访问修饰符是 public。
public:所有地方可见
    internal:模块中可见,一个模块就是一组编译的 Kotlin 文件
    protected:子类中可见(与 Java 不同,相同包不可见,Kotlin 没有 default 包可见)
    private:类中可见
  • 构造函数:

    • 默认构造函数: class 默认有一个无参主构造函数,如果显式声明了构造函数,则默认的无参主构造函数失效;
    • 主构造函数: 声明在 class 关键字后,其中 constructor 关键词可以省略;
    • 次级构造函数: 如果声明了次级构造函数,则默认的无参主构造函数会失效。如果存在主构造函数,次级构造函数需要直接或间接委托给主构造函数。
  • init 函数执行顺序: 主构造函数 > init > 次级构造函数

  • 内部类: Kotlin 默认为静态内部类,如果想访问类中的成员方法和属性,需要添加 inner 关键字称为非静态内部类;Java 默认为非静态内部类。

  • data 关键字原理: data 关键字用于定义数据类型,编译器会自动从主构造函数中提取属性并生成一系列函数:equals()/hashCode()、toString()、componentN()、copy()。

  • sealed 关键字原理: 密封类用来表示受限的类继承结构,密封类可以有子类,但是所有子类都必须内嵌在该密封类中。

  • object 与 companion object 的区别 object 有两层语义:静态匿名内部类 + 单例对象 companion object 是伴生对象,一个类只能有一个,代表了类的静态成员(函数 / 属性)

  • 单例: Kotlin 可以使用 Java 相似的方法实现单例,也可以采用 Kotlin 特有的语法。相关资料:Kotlin下的5种单例模式

    • object
    // Kotlin实现
    object SingletonDemo
*   **by lazy(mode = LazyThreadSafetyMode.SYNCHRONIZED)**
class SingletonDemo private constructor() {
        companion object {
            val instance: SingletonDemo by lazy(mode = LazyThreadSafetyMode.SYNCHRONIZED) {
    		        SingletonDemo() 
    				}
        }
    }

5. lambda 表达式

  • lambda 表达式本质上是「可以作为值传递的代码块」。在老版本 Java 中,传递代码块需要使用匿名内部类实现,而使用 lambda 表达式甚至连函数声明都不需要,可以直接传递代码块作为函数值。

  • it: 当 lambda 表达式只有一个参数,可以用 it 关键字来引用唯一的实参。

  • lambda 表达式的种类

    • 1、普通 Lambda 表达式:例如 ()->R
    • 2、带接收者对象的 Lambda 表达式:例如 T.()->R
  • lambda 表达式访问局部变量的原理: 在 Java 中,匿名内部类访问的局部变量必须是 final 修饰的,否则需要使用数组或对象做一层包装。在 Kotlin 中,lambda 表达式可以直接访问非 final 的局部变量,其原理是提供了一层包装类,修改局部变量本质上是修改包装类中的属性。

    class Ref<T>(var value:T)
  • lambda 表达式编译优化: 在循环中使用 Java 8 与 Kotlin 中的 lambda 表达式时,会存在编译时优化,编译器会将 lambda 优化为一个 static 变量,除非 lambda 表达式中访问了外部的变量或函数。

  • inline 内联函数的原理:

    • 内联 lambda 表达式参数(主要优点): 内联函数的参数如果是 lambda 表达式,则该参数默认也是 inline 的。lambda 表达式也会被固化的函数调用位置,从而减少了为 lambda 表达式创建匿名内部类对象的开销。当 lambda 表达式被经常调用时,可以减少内存开销。

    • 减少入栈出栈过程(次要优点): 内联函数的函数体被固化到函数调用位置,执行过程中减少了栈帧创建、入栈和出栈过程。需要注意:如果函数体太大就不适合使用内联函数了,因为会大幅度增加字节码大小。

    • @PublishApi 注解: 编译器要求内联函数必须是 public 类型,使用 @PublishApi 注解可以实现 internal 等访问修饰的同时又实现内联

    • noinline 非内联: 如果在内联函数内部,lambda 表达式参数被其它非内联函数调用,会报编译时错误。这是因为 lambda 表达式已经被拉平而无法传递给其他非内联函数。可以给参数加上 noinline 关键字表示禁止内联。

inline fun test(noinline inlined: () -> Unit) {
            otherNoinlineMethod(inlined)
        }
*   **非局部返回(Non-local returns):** 一个不带标签的 return 语句只能用在 fun 声明的函数中使用,因此在 lambda 表达式中的 return 必须带标签,指明需要 return 的是哪一级的函数:
fun song(f: (String) -> Unit) {
            // do something
        }

        fun behavior() {
            song {
                println("song $it")
                return //报错: 'return' is not allowed here
                return@song // 局部返回
                return@behavior // 非局部返回
            }
        }
    唯一的例外是在内联函数中的 lambda 表达式参数,可以直接使用不带标签的 return,返回的是调用内联函数的外部函数,而不是内联函数本身,默认就是非局部返回。
inline fun song(f: (String) -> Unit) {
            // do something
        }

        fun behavior() {
            song {
                println("song $it")
                return // 非局部返回
                return@song // 局部返回
                return@behavior // 非局部返回
            }
        }
*   **crossinline 非局部返回:** 禁止内联函数的 lambda 表达式参数使用非局部返回

*   **实化类型参数 reified:** 因为泛型擦除的影响,运行期间不清楚类型实参的类型,Kotlin 中使用 **带实化类型参数的内联函数** 可以突破这种限制。实化类型参数在插入到调用位置时会使用类型实参的确切类型代替,因此可以确定实参类型。


    在这个函数里,我们传入一个List,企图从中过滤出 T 类型的元素:
        Java:
        <T> List<T> filter(List list) {
            List<T> result = new ArrayList<>();
            for (Object e : list) {
                if (e instanceof T) { // compiler error
                    result.add(e);
                }
            }
            return result;
        }
        ---------------------------------------------------
        Kotlin:
        fun <T> filter(list: List<*>): List<T> {
            val result = ArrayList<T>()
            for (e in list) {
                if (e is T) { // cannot check for instance of erased type: T
                    result.add(e)
                }
            }
            return result
        }

        调用:
        val list = listOf("", 1, false)
        val strList = filter<String>(list)
        ---------------------------------------------------
        内联后:
        val result = ArrayList<String>()
        for (e in list) {
            if (e is String) {
                result.add(e)
            }
        }

5. DSL 领域特定语言

DSL 是专门用于解决某个问题的语言,虽然没有通用语言那么全面,但在解决特定问题时更加高效。案例:Compose 的 UI 代码也是采用了 DSL,使得 Compose 拥有了不输于 XML 的编码效率。实现 DSL 需要可以利用的 Kotlin 语法特性,相关资料:Kotlin DSL 实战:像 Compose 一样写代码

  • 高阶函数: 使得 lambda 参数脱离圆括号,减少一个参数;

  • 扩展函数: 传递 Receiver,减少一个参数;

  • Context Receivers: 传递多个 Receiver,在扩展函数的基础上减少多个参数;

  • 中缀函数: 让语法更简洁自然;

  • @DSLMarker: 用于限制 lambda 中不带标签的 this 只能访问到最近的 Receiver 类型,当调用更外层的 Receiver 时必须显式指定 this@XXX。

context(View)
    val Float.dp 
        get() = this * this@View.resources.displayMetrics.density

    class SomeView : View {
      val someDimension = 4f.dp
    }

6. 总结

少部分比较聪明的小伙伴就会问了,你这怎么没有涉及协程、Flow 这些知识点?那是因为这些知识点比较多,小彭决定单独放在一篇文章里。一篇文章拆成两篇用,它不香吗?

Kotlin相关面试题 目录 一.请简述下什么是kotlin?它有什么特性? 二.Kotlin 中注解 @JvmOverloads 的作用? 三.Kotlin中的MutableList与List有什么区别? 四.kotlin实现单例的几种方式? 五. kotlin中关键字data的理解?相对于普通的类有哪些特点? 六.什么是委托属性?简单说一下应用场景? 七.kotlin中with、run、apply、let函数的区别?一般用于什么场景? 八.kotlin中Unit的应用以及和Java中void的区别? 九.Ko 阅读详情

相关推荐

【面试系列】Kotlin 高频面试题及详细解答

Kotlin 是一种现代编程语言,具有简洁语法和空安全机制。初级问题涉及变量声明、数据类、扩展函数、协程等基础知识。中级问题涵盖内联函数、委托属性、协程上下文和调度器等。高级问题探讨了智能类型转换、DSL、自定义属性委托、内联类和跨平台开发。Kotlin 的协程机制、密封类和枚举类的区别、高阶函数和内联函数结合使用的优势、泛型中的 `reified` 关键字等也都被详细解释。Kotlin 强调结构化并发,内联类优化性能,跨平台开发提高代码重用性,协程的取消机制确保任务及时终止。

在路上的专栏 2533

kotlin面试题

在本文中,将分享一些在 Android 面试中被问到的比较多的Kotlin 相关问题。所以,如果你正在准备 Android 面试,那么这篇文章对你来说是很有必要看的,或者收藏起来,转载起来...

qxf865618770的博客 6344

LMI线性矩阵不等式之非线性变量处理

​ 如果一个LMI线性矩阵不等式中的某项存在两个矩阵变量相乘,那么称该类情形为非线性矩阵不等式,而要直接求解时很困难的,而且LMI工具箱也无法求解非线性矩阵,所以需要通过变量替换法进行处理。 ​...

Mr.邹的博客 4550

Kotlin开发高频面试题(附答案)

1. 什么是Kotlin,它相比Java的主要优势是什么?2.解释Kotlin中的空安全机制。3.什么是协程,Kotlin中如何使用协程进行异步编程?4.什么是高阶函数,Kotlin中如何使用?5.解释Kotlin中的when表达式与Java的switch语句有何不同。6.如何在Kotlin中实现单例模式?7.什么是data class,它与普通类的区别是什么?8.什么是@JvmOverloads注解的作用?9.Kotlin中val与var的区别是什么?10. 解释null安全类型系统。11. 如何在Kot

yihanss的博客 6502

一文搞懂什么是OTA(空中升级)

OTA(Over-The-Air,空中升级)是一种通过无线通信技术实现远程更新设备固件或软件的方法。这项技术广泛应用于现代物联网(IoT)设备、智能手机、汽车、嵌入式系统等领域,提供了一种无需物理连接的便捷更新方式。OTA更新的核心在于使设备能够自动、可靠、安全地从远程服务器获取和应用更新,改善设备性能、添加新功能或修复安全漏洞。

不积跬步无以至千里 7万+

Windows Server 2012 R2虚拟机安装全攻略:从镜像选择到网络配置一步到位

本文提供Windows Server 2012 R2虚拟机安装全攻略,涵盖从镜像选择到网络配置的完整流程。详细讲解在Oracle VM VirtualBox中的安装步骤、TCP/IP网络设置、系统优化及常见问题解决方案,帮助用户快速搭建可立即投入使用的服务器环境。特别适合IT初学者和系统管理员学习传统服务器应用的部署与配置。

weixin_28363123的博客 541

备战金三银四,1000+Android面试真题解析,助你从容应对Android面试挑战,锁定心仪职位

对于工作能力特别强的人来说,在旺季找工作,机会更多,谈offer 的筹码也会大大增加,容易要到高薪,当然,招聘淡季中他们也不愁找工作的,毕竟工作能力强嘛对于工作能力一般,或者刚入行的人来说,在旺季找工作,竞争压力会特别大。那倒不如笨鸟先飞,现在就开始找工作,边面试边总结经验,还可以慢慢的有所比较,最终选定满意的offer。,涵盖了从HR面试到专业面试的各个方面,从基础知识到案例分析,从个人经历到行业趋势,都将是你备战“而外面裸辞,被裁员的也有一大把,等着年后的金三银四,甚至愿意自降薪资,只为了上岸;

大模型训练 1004

python 识别滑块验证码

博客来源于: https://www.cnblogs.com/wyh0923/p/16528354.html # -*- coding: utf-8 -*- # https://gov.pkulaw.cn/ 1. import io 2. import json 3. from pathlib import Path 4. from PIL import Image 5. import bas...

2103

该如何高效实用Kotlin?,【金三银四】

其实客户端开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。然而Android架构学习进阶是一条漫长而艰苦的道路,不能靠一时激情,更不是熬几天几夜就能学好的,必须养成平时努力学习的习惯。贵在坚持!基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!**

2301_81694225的博客 810

基于STM32F4的NRF24L01驱动程序

基于STM32F4xx的NRF24L01驱动程序 提示:硬件平台基于STM32F427VIT6、NRF24L01模块 文章目录基于STM32F4xx的NRF24L01驱动程序前言一、NRF24L01简单介绍1,什么是NRF24L012,NRF24L01通信方法3,NRF24L01通信原理4,地址分配&通道分配问题二、STM32CubeMX配置三、添加底层文件1,添加.c/.h文件到工程中2,使用说明四,下载 前言 提示:本例程采用STM32CubeMX配置底层,采用硬件SPI方式驱动NRF24

qq_43603289的博客 2815

Python爬虫实战:逆向解析腾讯视频API,高效获取结构化视频信息

首先,我们定义期望获取的数据结构,这有助于数据验证和代码清晰度。python"""腾讯视频信息数据模型"""title: str = Field(..., description="视频标题")vid: str = Field(..., description="视频唯一ID")play_count: Optional[int] = Field(None, description="播放量")

2201_76125261的博客 2380

金三银四怎么提高面试效率?不想去的公司要参加面试吗?

年后正式开工,不少企业也开始放出很多招聘岗位。这个时候想要找新工作的朋友就要开始行动起来了。求职本身就是一件比较耗费时间和精力的事情,大部分人都比较希望面完想去的公司之后就能拿到心仪的offer。但实际上,很多时候都要面试十几场甚至二十几场之后,才能找到合适的工作。其实面试并不是面得越多越好,要注重一定的效率。比如面试几场就能拿到offer和面试20场才能拿到offer,第一种明显效率更高。

m0_64365896的博客 796

Android SurfaceFlinger——概述(一)

对于系统渲染流程的理解是指导 SurfaceFlinger 设计的核心思想,从 Android 4.1 一直到 Android 9.0 都没有太大的变化。只要抓住这五个核心思想,我们阅读 SurfaceFlinger 的难度就会下降不少。下面看一下 SurfaceFlinger 的体系和 Skia 以及 View的绘制流程的关系。framework 面向开发者所有的 View 是便于开发的控件,里面仅仅只是提供了当前 View 各种属性以及功能。

小旭的专栏 2584

面试必备知识点!想给金三银四找工作的程序员几点建议,醍醐灌顶!

基本情况 本人普通本科,Android开发岗。 此文主要是秋招面试经验汇总,最终拿到了百度、腾讯的offer。 主要包括阿里三面,腾讯四面,百度三面,网易三面,美团一面。 目前现在是需求量趋于平衡,对初中级水平的开发人员需求量变少,但是对高级以上的需求市场还是很匮乏,特别是对于特定细分领域的Android开发人员也是很匮乏,对Android开发的综合能力,特别是基础原理性要求也越来越高,比如很多公司要求会对对某项要求会优先考虑,比如现在流行的Kotlin,混合开发,跨平台开发,NDK,高级图像处理等,市场上

204

从一只龙虾到一支团队:OpenClaw 单 Bot 多 Agent 配置实践

单 Bot 多 Agent只有一个对外的聊天入口(飞书 Bot)内部有多个独立的 AI Agent,各司其职主 Agent(总指挥)负责接收任务并分配给子 Agent子 Agent 完成任务后将结果返回给主 Agent角色Agent ID职责使用场景🎯 总指挥main-agent统筹协调,任务分发接收所有用户请求✍️ 笔杆子内容创作公众号、博客、小红书🔬 参谋canmou深度研究竞品分析、市场调研📋 运营官operations运营管理邮件、日历、社交媒体。

Maynor的博客 1084

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

kt面试文章推荐

金三银四必备,全面总结 Kotlin 面试知识点

Android小白 1342

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

面试系列,紧急应对金三银四跳槽季,并发编程挑战

果你觉得这些内容对你有帮助,可以添加V获取:vip204888 (备注Android)**[外链图片转存中…(img-d8z0mDOn-1712570838950)]

2401_83977626的博客 680

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

1932页的最新Android面试题解析合集分享,祝你金三银四跳槽顺利

转眼又到新的一年,不管你是否准备好,金三银四招聘旺季马上就要到来。 2021是充满变化的一年,身处时代洪流下的我们,跌宕起伏,喜怒哀乐,所有的情感都已化作难以磨灭的年度记忆。 尽管生活周而复始,但仍值得期待。 为了更好地帮助大家进行学习,在这里给大家分享一份BAT大佬整理总结出来的《2022中高级Android面试必知百题》,里面包含了所有Android面试的知识点,可以全面的进行知识补给。 这份资料包含了Java和Android两大部分,由于篇幅原因,这里只展示部分知识点,有需要的朋友滑到文末有免费领取

Android23333的博客 414

备战金三银四,直击Android开发者面试通关攻略

春节假期结束后,正值金三银四招聘高峰之际,不知各位Android开发者是否已秣马厉兵,严阵以待?面对这求职市场的黄金期,未经认真筹备,无疑是对个人职业发展的一种敷衍。针对Android开发者的面试流程,大多遵循这样的规律:首先,候选人需进行自我介绍及项目展示;其次,面试官会对项目详情和项目实施过程中的难点问题进行深入询问;接着,会考核一系列Android基础及核心知识点;当然,算法题也是面试环节中不可或缺的一部分。

Androiddddd的博客 445

【面试必备】2023最全Android面试宝典免费分享~

马上就到了2023金三银四了,Android又即将迎来一场“腥风血雨”。今年是疫情管控放开的一年,全球经济缓慢复苏,各大公司都在往好的方面发展,当然Android岗位也会逐渐增多,程序员们的选择也会多几分。所以大家一定要努力提高自己,为自己争取一席之地。下面给大家分享一些面试建议吧。

2201_75617725的博客 483

2022金三银四,跳槽必备,2022中高级 Android 面试必知百题,圆你大厂梦

提升自身的技能 面试考察的知识点多而杂,要完全掌握需要花费大量的时间和精力。但是面试中经常被问到的知识点却没有多少。我们只需要把自身的技能提高,当面试官问到这类知识点的时候,我们就可以侃侃而谈,更加大方自信。 我作为从事Android开发者数年的人,大大小小的面试也经历过不少,根据自己的经验还有身边一些朋友的经验,总结了一些面试经常考察的问题。希望帮助到准备跳槽或者正在跳槽的朋友们。 第一章 Java 方面 (一)Java 基础部分 抽象类与接口的区别? 分别讲讲 final,static,synchro

xiaokangss的博客 197

金三银四我带你去BAT面试现场,附赠课程+题库

前言 “金三银四”再过几天就到了,又到了一年一度的大型**“程序猿跳槽大会”**。作为大龄IT从业者的我们,每到这个时候就会想起年轻时的自己,为了能搞定面试官,通宵背题库,背定义,四处收集面试真题…每次都准备的满满当当,可一到了面试的时候,就会发现与自己预想的完全不一样。 直到后来经历了这么多年,自己也从曾经的应聘者变成了面试者,才终于明白这样的道理:面试官远远要比应聘者狡猾得多。 不按套路出牌是面试官的“基本素养”,多年的工作经验使他们完全不需要提前准备一些特定的题目和答案,随便的几个问题,就可以通过回

m0_56130999的博客 226

Java面试突击手册(2022版)每日一刷,金三银四稳了

前言 春节一过金三银四就要开始了,我相信将会是面试求职的高峰时期,如果此时手里有份高质量的面试宝典,那么你将得心应手面对考官各种问题。虽然不敢保证你能应聘上心仪的职位,但是能保证看完这些内容你的收获将超乎你的想象! 面试准备 1.准备一份自己的自我介绍,面试的时候根据面试对象适当进行修改(突出重点,突出自己的优势在哪里,切忌流水账); 2.注意随身带上自己的成绩单和简历复印件;(有的公司在面试前都会让你交一份成绩单和简历当做面试中的参考。) 3.如果需要笔试就提前刷一些笔试题,大部分在线笔试的类.

wdjnb的博客 531

金三银四过半了,大家拿到offer了吗?

在经历了所谓的“金三银四”招聘季的初期之后,许多人期待就业市场能够逐渐回暖。然而,近期互联网行业却再次传来裁员的消息,特别是某知名互联网公司的大规模裁员事件,引起了业界的广泛关注。

star_nwe的博客 628

【2023面试必备】2023最新Android面试题汇总,背完就能收割offer了!

2023金三银四就要来临,大家是否陆陆续续进入状态了呢?无论你是不满意现状,准备跳槽,还是想要在公司创造更多的价值,都必须要加倍努力才行。对于就业环境来说,其实刚开始还是个未解之谜,但不管形势如何,,什么都不是问题~下面为了帮助大家准备面试,》,

xiaokangss的博客 750

2022最新Android大厂面试题详解,堪称金三银四的葵花宝典_2022android面试

但是近日,阿里、腾讯裁员纷纷冲上热搜。大厂裁员减负,本来在热火朝天的金三银四,奋力冲刺和面试跳槽大厂的互联网打工人们,陷入了迷茫和焦虑。对大环境的担忧是应该的,因为大环境会直接影响到我们生活的方方面面。所以在这个当下,我整理了一些技术资料和面试题集,供大家提升进阶,不管你是有跳槽打算还是单纯精进自己,都可以免费领取一份。,这些面试资料整理给大家,希望面试踩过的坑不要再踩,遭遇的技术瓶颈一次性消灭。

2401_89722210的博客 795
上一篇: Android 开发们的现状通病~
下一篇: APP加固攻防梳理
懂你的大海
博客等级 码龄6年 9049粉丝 1381原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值