25届中国移动一面(15min)

​ #软件开发2024笔面经#鼠鼠抱着试一试心态投的,过了简历初筛收到笔试通知,做完笔试收到面试通知就参加了,面试才知道只招应届生(主要是云计算方向的,我是投Java的),面试官人很好,把面试流程过完了(涨经验了)。

1.自我介绍

老生常谈的自己的技术栈优势等,然后是项目介绍相关的。

2.主键索引和唯一索引的区别

主键索引

  1. 定义与用途:主键索引用于唯一标识表中的每一行数据,确保数据的完整性和准确性。
  2. 强制性与非空约束:主键索引具有强制性,一个表只能有一个主键。主键字段的值必须是唯一的,且不允许为空。
  3. 产生聚集索引:主键索引总是产生唯一的聚集索引。聚集索引决定了表中数据的物理存储顺序,按照主键字段的值进行排序。
  4. 外键关联:主键常用于与其他表建立外键关联,以维护表之间的引用完整性。
  5. 性能考虑:由于主键索引是聚集索引,它通常能够提供更高效的范围查询和排序操作,因为数据本身就是按照索引顺序存储的。

唯一索引

  1. 定义与用途:唯一索引也用于确保索引列的值组合在表中是唯一的,但它不像主键那样具有强制性。
  2. 强制性与非空约束:唯一索引不具有强制性,一个表可以有多个唯一索引。唯一索引的字段允许有空值。
  3. 产生非聚集索引:默认情况下,唯一索引产生唯一非聚集索引。非聚集索引与数据分开存储,包含一个指向数据行的指针。但如果表已经存在聚集索引,也可以选择创建唯一聚集索引。
  4. 外键关联:唯一索引不常用于外键关联,因为主键更适合用于这种场景。
  5. 性能考虑:唯一非聚集索引主要用于快速定位到具有唯一值的行,但对于范围查询和排序操作可能不如聚集索引高效,因为数据不是按照索引顺序存储的。

3.线程的状态

​​编辑

新建(New)

创建后尚未启动。

# 可运行(Runnable)

可能正在运行,也可能正在等待 CPU 时间片。

包含了操作系统线程状态中的 Running 和 Ready。

# 阻塞(Blocking)

等待获取一个排它锁,如果其线程释放了锁就会结束此状态。

# 无限期等待(Waiting)

等待其它线程显式地唤醒,否则不会被分配 CPU 时间片。

没有设置 Timeout 参数的 Object.wait() 方法

Object.notify() / Object.notifyAll()

没有设置 Timeout 参数的 Thread.join() 方法

被调用的线程执行完毕

LockSupport.park() 方法

-

# 限期等待(Timed Waiting)

无需等待其它线程显式地唤醒,在一定时间之后会被系统自动唤醒。

调用 Thread.sleep() 方法使线程进入限期等待状态时,常常用“使一个线程睡眠”进行描述。

调用 Object.wait() 方法使线程进入限期等待或者无限期等待时,常常用“挂起一个线程”进行描述。

睡眠和挂起是用来描述行为,而阻塞和等待用来描述状态。

阻塞和等待的区别在于,阻塞是被动的,它是在等待获取一个排它锁。而等待是主动的,通过调用 Thread.sleep() 和 Object.wait() 等方法进入。

Thread.sleep() 方法

时间结束

设置了 Timeout 参数的 Object.wait() 方法

时间结束 / Object.notify() / Object.notifyAll()

设置了 Timeout 参数的 Thread.join() 方法

时间结束 / 被调用的线程执行完毕

LockSupport.parkNanos() 方法

-

LockSupport.parkUntil() 方法

-

# 死亡(Terminated)

可以是线程结束任务之后自己结束,或者产生了异常而结束

著作权归@pdai所有 原文链接:https://pdai.tech/md/java/thread/java-thread-x-thread-basic.html

4.start()和run()的区别

start方法:这是Thread类的一个方法,用于启动线程。当你调用一个线程的start方法时,它会创建一个新的线程,并在新的线程中调用该线程的run方法,这意味着start方法负责线程的启动和调度。

run方法:这是Runnable接口中的一个方法,或者可以直接在继承自Thread的类中被重写。它定义了线程应该执行的具体任务或操作。当线程启动后,它会自动调用run方法来执行其中的代码。

总结来说,start方法用于启动线程,并在新的线程中执行run方法的内容;而run方法则定义了线程应该执行的具体任务。

5.代码开发规范(面试官根据简历提的)

1.命名规范

不能以下划线或$开始或结束,不能拼音和英文混合或纯中文,杜绝不规范的缩写,尽量使用完整的单词。

类名使用大驼峰形式,但以下情形例外:DO/ BO/ DTO / VO/ AO/ PO/ UID等。方法名、参数名、变量(局部、成员)都用小驼峰。常量全部大写,单词下划线隔开。

抽象类命名使用Abstract或Base开头;异常类命名使用Exception结尾;测试类命名以它要测试的类的名称开始,以Test结尾。

定义数组时中括号在类型后面,不能在数组名后边。

布尔类型变量不能加is前缀,否则框架解析时可能会引起系列化错误。

......

详细的可以看以下链接

原文链接:  

http://t.csdnimg.cn/qK2zc

全部评论
投的实习还是春招?
1 回复
分享
发布于 04-22 22:21 江苏
不是有实习岗位吗
点赞 回复
分享
发布于 04-22 13:03 河北
滴滴
校招火热招聘中
官网直投
就只问了这些吗
点赞 回复
分享
发布于 04-23 12:19 江苏
我看了评论区想问一下,佬是25届投的春招?
点赞 回复
分享
发布于 04-24 08:52 美国

相关推荐

9 41 评论
分享
牛客网
牛客企业服务