4.10松鼠ai Java二面
很可惜的二面,感觉sql准备不充分,狠狠反思,毕竟开始学mybatis之后就没咋写过sql了
八股加项目
- 还是喜闻乐见的自我面试环节(不是同一个面试官欸,让我再次介绍了一遍)
- 一般是介绍学校,专业,写博客的兴趣,钻研数据结构,算法的兴趣,看书的兴趣,钻研java技术和项目的技术,有无懂得牛友友可以介绍一下还有什么自我介绍的加分项
- java的8种基本数据类型(背的很顺利)
- HashMap的扩容机制(老生常谈了,这不直接吟唱??)
- 请讲下缓存穿透(redis常考,吟唱)
- 如果当大量数据进来时,可以有哪些其他的解决方案咧(刚好会布隆过滤器,直接吟唱2分半,面试官说不错!)
- 缓存淘汰有哪些常见策略:(有点忘了,小小的吟唱了几点)
- 先进先出(First-In-First-Out,FIFO):按照缓存项进入缓存的顺序进行淘汰,最早进入的缓存项先被淘汰。
- 最近最少使用(Least Recently Used,LRU):根据缓存项的访问时间来进行淘汰,最近最少被访问的缓存项先被淘汰。
- 最少使用(Least Frequently Used,LFU):根据缓存项的访问频率来进行淘汰,访问频率最低的缓存项先被淘汰。
- 设置存活时间(Time-to-Live,TTL):
- 根据权重(Weighted):为每个缓存项设置一个权重值,在淘汰时优先淘汰权重较低的缓存项。
- 随机(Random):随机选择一个缓存项进行淘汰。
- 为啥HashMap每次扩容是扩容到原来两倍
- 讲讲java集合类(思路基本上是先讲两个顶级父类,再各自延展到对应的经典数据结构,狠狠吟唱!!)
- LinkedList是线程安全嘛,有什么解决方案(可以加锁,也可以使用
Collections.synchronizedList
)(这里不太熟就没有吟唱。。。)
敲代码
走楼梯算法
秒了,本蒟蒻荣光
两道sql废了,真的很久没写了,后面补了
学生表:student(学号,学生姓名,出生年月,性别)
成绩表:score(学号,课程号,成绩)
课程表:course(课程号,课程名称,教师号)
教师表:teacher(教师号,教师姓名)
- 查询至少选修两门课程的学生学号
SELECT 学号 FROM score GROUP BY 学号 HAVING COUNT(课程号) >= 2;
- 查询平均成绩大于85的所有学生的学号、姓名和平均成绩
SELECT s.学号, s.学生姓名, AVG(sc.成绩) AS 平均成绩 FROM student s JOIN score sc ON s.学号 = sc.学号 GROUP BY s.学号, s.学生姓名 HAVING AVG(sc.成绩) > 85;
呜呜呜,写sql真的写的稀烂,赶紧恶补了一下,以后不能再犯SQL的错误了