首页 > 其他分享 >学弟去字节面试,一小时被问了 50 题。。

学弟去字节面试,一小时被问了 50 题。。

时间:2024-09-12 11:38:59浏览次数:8  
标签:教程 阿强 面试 入门 50 学弟 学习 这题 字节

大家好,我是程序员鱼皮。昨天直播面试了一位 25 届的学弟,暂且就叫他 “阿强” 吧。

阿强非常优秀,不仅有半年的实习经历、有自己的项目,而且还参加过大厂(字节)的面试。

面试开场前,我问学弟:你上次面试字节时,感受如何?

结果阿强的回答差点闪了我的老腰,他说:强度挺大,1 个小时的面试问了我 50 多道题!

这是什么概念?平均 1 分钟 1 道题?这特么机关枪啊?

我开玩笑地问:那你是基本都没答上来么?所以面试官才能问这么多题?

结果阿强说:不是,很多都是追问,就一直答呗~

然后我问了阿强的预期薪资,他表示想进中大厂,拿个年薪 20 ~ 30 万就满足了。

行,看来这次参加我面试的阿强同学,有两把刷子。

  • 你以为的鱼皮内心:看我怎么拷打他!

  • 实际上的鱼皮内心:我别被他给拷打了!

下面我们开始面试,文末会揭晓面试结果,看看阿强能不能拿到他预期的薪资。

本期面试的回放视频在编程导航的直播专区,里面还有几十期真实面试现场的回放:https://code-nav.cn/live

 

面试现场

整个面试持续了近 2 个小时,从专业技能、到实习经历、再到项目经历,我基本把阿强的简历上提到的内容都问了个遍。

分享一下我问的题目,大家也可以试着答答看,答案可以在我们开发的面试刷题网站 面试鸭 获取:

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 规则引擎。前半问比较基础,核心考点在后半问,我是想考察下阿强的架构设计能力,看看能不能想到设计规则引擎的核心,比如规则配置化、规则持久化、规则编排、规则热刷新、上下文隔离等等。这题阿强也流畅表达了自己的思路,只不过视角还是更偏向于应用开发,而不是整体的设计。

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。

因为整个面试过程中,我的体验是非常好的,完全感受不到阿强是 25 届的校招生,更像是和一位有工作经验的同学在聊天。基本我问什么,他都能很快地表达,很少有卡壳;而且状态是比较自信的,我故意设置的一些坑点也没有唬住他。直播间的弹幕也都在说:我曹,这是 25 届?

所以其实我也能理解为什么他去字节面试,1 个小时能被问这么多题目了。

最后我给阿强一些建议:面试的准备其实已经比较到位了,重点放在优化简历上。

1)把你自己的项目上线,尽量上线地址、个人博客和 GitHub,向招聘者更多地展示你的经历和能力

2)由于简历只有 1 个项目,可以再补充一个。我给阿强推荐的是编程导航的 手写 RPC 框架和最新的面试刷题平台项目 ,这两个项目涉及了大量市面上大多数同学简历中都没有提到过的技术,写上去能给简历增加不少区分度,而且学习周期也不长,适合秋招快速突击。

3)之后再回答系统设计类的题目时,可以先思考一下,怎么从整体到局部、有一个线性的思路去回答,比如 “如何设计一个秒杀系统?”,可以先回答秒杀系统重需要解决的关键问题,然后从前后端两个视角去回答;回答后端时,可以按照请求的顺序,依次回答整个链路各个模块(或技术组件)的注意事项。

 


 

OK,就分享到这里,大家能否答出这些题目呢?

本期面试的回放视频在编程导航的直播专区,里面还有几十期真实面试现场的回放:https://code-nav.cn/live

 

更多编程学习资源

 

标签:教程,阿强,面试,入门,50,学弟,学习,这题,字节
From: https://www.cnblogs.com/yupi/p/18409850

