蔚来数据开发实习小记
先问项目
之后对简历上的东西进行提问(附上一部分答案)
1.java问题:
JVM
垃圾回收(没答上来)
ArrayList和LinkedList的区别:
ArrayList 是基于动态数组数据结构的实现,访问元素速度优于 LinkedList。LinkedList 是基于链表数据结构的实现,占用的内存空间比较大,但在批量插入或删除数据时优于 ArrayList。
删除的时候时间复杂度: ArrayList是O(n) ,LinkedList是O(1)
深拷贝和浅拷贝
浅拷贝只复制指向某个对象的指针,不复制对象本身,新旧对象还是共享同一块内存。
深拷贝会另外创造一个一模一样的对象,新对象跟原对象不共享内存,修改新对象不会改到原对象,是“值”而不是“引用”(不是分支)
2.scala问题:
var和val
var是一个可变变量,这是一个可以通过重新分配来更改为另一个值的变量;val是一个只读变量
case class 样例类
初始化的时候可以不用new,当然你也可以加上,普通类一定需要加new;
toString 展示类以及属性值
默认实现了equals 和hashCode
继承了一些函数 apply 和unapplay apply()返回实例对象; unapply()返回可选元组集合
case class构造函数的参数是public级别的,我们可以直接访问
支持模式匹配
mysql中的哪几种锁(共享锁 读锁 针对同一份数据,多个读操作可以同时进行而不会互相影响 、
排他锁 写锁 当前写操作没有完成前,它会阻断其他写锁和读锁、
IS 锁 意向共享锁 当事务准备在某条记录上加S锁时,需要先在表级别+IS锁、
IX锁 意向排他锁 当事务准备在某条记录上+X锁时,需要先在表级别+IX锁)
mysql引擎innodb
redis底层实现
kafka : Kafka确保每个分区的消息只能被同一个消费者组中的同一个消费者消费
最后两道算法:
1.完美二叉树 填充每个节点的下一个右侧节点指针
2.寻找旋转排序数组中的最小值
之后对简历上的东西进行提问(附上一部分答案)
1.java问题:
JVM
垃圾回收(没答上来)
ArrayList和LinkedList的区别:
ArrayList 是基于动态数组数据结构的实现,访问元素速度优于 LinkedList。LinkedList 是基于链表数据结构的实现,占用的内存空间比较大,但在批量插入或删除数据时优于 ArrayList。
删除的时候时间复杂度: ArrayList是O(n) ,LinkedList是O(1)
深拷贝和浅拷贝
浅拷贝只复制指向某个对象的指针,不复制对象本身,新旧对象还是共享同一块内存。
深拷贝会另外创造一个一模一样的对象,新对象跟原对象不共享内存,修改新对象不会改到原对象,是“值”而不是“引用”(不是分支)
2.scala问题:
var和val
var是一个可变变量,这是一个可以通过重新分配来更改为另一个值的变量;val是一个只读变量
case class 样例类
初始化的时候可以不用new,当然你也可以加上,普通类一定需要加new;
toString 展示类以及属性值
默认实现了equals 和hashCode
继承了一些函数 apply 和unapplay apply()返回实例对象; unapply()返回可选元组集合
case class构造函数的参数是public级别的,我们可以直接访问
支持模式匹配
mysql中的哪几种锁(共享锁 读锁 针对同一份数据,多个读操作可以同时进行而不会互相影响 、
排他锁 写锁 当前写操作没有完成前,它会阻断其他写锁和读锁、
IS 锁 意向共享锁 当事务准备在某条记录上加S锁时,需要先在表级别+IS锁、
IX锁 意向排他锁 当事务准备在某条记录上+X锁时,需要先在表级别+IX锁)
mysql引擎innodb
redis底层实现
kafka : Kafka确保每个分区的消息只能被同一个消费者组中的同一个消费者消费
最后两道算法:
1.完美二叉树 填充每个节点的下一个右侧节点指针
2.寻找旋转排序数组中的最小值