我面试了个目标 50w 的大厂老哥,很符合预期

news2024/9/28 13:17:47

大家好,我是程序员鱼皮。上周我直播模拟面试了一位很优秀的老哥,有些感受想和朋友们分享分享。

先简单介绍一下:老哥是一本硕士出身 + 在大厂做后端开发 2 年,buff 拉满,目标是通过跳槽冲击 50 万的年薪。

说实在的,面试前我有点紧张,我自己满打满算在腾讯待了 4 年,深知能进大厂的朋友战斗力都很强,若是老哥提前准备了一些八股文,想必能反过来吊打我一波。所以我放平心态,准备把这场面试当做一场技术交流,自己应该也能学到不少东西。

结果面试下来,我的感觉是还好,很符合预期。咳咳,只不过这里的 “符合预期” 并不是指老哥能稳拿 50 万年薪的工作了,而是指很符合我对工作两年的程序员的状态的预期。

具体是啥意思呢?让我们先来看看面试过程吧,看完答案就不言而喻了。

为方便记忆,以下暂时称呼老哥为 “原坤”。

面试现场

因为时间隔得有点久了,不保证 100% 还原,凭着印象给大家分享一部分内容,可以在 编程导航 看到完整的模拟面试直播回放。

由于老哥的简历上写了 “深入理解 MySQL”,而 MySQL 也是衡量后端开发水平的关键技术,所以我打算先从 MySQL 开始问。

鱼皮:先来道基础的八股文暖暖场吧, MySQL 中 InnoDB 和 MyISAM 有什么区别?分别有哪些适用场景?

原坤:InnoDB 支持事务、有外键、支持安全恢复,适用于需要保证数据完整性的场景;MyISAM 查询性能更高。。。

鱼皮:回答的还不错,虽然漏了一些点,比如 MyISAM 只有表级锁、InnoDB 支持行级锁,能更精准地控制并发。

鱼皮:那我们提高下难度,有没有了解过 MySQL 底层是怎么对要执行的 SQL 语句进行优化的?

原坤:额。。索引?B+ Tree?

鱼皮:那我给个小提示,有没有了解过 MySQL 的查询优化器?

原坤:额。。

鱼皮:那我再问的具体一点,MySQL 的查询优化器可以做哪些事情?比如重写查询语句?它又是怎么选择执行计划的?

原坤:阿巴,阿巴!

鱼皮:好吧,看来是没有了解过,有空可以去阅读下《高性能 MySQL》这本书,开局就提到了优化器的概念,是非常重要的知识点。

鱼皮:那再问一道场景题,分享一次 MySQL 性能优化的经历?怎么发现的慢 SQL?

原坤:之前有一次线上接口超时,通过监控发现是有慢 SQL,然后加了个索引成功解决。

鱼皮:不错,那有哪些 MySQL 性能优化的方法呢?

原坤:禁用 select *、加索引,索引有个最左前缀原则。。。

鱼皮:除了加索引外呢?(一脸期待)

原坤:额,可以优化 SQL 语句?

鱼皮:除了修改 SQL 语句外呢?有没有更上层或者更底层的方法?

原坤:阿巴,阿巴!

鱼皮:好吧,可能是平时工作没怎么接触过,其实 MySQL 性能优化的方法非常多,除了你说的这些,可以运用批处理、库表设计(比如避免联表查询)、缓存、修改配置、选择合适的引擎或技术栈、分库分表、读写分离,甚至是升级物理机的配置来优化。

原坤:确实,刚刚思路被局限了,平时工作一般就是写 SQL,机器配置啥的都有运维来管,分库分表什么的也不需要我们关心。

鱼皮:我看你简历上还写了 “深入理解 Redis”,那还是老规矩,先来一道简单的开胃题,Redis 的 string 数据结构底层是怎么实现的?

原坤:我知道,SDS!

鱼皮:那什么是 SDS?

原坤:额。。。忘了,太久没看了。

鱼皮:那你属于是知道却又不知道了。我给个提醒,除了 SDS 之外呢?还有没有其他的实现方式?

