1、sql
这种校招里考察sql脚本最难的一个级别的题目了。sql的题解答只能从题意出发,可以得到以下几点:
1 最终一个日期只能出现一次,需要用group by `day`
2 日期需要正序排序,而且正好是group by项,可以直接用order by `day`
3 最终只出现单日最多的货物,这个是难点
3.1 group by 之后同一属性只出现一列,而且是所有数据的第一列。那能不能先对数据排好序,再执行group by ,即
select a.`day`, a.itemId, a.num from ( select `day`, itemId, num from goods order by num desc ) as a group by `day order by `day`
但是很悲剧的是,实操后发现group by还是对原数据进行的排序
3.2 那就对 day和num两个属性同时group by,这样可以对num进行直接order排序,然后再结果进行一遍按day的排序,取数据的第一条,即
select a.`day`, a.itemId, a.num from ( select `day`, itemId, num from goods group by `day`,num order by `day`, num desc ) as a group by `day `
OK,可以实现,但是双group,执行效率较差
3.3可以再考虑到left join的方法
2、b+树和二叉树的区别
二叉树的每个结点至多有2个结点 或者只有1个左结点
B树 1。根结点至少有2个结点,2。除根结点和失败结点外的所有结点至少有m/2上取整个子结点,3。所有的失败结点均处在同一层上。左结点小于右结点。
B+树是B-树的变形,B+树的所有关键字都出现在叶结点上,上面各层结点中的关键码均是下一层相应结点中最大关键码的复写。
3、事务的隔离级别+解释
事务隔离级别 |
脏读 |
不可重复读 |
幻读 |
读未提交(read-uncommitted) |
是 |
是 |
是 |
不可重复读(read-committed) |
否 |
是 |
是 |
可重复读(repeatable-read) |
否 |
否 |
是 |
串行化(serializable) |
否 |
否 |
否 |
4、说思路
描述:给你10只实验小鼠,用7天的时间检验999个瓶子中带有一瓶毒药的瓶子是哪一瓶,小鼠喝了毒药7天后才会死亡,如何实现?
这是一道很典型的推理题。题中7天是个幌子,因为间隔也是7天,所以不用考虑。最主要的部分就是10只小鼠,如果判断出999个瓶子。没有别的方法,只能排列组合。就想到二进制,2的10次方能标记1024种状态,完全满足999的数字要求。
做法是将10只老鼠按二进制的位置排好,然后瓶子也按两进制标记,比如第4瓶是100,那么给位置是1的老鼠喝这瓶药,最后死亡的老鼠,按位置1的顺序排列就是毒药的编号。
当然,目前的疫情检验也参考了这种方案。
5、HTTPS的连接过程
在使用HTTPS是需要保证服务端配置正确了对应的安全证书
客户端发送请求到服务端
服务端返回公钥和证书到客户端
客户端接收后会验证证书的安全性,如果通过则会随机生成一个随机数,用公钥对其加密,发送到服务端
服务端接受到这个加密后的随机数后会用私钥对其解密得到真正的随机数,随后用这个随机数当做私钥对需要发送的数据进行对称加密
客户端在接收到加密后的数据使用私钥(即生成的随机值)对数据进行解密并且解析数据呈现结果给客户
SSL加密建立
已经看到这里了
接着往下看有福利哦!
为了让大家顺利斩获21届秋招Offer
我们针对项目不足的小伙伴超车设计项目小拿为你准备了专属在线实习
限时福利只要 0 元(会员专享)还有项目奖励金200元哦!如果看到这里已经心痒难耐赶紧点击下方链接上车吧
跑个腿项目于9月1日正式开启
https://naoffer.com/intern/program/14