星汉未来后端实习生二面/三面
二面
自我介绍
常用的数据结构都有哪些?数组、链表、栈、队列、树、堆、邻接矩阵、邻接表、哈希表;
这些数据结构都应用于什么场景解决什么问题?把每一个结构能做的都简单的说了一说,把树里面的内容展开讲了一下比如BST、AVL、红黑树、B树、B+树。
如何利用两个栈来模拟队列的特性?很经典的做法,可以去**看看,不展开说了。
B树和B+树相比来说有什么区别呢B+?最经典的是叶子节点之间存在指针连接。
体现在MySQL里面的是哪一种数据结构呢?InnoDB引擎使用的就是B+树。
SQL语句中having的使用场景有了解过吗?有点忘记了(这个其实挺不应该的)。
在进行MySQL的SQL语句进行分析的话应该怎么做?一般使用explain来做。
什么样的字段适合建立索引,什么样的字段适合建立联合索引?从聚簇索引->二级索引->回表的角度进行分析什么字段需要建立索引,从索引覆盖的角度介绍联合索引的场景。
介绍一个URL从输入到他的结果返回整个流程,说的详细一点?小林Coding图解网络模块的经典背诵,直接可以讲很长时间,强烈建议去看看,能讲5分钟以上。
有了HTTP为什么还需要HTTPS呢? HTTP的三大经典安全问题:明文传输带来的窃听,数据来源者身份的不确定问题,数据篡改问题->HTTPS在应用层和传输层之间引入了SSL/TLS安全协议同时通过以下三种方式:混合加密(对称和非对称加密)解决明文传输的窃听问题,MD5消息摘要+数字签名解决数据篡改问题,CA颁布的数字证书解决身份验证问题。
现在需要进行一个ID生成器,你大概从哪些方面来考虑它的一个设计?首先是从数据库方面考虑,ID如果很长的话二级索引存储的ID可能很大那么消耗的空间会更大,同时同样的物理页可能会导致更低效的存储,所以优先使用自增ID作为主键的ID生成器,这个由于是顺序的所以也能比较好的解决页分裂的一个问题,如果我们的需求是需要较长的唯一性ID,那么雪花算法其实也是一个不错的选择。
自增ID在我们说的一个电商场景里会有什么样的问题吗?订单如果不断被取消的话,那么其实自增id会越过这些生成过的id,那么就会使得数据库里面存储的数据页是比较离散和稀疏的,会导致一些问题。
其实更重要的因为他可能会暴露出订单的敏感信息,比如暴露出每天的订单量,有时候我们还需要订单ID有一些业务信息在里面,你有什么想法吗?加时间戳。
雪花算法就有时间戳呀,你可以再考虑一下,提示一下,这是一个订单,你可以在ID里面放一些什么信息呢?可以把用户的一些信息放在里面避免根据订单去查用户信息。
OK,其实是类似的,我们一般是把商品信息放在里面,不会把用户信息放在里面,雪花算法是怎么做的?有uuid和时间戳等等。
Redis里面什么是缓存击穿和雪崩还有缓存穿透?经典八股。
有什么预防或者避免缓存击穿的场景吗?热点信息不过期,只在更新的时候回写缓存。
谁来负责回写?服务端来做回写。
也行。然后是互斥锁的方式来做,把同一时间的多个请求阻塞一下。
怎么阻塞呢?可以对请求的key进行加锁,可以在服务端加锁或者用分布式锁。
分布式锁用什么实现比较方便呢?Redis的红锁机制。
假如用过期时间来处理有什么优化吗?热点数据重复访问的时候可以续时。
我听过一种就是打散过期时间的方式你有了解吗?那个一般是用来解决缓存雪崩的。
平时有没有用过Docker、Nginx、Git的一些常见配置吗?简单讲了一些。
写一下算法题,看看有没有思路?Leetcode 287秒了。
打开IDE用你熟悉的语言写一个斐波那契数列?秒了。
11.10 Update:
三面:
这一面主要是CEO来面的我,也是自我介绍加一些校园经历和项目经历,没有从技术层面上来拷打我而是去和我交流在一个团队中作为leader或者说进行团队协作的过程中遇到的一些问题,其实都是一些很经典的回答,面了那么多场也有一套专属的作答方式了,然后说到我对新技术的一些看法,从我做的AI科研经历以及项目做了一些引导,感觉整个面试是在了解我这个人的一个性格,沟通能力以及一个优缺点的过程,然后向我详细介绍了一下公司的业务都是哪些,serveless还是比较有意思的,要融合多种语言做一个全自动化的一个部署。
11.13 Update:OC
#java##后端##实习#
查看24道真题和解析