滴滴一面面经

本文介绍了数据库事务的ACID特性,探讨了Redis中的缓存问题,讲解了面向对象编程的继承、多态和封装概念,并对比了int和Integer的区别,还涉及了JVM和JUC中的CAS理论,以及力扣排序算法的应用。
摘要由CSDN通过智能技术生成

滴滴一面面经

1、自我介绍

2、聊项目(社团项目和个人项目)

3、数据库相关,数据库的事务

据库事务是指一组数据库操作,这些操作要么全部成功执行,要么全部失败回滚。事务的目的是确保数据库的一致性和完整性。
事务具有以下四个特性,通常被称为ACID特性:

  • 原子性(Atomicity):事务中的所有操作要么全部执行成功,要么全部失败回滚,不会出现部分执行的情况。
  • 一致性(Consistency):事务在执行前后,数据库的状态必须保持一致。即事务开始时和结束时,数据库中的数据必须满足预设的约束条件。
  • 隔离性(Isolation):并发执行的事务之间应该相互隔离,每个事务都应该感觉不到其他事务的存在。隔离级别包括读未提交、读已提交、可重复读和串行化。
  • 持久性(Durability):一旦事务提交成功,其所做的修改将永久保存在数据库中,即使系统发生故障也不会丢失。

数据库事务可以通过以下方式来管理:

  • 开始事务(BEGIN):标识一个事务的开始。
  • 提交事务(COMMIT):将事务中的操作永久保存到数据库中。
  • 回滚事务(ROLLBACK):撤销事务中的所有操作,回到事务开始前的状态。

4、Redis相关,Redis的三大问题(缓存击穿,缓存雪崩,缓存穿透)

5、面向对象的概念(继承,多态,封装)

对于什么是面向对象,它是一种编程思想。聊到面向对象,我们需要聊一下面向过程的编程方式,因为面向对象是从面向过程过渡而来的。面向过程跟面向对象,是两种不同的思维方式,处理问题的思考的角度不一样。

  • 面相过程的思维方式,它更加注重这个事情的每一个步骤以及顺序。他比较直接高效,需要做什么可以直接开始干。
  • 面向对象的思维方式,它更加注重事情有哪些参与者,需求里面有哪些对象,这些对象各自需要做些什么事情。将其拆解成一个个模块和对象,这样会更易于维护和拓展。

这个是面向过程跟面向对象的区别。

1、继承

什么是继承呢?

在 Java 中子类使用关键词 extend 去继承父类的关系。

继承主要用途是将子类存在共性的东西,把它抽取出来放到父类里面,比如将共同拥有的属性和方法抽取出来放到父类里面。

继承的好处:

想要使用这些属性和方法的时候,可以直接去使用父类的,而不需要自己再重新去定义,更大程度的实现代码复用。

我们不需要写很多的冗余的代码,把共性的全部抽到父类,可以直接调用,如果需要个性化自定义子类的方法时,去重写父类的方法即可。

2、多态

什么是多态呢?
多态是同一个行为具有多个不同表现形式或形态的能力。
多态就是同一个接口,使用不同的实例而执行不同操作
多态的理解稍微有点抽象,解释一下:
多态是和继承一脉相承的,多态存在的需要有三个必要条件:继承、重写、父类引用指向子类对象。

用个案例再补充解释一下:
比如说打印机,它属于一个父类,有一台彩色打印机,属于子类,有一台黑白打印机,也属于子类。
打印机的关系
用这个案例来解释一下多态,以及多态存在的三个必要条件:
继承,彩色打印机和黑白打印机都继承自打印机这个父类;
重写,打印机有一个打印的方法,彩色打印机和黑白打印机会重写父类的打印的方法,效果就是,彩色打印机打印出来的效果是彩色,而黑白打印机打印出来的效果是黑白的。
父类引用指向子类对象,例如:Parent p = new Child() ;对应到打印机的案例,new 一个对象的时候,父类打印机的引用会指向具体的对象,彩色打印机或者黑白打印机。

多态的好处:
便于接口的维护和拓展,可以将某一个子类切换成其他的子类,代码不需要做任何的改变,具有可替换性。
多态的弊端:
只有是子类重写的父类的方法,父类才可以调用,但如果子类的方法不是重写父类的,而是子类独有的,那么这个时候多态就使用不了,这个是需要注意的点。

3、封装

什么是封装呢?
通过访问修饰符(如 private)来修饰成员变量和成员方法,将不需要对外提供的内容都隐藏起来,提供公共方法对其访问。

封装的好处是:
隐藏实现细节,提供公共的访问方式
提高了代码的复用性
提高安全性
封装的意义在于,将内部的实现细节隐藏起来,对外部的调用者来说是透明的,调用者也不用关心它内部是怎么实现的,只需要知道这个方法是干什么的就好。

6、int 和 integer 的区别

(1)Integer是int的包装类;int是基本数据类型。
(2)Integer变量必须实例化后才能使用;int变量不需要。
(3)Integer实际是对象的引用,当new一个Integer时,实际上是生成一个指针指向此对象;而int则是直接存储数据值。
(4)Integer的默认值是null;int的默认值是0

7、JVM相关问题

8、JUC中 CAS理论

9、力扣排序原题,输出前k大的元素

  • 20
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值