相关文章

  • 第50课 Scratch入门篇:放烟花
    放烟花故事背景: 水在一个宁静的小镇上,生活着一位充满好奇心和创造力的小朋友。 有一天晚上,小镇的天空格外黑暗,星星也躲在了云层后面。小朋友望着黑漆漆的夜空,心想:要是能有一场绚丽的烟花表演,那该多好啊!于是,他决定用自己所学的Scratch编程知识来创造一场属于自己的......
  • C++竞赛初阶L1-15-第六单元-多维数组(34~35课)556: T456506 矩阵转置
    题目内容输入一个 n 行 m 列的矩阵 A,输出它的转置 AT。输入格式第一行包含两个整数 n 和 m,表示矩阵 A 的行数和列数。1≤n≤100,1≤m≤100。接下来 n 行,每行 m 个整数,表示矩阵 A 的元素。相邻两个整数之间用单个空格隔开,每个元素均在 1∼1000 之间。输......
  • C++竞赛初阶L1-15-第六单元-多维数组(34~35课)557: T456507 图像旋转
    题目内容输入一个 n 行 m 列的黑白图像,将它顺时针旋转 90 度后输出。输入格式第一行包含两个整数 n 和 m,表示图像包含像素点的行数和列数。1≤n≤100,1≤m≤100。接下来 n 行,每行 m 个整数,表示图像的每个像素点灰度。相邻两个整数之间用单个空格隔开,每个元素......
  • C++竞赛初阶L1-15-第六单元-多维数组(34~35课)555: T456505 矩阵乘法
    题目内容计算两个矩阵的乘法。n×m 阶的矩阵 A 乘以 m×k 阶的矩阵 B 得到的矩阵 C 是 n×k 阶的,且 C[i][j]=A[i][0]×B[0][j]+A[i][1]×B[1][j]+ …… +A[i][m−1]×B[m−1][j](C[i][j] 表示 C 矩阵中第 i 行第 j 列元素)。输入格式第一行为 n,m,k,表......
  • C++竞赛初阶L1-15-第六单元-多维数组(34~35课)554: T456504 矩阵加法
    题目内容输入两个 n 行 m 列的矩阵 A 和 B,输出它们的和 A+B,矩阵加法的规则是两个矩阵中对应位置的值进行加和,具体参照样例。输入格式第一行包含两个整数 n 和 m,表示矩阵的行数和列数 (1≤n≤100,1≤m≤100)。接下来 n 行,每行 m 个整数,表示矩阵 A 的元素......
  • 蜜蜂舞动全球舞台:2023年我国蜂产品年产值已突破500亿元大关,实现了从数量大国向质量强
        在北京密云这片绿意盎然的土地上,一场关于小蜜蜂与大产业的盛会——2024年国际蜂联亚洲区域研讨会圆满落下帷幕。这场由中国农业科学院蜜蜂研究所主办的盛会,不仅汇聚了来自33个国家和地区的蜂业精英,更成为了全球蜂业共谋发展、应对挑战的重要平台。中国蜂业:从数量到质量......
  • 【洛谷 P5076】【深基16.例7】普通二叉树(简化版)题解(多重集合+lower_bound+upper_bound
    【深基16.例7】普通二叉树(简化版)题目描述您需要写一种数据结构,来维护一些数(都是以内的数字)的集合,最开始时集合是空的。其中需要提供以下操作,操作次数不超过:查询数的排名(排名定义为比当前数小的数的个数。若有多个相同的数,应输出最小的排名)。查询排名为的数。求的前驱(......
  • 【高级编程】Java IO流(下)字符流 Reader Writer 字节流读取二进制文件
    文章目录ReaderFileReaderBufferedReaderWriterFileWriterBufferedWriter读写二进制文件ReaderReader是一个抽象类,用于读取字符流。它是所有字符输入流的基类。Reader提供了一些基本的方法来读取字符数据intread()//读取单个字符,并返回一个整数。如果到达流......
  • 基于单片机设计的水平仪(STC589C52+MPU6050)
    一、前言【1】项目背景水平仪是一种常见的测量工具,用于检测物体或设备的水平姿态。在许多应用中,如建筑、制造和航空等领域,保持设备的水平姿态是非常重要的。为了实现实时的水平检测和显示,基于单片机设计的水平仪是一个常见的解决方案。数字水平仪是一种用于测量物体相对于水平面的......
  • [ABC250Ex] Trespassing Takahashi
    感觉是很厉害的结论题。题意给你一个带权无向连通简单图\(G=(V,E),|V|=n,|E|=m\)。钦定编号\(1\simk\)的点为关键点。给定\(q\)次询问,每次询问给出\(x,y,t\),表示你需要回答是否存在一条路径,使得从\(x\)出发到\(y\)的路径上相邻两个关键点的距离都不超过\(t\)。保证......