原坤:那我不知道。

鱼皮:好吧,看来是没有准备过八股文了,那接下来我也不问八股文了,问一些系统设计和场景题。就拿一个经典的问题来说吧,怎么设计一个高并发的点赞系统?

原坤:需要有点赞记录表和点赞总数表,要使用消息队列来异步写记录,可以使用缓存来提升读性能。

鱼皮:不错,2 个核心点是回答到了,还能想到更多的么?我给个思路的提示,从系统架构、性能优化、可用性 / 稳定性优化、存储优化等角度考虑。

原坤:额。。。

鱼皮:没事,一个成熟的高并发点赞系统还是非常复杂的,像我之前学习过 B 站的千亿级点赞系统服务架构设计,涉及到了 RPC、服务网关、聚合请求、分库分表、三级缓存(本地缓存、分布式缓存、数据库)、数据同步、容灾备份等等,感兴趣可以去了解一下,这种题比较发散,一定是答的点越多越加分。

在这里插入图片描述

鱼皮:我看你的工作经历中经常跟消息队列打交道?

原坤:是的,我们大厂有自己的消息队列平台,直接申请就能使用和接入数据了。

鱼皮:那再问你一个系统设计题,怎么设计一个消息队列云服务平台?开发者可以按需申请资源和数据订阅。

原坤:嗯,首先要能管理和配置 Topic,还要对资源进行监控,差不多想到这些。

鱼皮:嗯没错,那你们公司内部的员工怎么登录这个平台呢?总不会是手动输入账号和密码吧?

原坤:对,我们是直接一键登录。

鱼皮:一键登录是怎么实现的呢?有个技术名词叫什么?

原坤:额。。一时间想不起来了

鱼皮:有没有了解过 SSO 或者 OAuth 2?

原坤:额,有了解过,但是不知道原理。

鱼皮:好吧,那再问一道和你做的项目相关的题目:你们系统在对接上游的任务系统来获取数据时,怎么防止消息丢失? 怎么防止重复消费? 这是结合业务场景 + 工作经验 + 八股文的一道经典题目。

当我问到这道题的时候,原坤显得有些激动了,显然是问到他擅长的地方了。篇幅有限,以下省略 1000 字的回答。

面试总结

通过这场面试,能很明显地发现候选人的不足,也非常符合工作 2 年的程序员的状态,总结一下就 6 个字 —— 上不去、下不来

“上不去” 是指仅仅关注自己工作中用到的技术,不拓宽自己的眼界去了解更多的技术选型,也没有跳出单个项目或技术、站在更高的全局视角去学习系统的架构设计。“下不来” 是指没有深入了解过技术的底层原理和实现细节,对校招来说这可能没那么重要,但当你正式工作了,必须要有自己的核心竞争力,跟其他经验不足的同学要有明显的区别。只有更多地了解底层,才能发现别人看不出来的性能问题和可优化点。

我相信大多数工作后的同学都是这样,除了刚毕业那一年有点自主学习的劲头外,后面基本上就只关注自己的工作内容,不怎么了解其他的知识了。这样其实就很容易出现 “偏科” 的情况,比如原坤老哥,因为工作中用消息队列比较多,所以问到消息队列的时候,他能够答出更多的内容,像 MySQL 和 Redis 等其他知识基本就只局限于会用而已。只能等到跳槽的时候,再去学习突击,比如背背八股文什么的。由于现在校招的竞争在加大,应届生基本都是要准备八股文的,这就导致了一个有趣的现象,很多工作几年还在写 CRUD 的人,技术水平可能还不如应届生。如果你在工作中不持续学习,水平很有可能不增反降。

哪怕像我当时在腾讯这样的大厂,还同时负责不止一个项目,工作 2 年半后,我都觉得自己能学到的东西很有限了,能预料到继续保持这种状态我肯定会躺平。所以我还是选择创业,给自己营造一个无法躺平的环境,虽然累点儿,学到的东西会更多。

