每日一套面试题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语句本身这两个成本最低的方面入手进行优化。如果这些手段都达到了瓶颈,最后才会考虑读写分离、分库分表等架构层面的方案

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

记录刷过的面试真题

全部评论

相关推荐

01-14 15:09
门头沟学院 Java
对求职新人来说,把商城作为后端项目放在简历上,绝对是性价比比较高的选择&nbsp;。这个项目看似是求职季的大众款,实则包含很多后端开发的核心考点。从技术层面,你能完整了解&nbsp;Spring&nbsp;Cloud&nbsp;微服务生态:用&nbsp;Nacos&nbsp;做服务注册与配置中心,用&nbsp;OpenFeign&nbsp;实现服务间调用,用&nbsp;Gateway&nbsp;搭建&nbsp;API&nbsp;网关,用&nbsp;Sentinel&nbsp;做限流熔断,再搭配&nbsp;Redis&nbsp;缓存优化商品查询、RabbitMQ&nbsp;削峰填谷处理订单流量、MySQL&nbsp;分库分表应对海量数据&nbsp;——&nbsp;这套技术组合拳打下来,你对分布式系统的理解,早已远超只会写&nbsp;CRUD&nbsp;的应届生。从求职层面,这个项目更是面试的加分利器。HR&nbsp;和技术面试官对商城项目的业务逻辑熟门熟路,你能清晰讲出&nbsp;“商品秒杀的高并发解决方案”“订单分布式事务的处理思路”“库存超卖问题的规避方法”,远比空泛地说&nbsp;“精通&nbsp;Spring&nbsp;Boot”&nbsp;更有说服力。对中小厂而言,这类贴近业务的项目经验,意味着你入职后能快速上手企业级开发;对大厂来说,这也是证明你具备后端核心能力的直观凭证。更重要的是,这个项目能帮你建立工程化思维。从需求拆解、架构设计,到代码编写、单元测试,再到&nbsp;Docker&nbsp;容器化部署、CI/CD&nbsp;流水线搭建,每一步,都是从&nbsp;“校园开发者”&nbsp;到&nbsp;“职场工程师”&nbsp;的蜕变。别担心项目撞款,真正能拉开差距的,从来不是项目名称,而是你对技术细节的深挖和对业务场景的思考。把一个项目做深做透,它就是你简历上最亮眼的金字招牌。
简历第一个项目做什么
点赞 评论 收藏
分享
01-08 16:25
门头沟学院 Java
1、实习介绍2、介绍-下HashMap。(扩容机制、寻址、为什么扩容是二倍)。3、如果说当前有1000个k-v结构数据放入HashMap中,最终HashMap中是什么情况。(数组桶2048个)4、HashMap线程安全吗?哪些是线程安全的hash结构?5、介绍一下concurrentHashMap线程安全实现的原理?(1.8之前、之后)6、list和set集合的区别?7、对list遍历想到几种遍历方式?(按下标、语法糖:、选代器)ĩ降最.8、如果对于list中的元素遍历过程中进行删除满足一些条件的元素,你会怎么做?9、线程池的有几个参数?10、线程池的拒绝策略?默认的是哪种?11、线程池的线程工厂有哪几种?默认的是哪种?12、三个线程顺序打印a,b,c,有哪几种方式实现?13、MySQL的分库分表有哪些方式?如何分库?主键设置?路由id?14、MySQL集群的搭建方式?(答了主从同步,binglog、relaylog、哨兵模式)15、redis主库挂了之后无法承接写操作,这期间的写操作的有效性和一致性如何来保证?16、对于索引来说,字段的选择,组合索引的使用。(答重复度小的,联合索引的部分失效)17、组合索引支持范围查询吗?三个字段第二个字段是时间字段,时间字段进行范围查询会生效吗?18、从持久缓存中把数据加载到redts中的加载策略,如果让你来设计你有什么思路。19、redis中分布式锁的实现?(黑马点评开始吟唱)20、OLAP和OATP了解过吗?(???)21、事务了解过吗?这是本地事务,分布式事务了解过吗?22、事务如何开启?23、在A方法上调用B方法,B方法上使用了transaction注解,B中的事务会生效吗?24、介绍一下单例模式?(答spring的bean默认单例,比较prototype状态是非单例的)25、spring中用到的设计模式?26、消息队列有用过吗?知道是干什么的吗?(了解过,知道有kafka、mq,举例点评里面的秒杀优化)手撕:5.最长回文子串
查看25道真题和解析
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

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