秋招-作业帮-后端-一二面(挂)
一面:
- 自我介绍
- 对TCP、UDP有什么理解,安全性是怎么保证的,安全性你来做的话怎么做,各自的应用场景
- 对数据库索引的理解
- 创建一个索引的过程发生了什么
- 这个索引的B+树存在哪里,是跟之前的表是存放在一起吗
- 作业帮 学生 课程 需要让你来设计数据库表,你怎么设计 写出具体的表结构
- 假如学生A 买了 课程B,这个表数据怎么存储呢
- 学生A 又买了 课程C,你怎么存储呢
- sql:查出某个学生不同学科类型分别购买了多少课程
- 算法:判断一个字符串是否是另一个字符串的子串
- 刚还是说那个各种作为一个学生的课程表,那作为一个学生课程表之后,你拿这个需求之后,你会从哪些地方去考虑?从哪些地方去确认,哪些边界点去跟产品去确认?
- 比如说我们现在就让你做我们某一个学生,你看对于单个学生来说 UID 维度的课程表,那这个课 UID 课程维度课程表,你去拿这个需求之后,你可能也有一些疑问,你会比如说确认哪些边界条件,然后来去做这个事。那你不能说无限的放大,比如说我这课程表是要是一年的还是半年的,还是一个月的,还是一个星期的这种类型的,你会去思考哪些问题?去确认哪些问题?
- 那这其实我主要想问的就是比如说你在这个技术方案里面,你会从哪些方面?哪些点吧?比如说你123456,那练习哪些点来去设计这个技术方案?哪些你的技术方案里面会写哪几大类?然后分别大概写什么东西。
- QPS从500优化到1000,有什么手段
二面:
没问题,根据二面的面试录音,以下是按时间顺序整理的面试问题清单:
- 请做一下自我介绍。
- HTTPS 的握手是一个怎么样的过程?
- HTTPS 解决了 HTTP 的什么问题?
- 请详细描述一下 TLS 握手过程中,客户端和服务端交互涉及哪些步骤?
- 为什么 HTTPS 的握手过程设计得这么复杂?
- 为什么 TCP 建立连接(三次握手)之后还需要一次 TLS 握手?为什么不能在 TCP 阶段直接把加密这件事做了?
- 从网络分层(架构设计)的角度来讲,为什么 TCP 层做不了/不适合做加密这件事?
- 在 Java 中,当我们执行 new Thread().start() 创建一个线程时,操作系统层面发生了什么?
- Java 的线程和操作系统的线程之间是什么关系?
- Java 中的 volatile 关键字是怎么保证可见性的?
- volatile 底层的原理涉及到哪些 CPU 或硬件层面的知识?
- 假设线上一个 Java 应用频繁发生 Full GC,导致服务响应时间飙升,你会从哪些方面入手排查?
- 接上题,如果让你总结排查故障的核心步骤(方法论),你会分成哪几个部分?
- 你是用 Redis 做的分布式锁,直接使用 Redis(如 set nx)和使用 Redisson(或其他封装组件)有什么区别?
- 如果自己实现 Redis 分布式锁,除了实现起来复杂,还有什么其他弊端?
- 在 Redis 主从架构下,如果主节点挂了,分布式锁可能会有什么问题?
- 算法:给定一个非空数组和一个整数 k,返回其中出现频率前 k 高的元素。
- 你这个算法的时间复杂度和空间复杂度分别是多少?
面筋(烤面筋) 文章被收录于专栏
烤面筋~烤面筋~三元一串,五元两串