好吧,就聊到这里~ 今天晚上 19 : 30,我还会在 B 站《程序员鱼皮》模拟面试,跟大家一起交流分享技术,欢迎来围观,谢谢大家!

上述的所有面试题,都可以在 程序员面试刷题网《面试鸭》 查看题解哦~

更多

💻 编程学习交流:编程导航
📃 简历快速制作:老鱼简历
✏️ 面试刷题神器:面试鸭

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1980734.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python 如何进行图像处理(OpenCV, PIL)

图像处理是计算机视觉的重要组成部分,它涉及对数字图像进行分析、修改和处理。在Python中,OpenCV和Pillow(PIL是Pillow的前身)是两个非常流行的图像处理库。 一、OpenCV简介 OpenCV(Open Source Computer Vision Lib…

【文心智能体】梗图七夕版,一分钟让你看懂如何优化prompt,以及解析低代码工作流编排实现过程和零代码结合插件实现过程,依然是干货满满,进来康康吧

目录 背景什么是梗图梗图概念梗图结构 低代码开发最小运行单元大模型链提示词模板文心模板输出效果 测试工具链HTTP请求工具 梗图工具链全流程 梗图优化Prompt提示词优化后梗图结构提示词前后对比优化前效果优化后效果API接口BOS图片水印 梗图插件格式说明构思插件清单文件定义…

21天学通C++:理解智能指针、IO流、异常处理

理解智能指针 管理堆(或自由存储区)中的内存时,C程序员并非一定要使用常规指针,而可使用智能指针。 什么是智能指针 简单地说,C智能指针是包含重载运算符的类,其行为像常规指针,但智能指针能…

Spring通过注解优雅实现工厂模式

Spring通过注解优雅实现工厂模式 工厂模式作为开发者,应该都是耳熟能详的,在课本上、在网络上都会有无数的案例,是一个简单、确十分好用的设计模式。但是实现它的方法有很多,早年见过最多的就是用 if 判断类型,然后返回…

Docker部署Minio并配置域名访问

Docker部署Minio并配置域名访问 1、拉取镜像 docker pull minio/minio:RELEASE.2024-08-03T04-33-23Z-cpuv12、启动容器 # 创建数据目录 mkdir /data/minio # 创建配置目录 mkdir /root/.minio # 启动容器(如果不配置域名访问MINIO_BROWSER_URL、MINIO_SERVER_URL可以不用配…

springboot书画在线学习网站-计算机毕业设计源码11849

摘 要 本篇论文旨在设计和开发基于SpringBoot的书画在线学习网站,提供用户便捷的学习方式和丰富的学习资源。在该系统中,用户可以通过网站浏览书画的相关内容,包括诗公告消息、书画资讯、课程信息等。同时,系统还将提供书画的学习…

第七在线联手深服协:以科技之力,绘就时尚 AI 智能商品管理新篇章

7月30日,在深圳,一场堪称行业精英云集、科技锋芒毕露的“科技赋能时尚前沿沙龙”圆满落幕。这场盛会由 7thonline 第七在线与深圳服装行业协会(简称“深服协”)携手打造,深度聚焦 AI 智能商品管理在时尚天地的创新运用…

Liunx 小程序之进度条

Liunx 小程序之进度条 效果前提条件回车和换行缓冲区倒计时 进度条纯进度条模拟下载的进度条Progressbar.hProgressbar.cmain.cmakefile 效果 先来看效果,这其实是一个动态的进度条,后有源码,运行即可: 前提条件 在制作之前有两…

springboot仓库人力资源管理系统-计算机毕业设计源码45130

摘 要 仓库人力资源管理系统作为一种先进的信息技术工具,在企业中扮演着重要的角色。本文旨在深入探讨SpringBoot仓库人力资源管理系统的各项功能及其优势,以及对企业运营所带来的深远影响。 首先,我们详细探讨了SpringBoot仓库人力资源管理…

Opencv学习-图像变换

1. 图像连接 图像连接是指将两个具有相同高度或者宽度的图像连接在一起,图像的下(左)边缘是另一个图像的上(右)边缘。图像连接常在需要对两幅图像内容进行对比或者内容中存在对应信息时显示 对应关系时使用。例如&…

全国十大起名大师排行榜,中国最厉害三个起名大师是谁?

全国十大起名大师排行榜,中国最厉害三个起名大师是谁? 山东济南最受欢迎的起名大师有多位,其中较为知名的包括: ‌颜廷利,被誉为山东济南最出名的起名大师之一,还是现代山东文化名人,通过魔方解…

人工智能时代下,国产服务器操作系统如何加快发展?

人工智能时代下,国产服务器操作系统如何加快发展? 云智融合浪潮下,服务器操作系统产业未来发展将走向何方?英特尔和龙蜥的合作,能为国产操作系统的发展带来什么?双方如何通过合作布局“云AI”时代的未来&am…

配有知识库的AI助手与大模型问答相比,各有哪些优缺点?

1. 配有知识库支持的AI助手 优点: 精确性:知识库是由专业人员整理和维护的,其中的信息通常是经过验证和准确的。因此,配有知识库的AI助手可以提供准确的答案,并且在特定领域的问题上表现良好。可控性:知识…

合并重叠的区间

这一题不能用差分数组&#xff0c;因为 [1 , 4] [5, 6] 这个就会被合并&#xff0c;正确的做法就是先排序 bool cmp(vector<int> a, vector<int> b) {if (a[0] < b[0]) return 1;if (a[0] b[0]) return a[1] < b[1];return 0; } class Solution { public:ve…

Python酷库之旅-第三方库Pandas(065)

目录 一、用法精讲 256、pandas.Series.sparse方法 256-1、语法 256-2、参数 256-3、功能 256-4、返回值 256-5、说明 256-6、用法 256-6-1、数据准备 256-6-2、代码示例 256-6-3、结果输出 257、pandas.DataFrame.sparse方法 257-1、语法 257-2、参数 257-3、功…

分享一个基于人脸识别的小区物业管理系统Spring Boot(源码、调试、LW、开题、PPT)

&#x1f495;&#x1f495;作者&#xff1a;计算机源码社 &#x1f495;&#x1f495;个人简介&#xff1a;本人 八年开发经验&#xff0c;擅长Java、Python、PHP、.NET、Node.js、Android、微信小程序、爬虫、大数据、机器学习等&#xff0c;大家有这一块的问题可以一起交流&…

我花了一天时间,搭了个专属知识库,部署上线了,手把手教,不信你学不会

自动开了这个号以后&#xff0c;陆陆续续写了很多干货文章&#xff0c;一方面是可以帮助自己梳理思路&#xff0c;另一方面也方便日后查找相关内容。 但是&#xff0c;我想检索某个关键词是在之前哪篇文章写过的&#xff0c;就有点捉急了。CSDN 还好&#xff0c;可以检索到相关…

Python 算法交易实验77 QTV200日常推进-经典策略

说明 最初(去年7月)快快上了一版&#xff0c;到现在差不多正好一年。总体上当时做的还是蛮粗糙的&#xff0c;没有考虑模式&#xff0c;只是简单的用判别模型做了一道。 过去的一年&#xff0c;显然不是特别好的一年。我知道的大部分还是以亏损居多。这版策略竟然没有亏钱&am…

【C++11】:lambda表达式function包装器

目录 前言一&#xff0c;可变参数模板1.1 简单认识1.2 STL容器中的empalce系列相关接口 二&#xff0c;lambda表达式2.1 lambda表达式语法2.2 探索lambda底层 三&#xff0c;包装器3.1 function包装器3.2 bind 四&#xff0c;类的新功能4.1 默认成员函数4.2 关键字default4.3 关…

c++数据保存到.csv文件中,并用opencv离线仿真显示

测试可能不是很方便&#xff0c;希望采集一次数据后期还可以使用&#xff0c;这里提供一个案例&#xff1a; 数据写入fosepose.csv //write.cpp #include <iostream> #include <fstream> #include <iomanip> #include <cstdint> #include <chrono…