每日一套面试题Day22-八股高频(3)

链接题目来自牛客

我的每日一套面试题专栏,每天更新一起打卡

18.HTTP vs. HTTPS 有什么区别?

我的博客详解

  1. 安全性与协议层:
    • HTTP是明文传输,数据在客户端和服务器之间像“裸奔”,容易被拦截、窃听和篡改。
    • HTTPS通过SSL/TLS协议对传输数据进行加密身份认证
  2. 默认端口:
    • HTTP默认使用 80 端口。
    • HTTPS默认使用 443 端口。
  3. 工作流程与性能开销(重点!展现深度):
    • HTTP的连接建立非常简单,就是经典的TCP三次握手
    • HTTPS在TCP三次握手之后,还需要进行TLS握手。这个过程涉及非对称加密(例如RSA、ECDSA)来交换密钥、验证证书,最后才会切换到对称加密(例如AES)来传输实际数据。这个握手过程会带来额外的RTT(往返延迟)和CPU计算开销。
  4. SSL证书:
    • HTTPS要求服务器必须拥有一个由可信证书颁发机构(CA) 签发的SSL证书。这个证书的作用是验证服务器的身份,防止中间人攻击。

19.说说 TCP 的三次握手

三次握手=“我能发→你能收→我知道你能收”,两次握手保证不了双方 都 确认通路可用,而四次又可把“确认 + 发起”合并成一次包,因此恰好三次最经济; alt

20.如何评估 / 判断索引是否生效?常见索引失效场景有哪些?

评估索引是否生效需“三看”:看执行计划是否命中索引(EXPLAIN)、看扫描行数是否骤降(rows)、看查询耗时是否锐减(性能监控);

失效:

  • 索引列用函数/参与计算
  • 最左前缀原则
  • LIKE以通配符 % 开头
  • 使用 OR 连接条件,如果 OR 连接的条件中有一个列没有索引,那么整个查询可能无法使用索引。
  • 使用 NOT IN, <>, != 操作符 这些否定操作符通常难以利用索引,因为它们代表的是一个非常大的范围,数据库倾向于全表扫描。

21.如何利用Redis实现一个分布式锁?

小林coding

我的博客

  • 基础版
  1. 加锁:使用SET命令,Key为锁的唯一标识,Value为一个唯一字符串(防止误删),并设置过期时间。
  2. 解锁:使用Lua脚本,先比较当前锁的Value是否与传入的Value相等,相等则删除,保证原子性。 注意:唯一Value可以使用UUID,确保每个锁的持有者只能释放自己的锁。
  • RedLock 当系统对一致性要求极高,或者Redis是主从架构时,基础版本可能不够安全。这时可以使用Redis官方推荐的 Redlock 算法。 释放锁的操作和在单节点上释放锁的操作一样,只要执行释放锁的 Lua 脚本就可以了。 释放锁的操作和在单节点上释放锁的操作一样,只要执行释放锁的 Lua 脚本就可以了。

22.SQL 调优常见方法有哪些?

我的博客详解 先监控发现慢SQL,然后通过EXPLAIN分析执行计划,接着从索引和SQL语句本身这两个成本最低的方面入手进行优化。如果这些手段都达到了瓶颈,最后才会考虑读写分离、分库分表等架构层面的方案

#面试真题#
每日一套面试真题 文章被收录于专栏

记录刷过的面试真题

全部评论

相关推荐

11-21 22:22
中南大学 Java
本人背景9本,三段大厂实习,后端开发方向。本文将分享秋招至今失败的一切,供读者参考,也是找个渠道抒发心里的郁闷。我的秋招大概在八月底开始,其中八月和九月的约面是非常多的,除了阿里系以外,其他企业大部分给了面试,也大多走到后续的流程了,具体情况如下:腾讯二面挂,字节完成hr面,百度完成三面,滴滴完成三面,美团二面挂,京东一面挂,小红书一面结束(之后过了两个月才挂,不知道何意味),虾皮完成hr面。这段时间的面试总体情况比较顺利,这是符合我的bg的预期的,但是挂的面试已经出现了一些奇怪的端倪,例如:腾讯一面聊了两个小时特别投缘,二面因为我不太会大数据的技术直接挂了美团一面二面都非常顺利,跟面试官聊的也很好,但是没有任何缘由的挂京东一面则是死扣我在京东的实习经历问细节,接近一年前的细节我实在是记不起来,于是挂了但是鉴于当时有好几家大厂已经走完流程,想着怎么样泡池子也能泡出来一个,于是非常悠然自得地等了一段时间现在回头看,其实命运似乎早已在冥冥之中影响着某些事国庆八天假期刚过去,我等来的不是其他人那种假期结束的遗憾和回味,而是字节和百度相继泡池子挂掉的绝望消息,惊诧之余马上感受到的是恐惧,恐惧自己秋招就这样与大厂失之交臂。于是马上火速重新投简历,包括但不限于之前挂过的大厂和一些中厂。令我没有想到的是,腾讯、美团、小红书再也没有任何约面,京东在两个月以后复活以后再次一面挂掉。唯一令我抱有希望却又一次次令我绝望的是字节,因为前面面试表现还不错,重新投递以后马上被约了面试,顺利通过前两轮拷打,第三轮面试遇到难以理喻的主管,全程问ai相关知识,我讲工程他说我不懂底层原理,我讲原理他说你一个搞开发的给我说这些干什么。全程否定,令人汗颜,最后不出意料的挂了。至此已经有些心灰意冷,没想到的是马上又被捞起来约面试,这一次一面问了八十分钟基础知识,很是全面,于是二面发生了完全令我没想到的情况,面试官在让我做了一道我做过的最难的lc题以后,直接开始与我讨论数学问题,是一个排列组合问题,现场推导递推公式。真的,当时那种耻辱、愤怒和无奈交织的心情我永远不会忘记,它是我一辈子的阴影,即使未来某一天拿到offer我都永远记得秋招的残酷和恶心。前面讲了这么多我所经历的事情,想在这里谈谈我的想法和心情。每一个等待的日子,枯燥、焦躁而且没有尽头,像一只鹿在无尽的密林里奔走。直到鹿跑断了腿,人绷断了神经,这煎熬才被动地结束。然而,即便跑出了密林,那守在尽头的也未必是好运。经历了这些事情,其实也让我意识到一些事情,人生不是贪心算法,不能试图在每个阶段追求最好的结果来实现完美的人生。以上是一个失意者的自白,与大家分享一些经历和看法,offer收割机大佬们请轻点嘲讽
不懂你的黑色幽默~:千里马常有而伯乐不常有。不要否定自己,加油!
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务