面试总结(一)美团

1.死锁 死锁必要条件 举生活中例子

例子自己面试完之后好好想了一下,面试的时候一直没有举出恰当的

本质原因

  • 系统资源有限
  • 进程推进顺序不合理

四个必要条件

  • 互斥:资源在同一时刻只能被一个进程占有,此时若有别的进程要使用这个资源只能等待
  • 占有且等待:一个进程已经占有着资源,还需要申请别的资源,需要一直等待,并且保持自己的资源不释放
  • 不可剥夺:资源不能被别的进程抢占
  • 循环等待:存在进程链,每个进程占有着下一个进程的至少一个资源

例子

喝水和喝饮料,喝水喝到一半,要喝饮料,此时处于死锁。要喝饮料需要杯子,杯子被水占有着,饮料没喝到一直等待杯子,水不能继续喝,因此处于死锁.
互斥:杯子里面只能装水或者饮料,不能倒掉杯子剩余的东西
占有且等待:喝水需要占有杯子,喝饮料需要占用杯子,喝饮料没有申请到杯子,需要一直等待杯子,且喝水一直占有着杯子
不可剥夺:喝饮料不能抢占喝水的杯子
循环等待:喝饮料需要喝水的杯子

预防死锁

打破四个必要条件

举例

破坏互斥:杯子不需要只能装一种东西
破坏占有且等待:喝饮料不需要一直等待杯子,可以让喝水先喝完,再请求杯子
不可剥夺:可以剥夺,喝饮料直接抢走喝水的杯子
循环等待:喝饮料的杯子与喝水的杯子不是一个

2.补码,为什么用补码,浮点数怎么表示的

  • 补码:正数补码还是本身,负数补码是符号位为1,其余取反然后加一
  • 为什么用补码:符号位和数值位统一,同时加法减法统一处理直接丢弃溢出位
  • 浮点数怎么表示
    - 符号位,0表示正数,1表示负数
    -

你可能感兴趣的:(面试)