2021.9.18笔试遇到的问题

  1. 适合用动态规划的问题的特征

四大特征:
a. 最优子结构(子问题最优时,母问题通过优化一定能求得最优解)
b.子问题重叠(子问题本质上是和母问题一样的,只是问题的输入参数不一样)
c.问题存在边界(对于自顶向上和自底向下的方法,边界分别是问题的出口和入口)
d.子问题重叠(在用递归算法自顶向下对问题进行求解时,每次产生的子问题并不总是新问题,有些子问题会被重复计算多次,而动态规划算法正是利用了这种子问题的重叠性质,对每一个子问题只计算一次,然后将其计算结果保存在一个表格中,当再次需要计算已经计算过的子问题时)

  1. sleep和wait分别属于不同的类

a. sleep(long millis) 方法是java.lang包下Thread类的
在线程睡眠期间,会释放当前线程的cpu使用权给其它线程但是不会释放锁,线程醒来是就绪状态,因此会和其它线程抢夺cpu执行时间
b. wait(long timeout)、notify()、notifyAll() 方法是java.lang包下Object类的
线程睡眠时会释放当前线程的cpu使用权给其它线程并且会释放锁,如果不指定睡眠时间则需要调用notify()、notifyAll() 方法来唤醒线程

  1. 自己对于异常的一个误解

我一直以为Java中说异常就是单纯指Exception类,原来异常是指Throwable类,包括了Exception类和Error类

  1. spring bean的默认作用范围是:

singleton

  1. n个数选最大m个数的时间复杂度

第一种算法:
直接对n个数进行堆排序,每次建立一个大根堆,只需完成排序的前m次。这种的方法时间复杂度是O(mlogn),每建立一次大根堆需要 logn 的时间,总共m次。
第二种算法:
最开始选取前m个数,用这m个数建立一个小根堆。接下来,对后面n-m个数进行遍历,用根结点与这n-m个数进行比较,当发现一个数比根结点大时,交换,然后重新建立一个小根堆。最终我们可以得到m个最大的数字。这种方法的时间复杂度是O(nlogm)。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值