深圳网站建设多少钱,学校网站织梦源码,网站平台项目交接需要什么,北京到广州机票价格本期是【你好#xff0c;面试官】系列文章的第21期#xff0c;持续更新中…。
《你好#xff0c;面试官》系列目前已经连载20篇了#xff0c;据说看了这个系列的朋友都拿到了大厂offer~
你好#xff0c;面试官 | 你真的理解面向 “对象”#xff1f;你好#xff0c;面…本期是【你好面试官】系列文章的第21期持续更新中…。
《你好面试官》系列目前已经连载20篇了据说看了这个系列的朋友都拿到了大厂offer~
你好面试官 | 你真的理解面向 “对象”你好面试官 | 我用Java List 狂怼面试官~你好面试官 | 你拿Java Map考验老干部你好面试官 | 你觉得MySQL自增主键连续吗你好面试官 | 呵我怎么可能不知道索引你好面试官 | 我不仅知道MySQL索引还会优化呢~你好面试官 | 我可以凭借MySQL架构体系事务锁机制原理进你公司吗你好面试官 | 初识 Java 并发拿捏这些业务可能遇到的问题~你好面试官 | 百度是这样问 synchronized 的…你好面试官 | Redis不只是做缓存你看过Redis数据结构底层实现吗你好面试官 | 分析一下SQL执行慢的原因如何排查优化思路加餐篇你好面试官 | MySQL事务与锁机制相关加餐篇)你好面试官 | 不会点JVM的骚操作还镇不住面试官了嗦你好面试官 |阿里二面一条SQL更新的底层回答让我逼格拉满你好面试官 | 阿里云二面Redis经典使用场景与雪崩处理我猜你根本没考虑到这个…你好面试官 | 面完腾讯没想到操作系统会考这么多…你好面试官 | 简单聊聊JVM调优相关欢迎星标订阅持续更新中。。。致力打造校招核心面试攻略~
小龙有话说
本期会进行大厂面试 实战模拟。
涉及知识点Redis场景、数据结构MySQL 优化Linux/设计模式、并发等
本期题改编自 ——2023届春招 快手本地生活 一面
面试现场
叮叮叮…
面试官“你好我是XX面试官请问是小龙吗”
小龙“您好面试官我是小龙”
面试官“好的现在有空吗我们开始面试吧”
小龙“嗯嗯准备好啦”
…
other questions
…
面试官“好的Redis 你平时是怎样使用的呢或者说在哪些场景下你会考虑使用 Redis 呢”
小龙“嗯~因为 Redis 是基于内存操作的速度贼快在很多情况下我们都会将 Redis 作为缓存使用。”
小龙“并且 Redis 底层实现采用了很多丰富的数据结构我们可以结合其不同的数据结构的特点在很多应用场景下都可以使用。”
面试官“嗯嗯你所了解的有哪些呢能举例说说吗”
独白“一般人回答都是把可能知道的一些例子一股脑说出来高手会将这些场景尽可能形成完整的场景链。” 小龙“嗯~以我项目《基于人工智能的智慧校园助手V2.0》为例考虑到以后服务在多台服务器上部署会出现session共享的问题登录采用了 RedisJWT 来解决登录问题”
小龙“在同城电商模块商铺本周上榜使用了 底层的 zset 结构根据用户在商铺的购物次数评论、点赞等累加积分每周排名一次前12名当周商铺首页轮询推荐提高瀑光率。如下图” 小龙“同时会对各个商铺的积分动态变化和商铺上下榜情况使用 list 队列结构进行消息顺序推送。” 小龙“当然巧用这些数据结构可以实现很多有趣实用的功能。此外考虑到同城商城模块首页商品分类多级分类数据 以及 TOP12商户热榜中商户数据访问量大并且变动频次不高为了优化提高首页数据加载性能会对商品多级分类数据以及热榜商户数据进行缓存。”
小龙“在首页校园社交动态模块关于心情动态的点赞点踩也采用了 set 结构使用redis存储或取消点赞userId。采用 GEO 允许存储地理坐标信息帮助我们根据经纬度来检索数据结合用户画像标签实现缘分一线牵推荐附近兴趣爱好相似之人.” 独白“结合具体场景串一下形成完整的闭环然后进行结论总结回到最原始的问题。”
小龙“总之我想表达的是redis 基于内存不仅速度快同时底层为我们提供了丰富的数据结构常用的 string、set、zset、list、geo等等在合适的场景下结合其不同数据结构的特性能达到事半功倍的效果。”
面试官“讲得很好对啦你对 Linux 了解多少呢平时是怎么使用的”
小龙“这个在每个大一点的公司其实应该都有专门的系统故障、系统/业务指标等的监控平台对于亲自到服务器上去进行问题排查之类的不多或者也专门有运维监管。”
独白“假如遇到不是太擅长的可以分析说明情况再如实回答。”
小龙“因此对于 Linux 的使用我目前涉猎的只有一些 日志的查看比如cat、tail进程的查看 比如ps -ef | grep xx有时可能直接上服务器查看 服务 jar 包的代码代码修改后线下没有问题线上却始终不生效可以考虑vim、jar相关命令去排查。”
面试官“Ok对 MySQL 了解多少呢自己总结一下你对 MySQL 的认识。”
独白“沃卡高难度直接把所有问题抛给我了我。。。”
小龙“全面认识 MySQL首先得知道 MySQL 全貌了解整体一个体系架构。MySQL 总览可细分为 网络连接层、服务层、存储引擎层、系统文件层。” 小龙“现在我们默认用的都是 InnoDB 引擎因此主要核心在于 InnoDB 引擎的理解。关于 InnoDB 其实主要由 许多后台线程、InnoDB引擎内存池缓冲池Buffer Poll、磁盘构成。这就是一个整体宏观认知啦。”
面试官“ok、刚才你说的后台线程是什么呢内存结构又是什么呢能结合起来讲讲吗”
小龙我们 InnoDB 引擎其实是基于磁盘存储的但是我们做增删等操作时不可能基于磁盘去操作大量IO这样会非常慢。这时需要一个基于内存的缓存池buffer Pool来做个缓冲操作请求来时若缓冲池有存在数据的页就直接修改没有就从磁盘读取。而数据页的读取和刷库就需要有特定的后台线程来维护啦此时就得我们后台线程Master Thread来完成脏页的刷新保证数据的一致性啦。
小龙“当然这只是联动起来讲的一个例子我们的内存和后台线程还有很多。比如IO Thread、Purge Thread修改缓冲区Change Buffer、自适应hash索引Adaptive Hash Index、日志缓冲区Log Buffer。” 独白“完整的体系架构会在后续章节进行讲解。”
面试官“牛逼看你底层讲得都头头是道我考考基础哎。你平时项目设计模式用过哪些除了单例、工厂之类的。”
小龙“还用过责任链模式、策略模式之类的。”
面试官“可以说说策略模式吗”
小龙“比如在完成项目《基于人工智能的智慧校园助手v2.0》时目前登录涉及手机号账号密码 考虑后续可能会对登录进行扩展比如接入QQ、github、邮箱登陆等各种渠道的登录。”
小龙“然后又会有不同用户类型用户、租户之类的会有很多if-else分支然后就尝试使用策略模式对代码进行重构避免过多的if-else分支。后续再增加不同的用户类型或者登录方式直接增加一种策略即可。”
小龙“定义策略接口登陆方法等接口然后不同实现方法定义一个类实现策略接口然后再定义一个环境类根据传来的不同实现子类去调用不同实现方法即可”
面试官“真心不错~”
知识总结
本期我们通过面试模拟简单介绍了 Reids 关于 相关场景 的相关知识MySQL相关、设计模式相关。订阅星标持续追更
如果你有经典的面试题可以私信投稿~