途虎Java开发一面面经

更新:

我以为我挂了,突然约了二面?

后天要体会无缝衔接两场面试了

原帖:

面了五十分钟不到。主要是手撕。

一、自我介绍+聊两句实习

二、手撕算法题

LeetCode原题 165. 比较版本号

题目看叉了,理解错题目,尴尬

三、手撕SQL

第一次撕SQL有点慌硬着头皮写

两张表,一个是人表,包含所有人做任务的尝试,有起止时间和分数等列,另一个是任务表,包含任务信息,有任务号、限时时间和难易程度等列。现在有两个活动,活动一要求这个人所有尝试都达到85分,活动二要求这个人至少一次尝试在任务限时一半以内的时间完成困难级任务且分数高于80。请你用一个输出来展示通过这两个活动的人,保持最终人id、任务号和活动几三列,最后再排序。

记忆里大概写出来如下:

SELECT a.person_id, a.task_id, '活动一' AS activity
FROM Attempts a
GROUP BY a.person_id
HAVING MIN(a.score) >= 85

UNION

SELECT a.person_id, a.task_id, '活动二' AS activity
FROM Attempts a
JOIN Tasks t ON a.task_id = t.task_id
WHERE t.difficulty = 'hard'
  AND TIMESTAMPDIFF(SECOND, a.start_time, a.end_time) < t.total_time / 2
  AND a.score > 80
  
ORDER BY person_id, task_id;

四、一道场景题

假设现在有一个高QPS的查询接口,中间有缓存层,一旦数据缓存过期,打到数据库顶不住,说一些解决方案。

我就拿击穿雪崩那一串八股往上套:

1. 热点数据加长过期时间 2. 不同数据缓存失效时间随机 3. 加锁 4. 无数据就缓存null值

面试官给的反驳和解释:

1. 加长过期时间依旧会失效 2. 随机过期时间还是扛不住高QPS 3. 有损性能 4. 存空值只针对不存在的数据

现有缓存模式是被动的懒加载,用到了才去缓存,而题目只说QPS太大没有说数据库数据量太大。所以就主动把全部的数据都加到缓存,直接不设置过期时间。一致性通过靠定时任务把数据库的更新刷到缓存来保证。

面试体验很好

面试官循循善诱

而且遇到问题会提醒我

#秋招##Java##后端##面经##途虎#
全部评论
佬面的哪个部门
点赞 回复 分享
发布于 11-02 15:14 广东
上海c端嘛
点赞 回复 分享
发布于 11-03 16:44 黑龙江
佬 请问是今天面的嘛?
点赞 回复 分享
发布于 11-03 16:46 江苏
佬,第四题最后是面试官给的回答吗
点赞 回复 分享
发布于 11-04 17:18 河南
佬还记得一面是什么时候面的吗
点赞 回复 分享
发布于 11-06 16:20 黑龙江
佬 二面聊了多久啊 主要问什么啦
点赞 回复 分享
发布于 11-11 16:08 广东
这和我当时面试官出的场景题一模一样。
点赞 回复 分享
发布于 11-14 04:10 湖北

相关推荐

8 16 评论
分享
牛客网
牛客企业服务