字节一面3.25

有哪些表?序列表?序列号是在下单表里?是的

  • 用户表,用户密码表
  • 商品表,商品库存表
  • 下单表
  • 序列号表
  • 秒杀表

项目哪些用到了事务?

  • 用户:注册
  • 商品:创建商品、减库存、增加销量
  • 下单:创建下单、生成下单号
ItemStockDOMapper.xml:
update item_stock set stock = stock - #{amount}
where item_id = #{itemId} and stock >= #{amount}
int affectedRow = itemStockDOMapper.decreaseStock(itmeId,amount);//通过返回的受影响条目,来判断是否减库存成功。
if(affectedRow > 0 ){
  return true;//更新库存成功
}else{
  return false;//更新库存失败
}

万一同一时刻很多用户,序列号重复怎么办?

ACID?

  1. 原子性
  2. 一致性
  3. 隔离性
  4. 持久性

protected public private区别?

    • private: 同一个类
    • default: 同一个类、同一个包中
    • protected:同一个类、同一个包中、子类
    • public: 同一个类、同一个包中、子类、所有类

抽象类和接口的区别?

    • 定义抽象类的关键字是abstract class,定义接口的关键字是interface;
    • 继承抽象类是extends,实现接口是用implements;
    • 继承抽象类只有单继承,实现接口可以多实现;
    • 抽象类中可以有构造方法,接口中不能有构造方法;
    • 抽象类中可以有成员变量,接口中只能有常量;
    • 抽象类中可以有成员方法,接口中只能有抽象方法;
    • 抽象类中增加方法可以不影响子类,接口中增加方法通常影响子类;
    • 从jdk1.8开始,允许接口中有非抽象方法,但需要加default关键字;

接口:

  • 不可以定义成员变量,但可以定义常量;
  • 只能定义没有实现的方法,方法默认是public abstract;(特殊的抽象类,只包含有抽象方法的抽象类)
  • 类实现接口后,必须实现该接口定义的所有方法;

abstract可以修饰什么?

  • 类和方法;
  • 具有抽象方法的类一定是抽象类,但是抽象类可以没有抽象方法,可以全是具体方法;

final可以修饰属性、方法、类吗?final可以修饰接口吗?

可以, 不可以。

    • fianl修饰类,类不可以被继承,而且类里的所有成员方法也是final的;
    • fianl修饰方法,方法不能被重写;
    • fianl修饰变量,变量变成常量,一旦赋值再也不能修改。(基本类型变量:初始化后再不能更改;引用类型变量:初始化后,不能再指向另一个对象,但是对象的内容是可以改变的。)

static修饰类、方法、属性时的特点?

  1. static修饰类(只能修饰内部类),只有在用到的时候才加载,而不是和类一起加载;
  2. static修饰的成员属于类,类的所有对象共享的,可以通过类.来调用;
  3. static修饰代码块,静态代码块在非静态代码块之前执行,且只执行一次;

解释一下哈希冲突?扩容机制?扩容后原本数据怎么移动?

  • 对key求hashcode,并经过扰动函数处理得到hash值,然后hash&(length-1)就是所在数组的位置,如果没有元素,说明没有冲突,直接存放,如果有则冲突,需要调用equals方法比较是否相等,相等则覆盖,不等则用链表存储,当链表长度>8时,转化为红黑树。
  • 当数组的元素大于length*负载因子0.75时,则将数组扩为原来的两倍,并且重新计算hash&(length-1)值,把元素转移过去,防止产生环形链表,所以采用尾插法。扩容很影响效率,所以最好在最初的时候就指定数组大小。

栈里放什么?什么时候栈溢出?什么时候堆溢出?

  • 基本数据类型和对象的引用,堆:对象实例
  • 栈溢出:递归调用方法,线程请求的栈深度大于虚拟机允许的最大深度。(单线程SOM)-->(多线程OOM)当虚拟机扩展栈深度时,无法申请到足够空间则OOM。
  • 堆溢出:循环创建大对象(OOM)

问操作系统?不太清楚。 虚拟内存干嘛?

  1. 虚拟内存为每个进程都分配了一致的、私有的地址空间。
  2. 虚拟内存的重要意义是它定义了一个连续的虚拟地址空间,并且把内存扩展到硬盘空间。

题目:给一个颗树,找到target节点,并返回距离target为2(k)的所有节点?

先找到target节点,然后以target为根节点,找到第k层的所有节点即可!

全部评论

相关推荐

求offer的大角牛:不吃香菜
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务