模拟面试
快来分享你的内容吧~
- 2024-08-16想要开发一款AI虚拟面试官,该如何确定技术栈,进行可行性分析呢,有大佬有相关的知识可以分享一下吗?跪求😭编程导航_小y:先设计一下项目功能,看需要有哪些功能支持,再考虑技术选型。1. 比如接入 AI 面试2. AI 人模拟视频3. AI 人语音沟通4. 基于语音输入完成 AI 交互生成新内容再语音输出....类似梳理下业务流程,才能确定需要哪些技术的支持,当然这方面可能还得再调研230分享
学弟去字节面试,一小时被问了 50 题。。
大家好,我是程序员鱼皮。昨天直播面试了一位 25 届的学弟,暂且就叫他 “阿强” 吧。 阿强非常优秀,不仅有半年的实习经历、有自己的项目,而且还参加过大厂(字节)的面试。 面试开场前,我问学弟:你上次面试字节时,感受如何? 结果阿强的回答差点闪了我的老腰,他说:强度挺大,1 个小时的面试问了我 50 多道题! 这是什么概念?平均 1 分钟 1 道题?这特么机关枪啊? <p align="center"><img src="https://pic.code-nav.cn/migrate_image/e84f1c236b5c16ddb7dcfdb51b34bd8d.webp" alt="" width="286px" /></p> 我开玩笑地问:那你是基本都没答上来么?所以面试官才能问这么多题? 结果阿强说:不是,很多都是追问,就一直答呗~ 然后我问了阿强的预期薪资,他表示想进中大厂,拿个年薪 20 ~ 30 万就满足了。 行,看来这次参加我面试的阿强同学,有两把刷子。 - 你以为的鱼皮内心:看我怎么拷打他! - 实际上的鱼皮内心:我别被他给拷打了! <p align="center"><img src="https://pic.code-nav.cn/migrate_image/d6df61660b2501e5376255b491ea2eb0.webp" alt="" width="256px" /></p> 下面我们开始面试,文末会揭晓面试结果,看看阿强能不能拿到他预期的薪资。 > 本期面试的回放视频在编程导航的直播专区,里面还有几十期真实面试现场的回放:https://codefather.cn/live ## 面试现场 整个面试持续了近 2 个小时,从专业技能、到实习经历、再到项目经历,我基本把阿强的简历上提到的内容都问了个遍。 分享一下我问的题目,大家也可以试着答答看,答案可以在我们开发的面试刷题网站 [面试鸭](https://www.mianshiya.com/) 获取: **1)Redis 有哪些数据结构?分别适用于哪些场景?HyperLogLog 有什么缺点?** 这题是经典八股文,候选人能力越强,说的内容会越多,优秀的候选人会结合自己的项目去讲,而不仅仅是背诵回答。我还随机挑了阿强提到的其中一个结构 HyperLogLog,作为追问。 **2)如何精确统计网站的 PV 和 UV?如何支持百万并发?** 这题是系统设计题,可以全方面考察候选人的系统设计能力。刚开始阿强的回答只局限于 Redis,后面在我的引导下,阿强提出了本地原子计数器 + 定期上报的方案;在我的进一步引导下,阿强提出了消息队列 + 日志收集的方案,答的还不错。 **3)你对 AQS 的理解是什么?哪些类是基于 AQS 实现的?** 这题虽然是八股文,但光背诵是肯定答不好的。阿强的回答还不错,不仅说出了 AQS 的核心思想,还精准地答出了用到了 AQS 的一些技术,比如 ReentrantLock、CountDownLatch 等等。 **4)在项目中用过哪些并发编程的类?怎么排查线程池满了的情况?怎么优化?** 从上一道题目中,能感觉到阿强在并发编程这块准备地挺充分。所以我就问了这道题,看看到底是 “八股小能手” 还是有在项目中用过并发工具类。阿强的回答中规中矩,答出了自定义线程池、CompletableFuture 等。但是对于连接池排查和优化的追问,答的就一般了。这里阿强坦诚自爆:线上问题处理经验比较少。这也是校招同学的普遍情况。 **5)十亿级数据量的写入流程是什么?如何应对数据丢失?** 为啥问这道题目呢?因为阿强的实习经历中写到 “他有过十亿级数据量的写入经验”,所以这题我是贴着他的实习经历问的。结果阿强回答的挺不错,把他实习公司的数据处理流程清晰地讲了出来,涉及到 Kafka、Flink、Hive、S3 存储等技术。 **6)服务器会自动返回给浏览器 Gzip 压缩吗?** 这道题也是阿强实习经历中写到的,他说曾经通过 Gzip 压缩优化过服务器的资源传输体积。但这题我换了个问法,想考察下他是否真的了解 Gzip、了解服务器在什么情况下会返回 Gzip。阿强这题答的也不错,想到了请求头中的 Accept-Encoding。 **7)什么是 Apollo?它有哪些功能和优势?一般是怎么发布配置的?** 这题考察配置中心,也是阿强简历中写到的,从他的回答中能感觉到确实在企业中用过配置中心,也了解配置的发布流程。问到这里他的实习经历已经是 “铁真实” 了,自己做过的东西掌握的都很不错。有点遗憾的是,配置中心的部分特性没有讲出来,所以我也没有去问他配置中心的设计原理了。 **8)什么是 LiteFlow?怎么自主实现 LiteFlow?** 这题也是阿强实习经历中提到的,他在公司接触过 LiteFlow 规则引擎。前半问比较基础,核心考点在后半问,我是想考察下阿强的架构设计能力,看看能不能想到设计规则引擎的核心,比如规则配置化、规则持久化、规则编排、规则热刷新、上下文隔离等等。这题阿强也流畅表达了自己的思路,只不过视角还是更偏向于应用开发,而不是整体的设计。 <p align="center"><img src="https://pic.code-nav.cn/migrate_image/0124250d064220a461a57d4ea235ce35.webp" alt="" width="100%" /></p> **9)为什么选择 Dubbo 而不是 Feign?怎么自主实现 Dubbo?** 这题没啥好说的,阿强简历上提到了 RPC,我就随便问了问,关键区别也都答出来了。但由于对 Dubbo 了解的不够多,所以不太清楚怎么自主实现。 **10)什么是池化技术?怎么自主实现池化技术?** 这题的重点依然是在后半问,看看能不能想到池化技术的几个重点,比如实现一个连接池:需要考虑怎么复用连接?怎么控制池的大小?空闲连接如何管理?怎么处理连接超时问题?是否要保证线程安全等等?把 “连接” 换成其他 “资源”,也是类似的。 **11)如何设计一款易扩展的 SDK?** 这题考察开发经验,由于阿强没有写过 SDK,只写过工具类(utils),所以答的一般。我让他回去了解一下 Java 的 SPI 机制。 **12)一般怎么上线项目?怎么实现一个流水线自动部署平台?** 这题考察上线项目的能力,阿强 Linux + Jenkins 自动化部署的实操经历,还是不错的,但对于线上 JVM 的参数配置、线上服务的稳定性、线上服务的可观测性、资源的利用率等概念不是很敏感。这也是校招同学的普遍情况。 **13)什么是单点登录?怎么实现单点登录?** 阿强首先就答出了统一的登录认证中心、以及基于 token 的方案,但反而忽视了基于共享 Cookie 域名的实现方案。这里建议想进中大厂的同学,在学习方案时,多搜索和对比几种,而不是只了解一种方案就完事了。 **14)压力测试过程中有哪些注意事项?** **15)使用 ThreadLocal 的过程中有哪些注意事项?** **16)怎么自己设计一个自动缓存的注解?怎么更高效地使用缓存?** 最后这几道题也基本都是考察各方面的经验了,比如对系统性能的测试分析经验、对开发中常用类的实践、编码设计能力等等。 ## 面试建议 先给面试结果,我愿意给他发放 20 - 30w 的 offer。 <p align="center"> <img src="https://pic.code-nav.cn/migrate_image/8450a7173522431f50282354d6bad3f0.webp" alt="" width="228px" /></p> 因为整个面试过程中,我的体验是非常好的,完全感受不到阿强是 25 届的校招生,更像是和一位有工作经验的同学在聊天。基本我问什么,他都能很快地表达,很少有卡壳;而且状态是比较自信的,我故意设置的一些坑点也没有唬住他。直播间的弹幕也都在说:我曹,这是 25 届? 所以其实我也能理解为什么他去字节面试,1 个小时能被问这么多题目了。 最后我给阿强一些建议:面试的准备其实已经比较到位了,重点放在优化简历上。 1)把你自己的项目上线,尽量上线地址、个人博客和 GitHub,向招聘者更多地展示你的经历和能力 2)由于简历只有 1 个项目,可以再补充一个。我给阿强推荐的是编程导航的 [手写 RPC 框架和最新的面试刷题平台项目](https://mp.weixin.qq.com/s?__biz=MzI1NDczNTAwMA==&mid=2247565306&idx=3&sn=90979f6b5dcecfb1b2dc8c59b9fbd4fc&chksm=e9c3180ddeb4911b72297840832f3aa06951ae60e0df4711403a8f3781a953b2a63ad2a7445c&token=128019822&lang=zh_CN#rd) ,这两个项目涉及了大量市面上大多数同学简历中都没有提到过的技术,写上去能给简历增加不少区分度,而且学习周期也不长,适合秋招快速突击。 <p align="center"><img src="https://pic.code-nav.cn/migrate_image/2dfcde77802cc347524eb893f17bd0dd.webp" alt="" width="100%" /></p> 3)之后再回答系统设计类的题目时,可以先思考一下,怎么从整体到局部、有一个线性的思路去回答,比如 “如何设计一个秒杀系统?”,可以先回答秒杀系统重需要解决的关键问题,然后从前后端两个视角去回答;回答后端时,可以按照请求的顺序,依次回答整个链路各个模块(或技术组件)的注意事项。 --- OK,就分享到这里,大家能否答出这些题目呢? 本期面试的回放视频在编程导航的直播专区,里面还有几十期真实面试现场的回放:https://codefather.cn/live ## 更多 💻 编程学习交流:[编程导航](https://www.codefather.cn) 📃 简历快速制作:[老鱼简历](https://laoyujianli.com) ✏️ 面试刷题神器:[面试鸭](https://mianshiya.com)
想要开发一款AI虚拟面试官,该如何确定技术栈,进行可行性分析呢,有大佬有相关的知识可以分享一下吗?跪求😭
我面试了个目标 50w 的大厂老哥,很符合预期
大家好,我是程序员鱼皮。上周我直播模拟面试了一位很优秀的老哥,有些感受想和朋友们分享分享。 先简单介绍一下:老哥是一本硕士出身 + 在大厂做后端开发 2 年,buff 拉满,目标是通过跳槽冲击 50 万的年薪。 说实在的,面试前我有点紧张,我自己满打满算在腾讯待了 4 年,深知能进大厂的朋友战斗力都很强,若是老哥提前准备了一些八股文,想必能反过来吊打我一波。所以我放平心态,准备把这场面试当做一场技术交流,自己应该也能学到不少东西。 结果面试下来,我的感觉是还好,很符合预期。咳咳,只不过这里的 “符合预期” 并不是指老哥能稳拿 50 万年薪的工作了,而是指很符合我对工作两年的程序员的状态的预期。 具体是啥意思呢?让我们先来看看面试过程吧,看完答案就不言而喻了。 > 为方便记忆,以下暂时称呼老哥为 “原坤”。 ## 面试现场 > 因为时间隔得有点久了,不保证 100% 还原,凭着印象给大家分享一部分内容,可以在 [编程导航](https://www.codefather.cn/) 看到完整的模拟面试直播回放。 由于老哥的简历上写了 “深入理解 MySQL”,而 MySQL 也是衡量后端开发水平的关键技术,所以我打算先从 MySQL 开始问。 鱼皮:先来道基础的八股文暖暖场吧, [MySQL 中 InnoDB 和 MyISAM 有什么区别?分别有哪些适用场景?](https://www.mianshiya.com/question/1811361310328279041) 原坤:InnoDB 支持事务、有外键、支持安全恢复,适用于需要保证数据完整性的场景;MyISAM 查询性能更高。。。 鱼皮:回答的还不错,虽然漏了一些点,比如 MyISAM 只有表级锁、InnoDB 支持行级锁,能更精准地控制并发。 鱼皮:那我们提高下难度,有没有了解过 MySQL 底层是怎么对要执行的 SQL 语句进行优化的? 原坤:额。。索引?B+ Tree? 鱼皮:那我给个小提示,[有没有了解过 MySQL 的查询优化器?](https://www.mianshiya.com/question/1811361311347494913) 原坤:额。。 鱼皮:那我再问的具体一点,MySQL 的查询优化器可以做哪些事情?比如重写查询语句?它又是怎么选择执行计划的? 原坤:阿巴,阿巴! <p align="center"><img src="https://pic.code-nav.cn/migrate_image/5e68c1baab6ecfc69e2e2bb745f42d5e.webp" alt="" width="238px" /></p> 鱼皮:好吧,看来是没有了解过,有空可以去阅读下《高性能 MySQL》这本书,开局就提到了优化器的概念,是非常重要的知识点。 <p align="center"><img src="https://pic.code-nav.cn/migrate_image/87e6ce11b55b4db2a8a0d11bc2a12d56.webp" alt="" width="100%" /></p> 鱼皮:那再问一道场景题,[分享一次 MySQL 性能优化的经历?怎么发现的慢 SQL?](https://www.mianshiya.com/question/1816438385021997058) 原坤:之前有一次线上接口超时,通过监控发现是有慢 SQL,然后加了个索引成功解决。 鱼皮:不错,[那有哪些 MySQL 性能优化的方法呢?](https://www.mianshiya.com/question/1816438385021997058) 原坤:禁用 select *、加索引,索引有个最左前缀原则。。。 鱼皮:除了加索引外呢?(一脸期待) 原坤:额,可以优化 SQL 语句? 鱼皮:除了修改 SQL 语句外呢?有没有更上层或者更底层的方法? 原坤:阿巴,阿巴! <p align="center"><img src="https://pic.code-nav.cn/migrate_image/5e68c1baab6ecfc69e2e2bb745f42d5e.webp" alt="" width="238px" /></p> 鱼皮:好吧,可能是平时工作没怎么接触过,其实 MySQL 性能优化的方法非常多,除了你说的这些,可以运用批处理、库表设计(比如避免联表查询)、缓存、修改配置、选择合适的引擎或技术栈、分库分表、读写分离,甚至是升级物理机的配置来优化。 原坤:确实,刚刚思路被局限了,平时工作一般就是写 SQL,机器配置啥的都有运维来管,分库分表什么的也不需要我们关心。 鱼皮:我看你简历上还写了 “深入理解 Redis”,那还是老规矩,先来一道简单的开胃题,[Redis 的 string 数据结构底层是怎么实现的?](https://www.mianshiya.com/question/1772829641560604673) 原坤:我知道,SDS! <p align="center"><img src="https://pic.code-nav.cn/migrate_image/56fb75acc7e03c13b66288d2ef9a4dcc.webp" alt="" width="118px" /></p> 鱼皮:那什么是 SDS? 原坤:额。。。忘了,太久没看了。 鱼皮:那你属于是知道却又不知道了。我给个提醒,除了 SDS 之外呢?还有没有其他的实现方式? 原坤:那我不知道。 鱼皮:好吧,看来是没有准备过八股文了,那接下来我也不问八股文了,问一些系统设计和场景题。就拿一个经典的问题来说吧,[怎么设计一个高并发的点赞系统?](https://www.mianshiya.com/question/1772882950057148418) 原坤:需要有点赞记录表和点赞总数表,要使用消息队列来异步写记录,可以使用缓存来提升读性能。 鱼皮:不错,2 个核心点是回答到了,还能想到更多的么?我给个思路的提示,从系统架构、性能优化、可用性 / 稳定性优化、存储优化等角度考虑。 原坤:额。。。 鱼皮:没事,一个成熟的高并发点赞系统还是非常复杂的,像我之前学习过 B 站的千亿级点赞系统服务架构设计,涉及到了 RPC、服务网关、聚合请求、分库分表、三级缓存(本地缓存、分布式缓存、数据库)、数据同步、容灾备份等等,感兴趣可以去了解一下,这种题比较发散,一定是答的点越多越加分。 <p align="center"><img src="https://pic.code-nav.cn/migrate_image/b315409e3749f0437a518112a0ba45f4.webp" alt="图片" width="100%" /></p> 鱼皮:我看你的工作经历中经常跟消息队列打交道? 原坤:是的,我们大厂有自己的消息队列平台,直接申请就能使用和接入数据了。 鱼皮:那再问你一个系统设计题,怎么设计一个消息队列云服务平台?开发者可以按需申请资源和数据订阅。 原坤:嗯,首先要能管理和配置 Topic,还要对资源进行监控,差不多想到这些。 鱼皮:嗯没错,那你们公司内部的员工怎么登录这个平台呢?总不会是手动输入账号和密码吧? 原坤:对,我们是直接一键登录。 鱼皮:一键登录是怎么实现的呢?有个技术名词叫什么? 原坤:额。。一时间想不起来了 鱼皮:有没有了解过 SSO 或者 OAuth 2? 原坤:额,有了解过,但是不知道原理。 鱼皮:好吧,那再问一道和你做的项目相关的题目:你们系统在对接上游的任务系统来获取数据时,[怎么防止消息丢失?](https://www.mianshiya.com/question/1801955779278086145) [怎么防止重复消费?](https://www.mianshiya.com/question/1805217825848762370) 这是结合业务场景 + 工作经验 + 八股文的一道经典题目。 当我问到这道题的时候,原坤显得有些激动了,显然是问到他擅长的地方了。篇幅有限,以下省略 1000 字的回答。 ## 面试总结 通过这场面试,能很明显地发现候选人的不足,也非常符合工作 2 年的程序员的状态,总结一下就 6 个字 —— **上不去、下不来** 。 “上不去” 是指仅仅关注自己工作中用到的技术,不拓宽自己的眼界去了解更多的技术选型,也没有跳出单个项目或技术、站在更高的全局视角去学习系统的架构设计。“下不来” 是指没有深入了解过技术的底层原理和实现细节,对校招来说这可能没那么重要,但当你正式工作了,必须要有自己的核心竞争力,跟其他经验不足的同学要有明显的区别。只有更多地了解底层,才能发现别人看不出来的性能问题和可优化点。 我相信大多数工作后的同学都是这样,除了刚毕业那一年有点自主学习的劲头外,后面基本上就只关注自己的工作内容,不怎么了解其他的知识了。这样其实就很容易出现 “偏科” 的情况,比如原坤老哥,因为工作中用消息队列比较多,所以问到消息队列的时候,他能够答出更多的内容,像 MySQL 和 Redis 等其他知识基本就只局限于会用而已。只能等到跳槽的时候,再去学习突击,比如背背八股文什么的。由于现在校招的竞争在加大,应届生基本都是要准备八股文的,这就导致了一个有趣的现象,很多工作几年还在写 CRUD 的人,技术水平可能还不如应届生。如果你在工作中不持续学习,水平很有可能不增反降。 哪怕像我当时在腾讯这样的大厂,还同时负责不止一个项目,工作 2 年半后,我都觉得自己能学到的东西很有限了,能预料到继续保持这种状态我肯定会躺平。所以我还是选择创业,给自己营造一个无法躺平的环境,虽然累点儿,学到的东西会更多。 好吧,就聊到这里~ 今天晚上 19 : 30,我还会在 B 站《程序员鱼皮》模拟面试,跟大家一起交流分享技术,欢迎来围观,谢谢大家! 上述的所有面试题,都可以在 [程序员面试刷题网《面试鸭》](https://mianshiya.com/) 查看题解哦~ ## 更多 💻 编程学习交流:[编程导航](https://www.codefather.cn) 📃 简历快速制作:[老鱼简历](https://laoyujianli.com) ✏️ 面试刷题神器:[面试鸭](https://mianshiya.com)
#直播回放# 7 月 31 日 编程导航嘉宾 @Yes 面试直播回放已上传,星球同学可以在编程导航平台在线观看:https://www.codefather.cn/live P.S 星球同学免费认证编程导航:https://t.zsxq.com/qouYj (领取 30 天会员) 第一位:大三,双非本,技术实力扎实想去大城市,目前拿到一个实习 Offer。 第二位:本硕 985,因为鱼皮的 B站 Java 一条龙视频,选择从物理专业转码到计算机,想去国央企和事业单位保持生活和工作的平衡。 #直播# #模拟面试#
#模拟面试# 编程导航嘉宾 Yes 哥模拟面试,在线拷打面试官 👊🏻 👉 B站直播链接:https://live.bilibili.com/32447141

