
大家好,我是阿秀。
昨天在牛客网看到一个职场捅娄子大赛,其中有位同学发表了一篇帖子,标题为"八股选手进了公司就原形毕露了"。
其中提到自己做一个需求的时候还不会用git,结果直接 checkout 到其导师的分支上进行了开发,后面第一次 merge 的时候也反向merge
。。。结果后面这位同学再向导师要活的时候,导师直接让他先熟悉一下 git 再说
。
这位同学的情况也是大多数八股文选手的通病,那就是表达能力可以,实战能力糟糕,甚至说的严重点就是压根没有实战能力,从始至终都在纸上谈兵。。。。说到这里我就想起来以前我在字节时替组长带的那个实习生了,真的是已经死去的记忆开始袭击我。
1、死去的记忆开始袭击我
新人入职两大拦路虎:git 和 Linux ,这个说法不是空穴来风的。
经常遇到有些同学打算去实习了来问阿秀有没有什么建议,阿秀都建议他们去提前了解一下 git 和 Linux ,最起码基本的 git三板斧和Linux常用命令,比如top、cd、cat这些要知道是干嘛的,否则真的很容易闹出大笑话。
阿秀以前在字节的时候帮组长带过一个实习生就闹出过类似的笑话,还是三年前的事了,当时还写过文章分享希望一些在校朋友以此为戒,不要犯类似的错误:崩溃!实习生把小组的代码仓库搞得一团糟。。。
当时因为组长比较忙,让我帮忙看着点那位实习生同学,当时组长已经给了他一个很简单的前端小需求,他也自信满满的表示没问题,然后就埋头开发去了,阿秀看他那么自信的样子也以为没啥问题就去忙我自己的事了。
结果推送代码的时候就直接BOOM了,不知道他怎么搞的,直接push到master分支去了,直接跨过开发分支和测试分支,直接合到master发布分支上去了。。。
这还不算什么。。。。如果只是这样就还好,关键是他看有写代码冲突就直接在master分支上对已经成功发版的代码增删改!!!
OMG!!!所以就直接爆炸了
然后我就被 Leader一顿批,说没看好他,当时我还觉得挺委屈的,毕竟代码权限也不是我开的,而且我还是替组长帮忙带的实习生。。。。看他基础挺好的,想着最基本的 git 操作应该也是 ok 的,然后就被打脸了。。。
所以这里建议各位实战能力比较弱的读者朋友们,在实习或者正式入职之前有时间都去学一下git和Linux。
在上面那篇文章的文末也分享了一份git学习手册,如下图:
当时我就把这份手册丢给那个实习生同学了,这次就再分享一下吧,获取方式见这篇文章的文末:崩溃!实习生把小组的代码仓库搞得一团糟。。。这里就不多做展开了。
2、分享一份百度提前批面经
近期百度提前批已经开始有一段时间了,甚至已经有不少 25 届的同学 oc 了,这里分享一位已经顺利 oc 百度提前批测开岗位同学的二面面经。
二面总体难度不高,但考察知识广度比较广,如果有觉得后端竞争比较激烈的同学,也可以试一试测开岗位,结合自身情况趋利避害选择最适合自己的并不是什么丢脸的事。
面经链接:https://www.nowcoder.com/feed/main/detail/0550f6a83d424223a8a7c41c0335b758 作者:哈球池扶手包包
对于这份面经中比较经典的面试问题,阿秀已经录入到去年开发的互联网大厂面试真题记录网站:InterviewGuide 中去了,这个网站是阿秀去年为了方便自己找工作而开发的面试网站,目前是开源状态,欢迎试用体验。
目前支持按照行业、公司、岗位、科目、考察时间等查看面试真题,在面试前一天晚上看一下有很大概率会遇到第二天的原因
,截止目前已经有不少小伙伴遇到原题了,具体可以看下链接:2023年7月字节跳动后端研发岗面试考察题目Top10、局部性原理还真有用!

网址:https://top.interviewguide.cn/
1、自我介绍
balabalaba
2、Redis持久化了解吗?
Redis是一个支持持久化的内存数据库,通过持久化机制把内存中的数据同步到硬盘文件来保证数据持久化。当Redis重启后通过把硬盘文件重新加载到内存,就能达到恢复数据的目的。
很多时候我们需要持久化数据也就是将内存中的数据写入到硬盘里面,大部分原因是为了之后重用数据(比如重启机 器、机器故障之后回复数据),或者是为了防止系统故障而将数据备份到一个远程位置。
以下有两种持久化机制:
快照(snapshotting)持久化(RDB持久化)
Redis可以通过创建快照来获得存储在内存里面的数据在某个时间点上的副本。Redis创建快照之后,可以对快照进行 备份,可以将快照复制到其他服务器从而创建具有相同数据的服务器副本(Redis主从结构,主要用来提高Redis性 能),还可以将快照留在原地以便重启服务器的时候使用。
快照持久化是Redis默认采用的持久化方式,在Redis.conf配置文件中默认有此下配置:
save 900 1 #在900秒(15分钟)之后,如果至少有1个key发生变化,Redis就会自动触发BGSAVE命令
创建快照。
save 300 10 #在300秒(5分钟)之后,如果至少有10个key发生变化,Redis就会自动触发BGSAVE命令创建快照。
save 60 10000 #在60秒(1分钟)之后,如果至少有10000个key发生变化,Redis就会自动触发BGSAVE命令创建快照。
AOF(append-only file)持久化
与快照持久化相比,AOF持久化的实时性更好,因此已成为主流的持久化方案。默认情况下Redis没有开启 AOF(append only file)方式的持久化,可以通过appendonly参数开启:appendonly yes
开启AOF持久化后每执行一条会更改Redis中的数据的命令,Redis就会将该命令写入硬盘中的AOF文件。AOF文件的 保存位置和RDB文件的位置相同,都是通过dir参数设置的,默认的文件名是appendonly.aof。
在Redis的配置文件中存在三种不同的 AOF 持久化方式,它们分别是:
appendfsync always #每次有数据修改发生时都会写入AOF文件,这样会严重降低Redis的速度
appendfsync everysec #每秒钟同步一次,显示地将多个写命令同步到硬盘
appendfsync no #让操作系统决定何时进行同步
为了兼顾数据和写入性能,用户可以考虑 appendfsync everysec选项 ,让Redis每秒同步一次AOF文件,Redis性能 几乎没受到任何影响。而且这样即使出现系统崩溃,用户最多只会丢失一秒之内产生的数据。当硬盘忙于执行写入操作的时候,Redis还会优雅的放慢自己的速度以便适应硬盘的最大写入速度。
3、Redis用于什么场景?
除了做缓存之外,Redis还可以用于以下场景:
数据库:Redis可以作为一个高性能的内存数据库使用,支持持久化存储和数据备份,可以处理大量的读写操作。 消息队列:Redis的发布/订阅功能可以用于构建简单的消息队列系统,可以实现消息的发布、订阅和传递。 分布式锁:Redis的原子性和分布式特性可以用于实现分布式锁,保证在分布式环境下的数据一致性。 计数器:Redis的原子性操作和高性能可以用于实现各种计数器,比如网站的访问量统计、点赞数统计等。 地理位置应用:Redis的地理位置功能可以用于存储和查询地理位置信息,比如附近的人、附近的店铺等。 实时排行榜:Redis可以通过有序集合和排序功能实现实时排行榜,比如游戏中的玩家排名、文章的热门排名等。
除了上述场景,Redis还可以用于缓存预热、限流、分布式会话管理、数据缓存等。总的来说,Redis是一个功能丰富的内存数据库,适用于各种高性能、高并发的场景。
4、业务里加了Redis,然后怎么对其中的一些数据点进行测试?
首先进行数据填充,可以使用 Redis 命令或脚本将测试数据填充到 Redis 中。例如
redis-cli SET key value
redis-cli LPUSH list value1 value2
redis-cli HMSET hash key1 value1 key2 value2
然后对基本的功能尽心刚测试,比如:
测试基本的 CRUD 操作(创建、读取、更新、删除)是否正常。 测试数据的一致性,确保数据在不同操作后仍然正确。
模拟高并发场景,测试 Redis 在高负载下的表现来做到并发测试,最后再测试 Redis 的持久化机制(如 RDB 和 AOF),确保数据在重启后能够正确恢复。
5、输入URL从键入到显示发生了什么?
很常规的问题,下面是我的回答:
域名解析 发起TCP的3次握手 建立TCP连接后发起http请求 服务器响应http请求,浏览器得到html代码 浏览器解析html代码,并请求html代码中的资源(如js、css、图片等) 浏览器对页面进行渲染呈现给用户。
6、对网页当中的错误,怎么区分是前端还是后端的?可以用什么工具区分?
这个我只说了console命令行可能有错误提示
阿秀补充
通常前端错误会在浏览器控制台中显示,如JavaScript错误、资源加载失败等。 后端错误可能会返回特定的HTTP状态码,如404(未找到)、500(服务器内部错误)等。
7、Linux命令了解过吗?
1.文件相关(mv mkdir cd ls)
2.docker相关(docker container ls docker ps -a )
3.权限相关(chmod chown useradd groupadd)
4.网络相关(netstat ip addr)
5.测试相关(测试连通性:ping 测试端口连通性:telnet)
补充
8、写一个SQL语句,学生表、成绩表,查出三年级里英语成绩第三的人的学生名和英语成绩?
SELECT s.name, g.score
FROM students s
JOIN grades g ON s.student_id = g.student_id
WHERE s.grade = '三年级' AND g.subject = '英语'
ORDER BY g.score DESC
LIMIT 1 OFFSET 2;
这里的逻辑是:
JOIN语句将学生表和成绩表通过student_id关联起来。WHERE子句过滤出三年级且科目为英语的成绩。ORDER BY g.score DESC按成绩降序排序。LIMIT 1 OFFSET 2跳过前两个记录(即成绩最高的两个学生),选择第三个学生。
9、SQL语句再简化一下
可以利用子查询来首先确定三年级英语成绩的排名,然后再从学生表中获取第三名的学生信息。这里是一个简化后的查询示例:
sql
SELECT s.name, g.score
FROM (
SELECT student_id, score
FROM grades
WHERE subject = '英语'
ORDER BY score DESC
LIMIT 1 OFFSET 2
) AS top_english_scores
JOIN students s ON s.student_id = top_english_scores.student_id
WHERE s.grade = '三年级';
这个查询的逻辑是:
子查询首先从成绩表中选择英语科目的成绩,并按成绩降序排序,然后使用 LIMIT 1 OFFSET 2来获取成绩排名第三的学生的ID和成绩。然后,外层的查询根据子查询得到的 student_id从学生表中获取对应的学生名和成绩。最外层的 WHERE子句确保只选择年级为三年级的学生。
10、算法手撕:两个栈实现一个队列
常规算法题,有手就行
11、了解接口测试吗?
接口测试是软件测试的一种类型,专注于测试系统组件之间的交互点,即接口。接口测试的目的是确保接口能够正确地接收和发送数据,并且符合预期的功能和性能要求。
接口测试的关键方面包括:
功能测试:验证接口是否按照预期执行其功能,包括输入数据的处理和输出结果的准确性。 安全性测试:确保接口能够抵御恶意攻击,如SQL注入、跨站脚本攻击(XSS)等。 性能测试:评估接口在高负载下的表现,包括响应时间和吞吐量。 可用性测试:确保接口在不同的环境和条件下都能正常工作。 兼容性测试:检查接口在不同平台、设备和浏览器上的兼容性。 数据验证:确保接口接收和发送的数据格式正确,符合预定的数据类型和结构。 错误处理:测试接口在遇到错误输入或异常情况时的响应。 版本控制和向后兼容性:确保新版本的接口能够与旧版本的客户端或服务兼容。
13、有哪些测试工具了解过吗?
Postman:一个流行的API开发工具,用于构建请求、测试API并查看响应。 Swagger:提供API文档生成、测试和协作的平台。 JMeter:一个用于性能测试的开源工具,也可以用来测试API。 SoapUI:专注于SOAP和REST API测试的工具,提供功能强大的测试用例管理。 Katalon Studio:一个全面的API、Web、桌面和移动应用测试解决方案。 Curl:一个命令行工具,用于发送HTTP请求和测试API。
14、反问

你好,我是阿秀,普通学校毕业,校招时拿到字节跳动SP、百度、华为、农业银行等6个互联网中大厂offer,毕业后先于抖音部门担任全栈开发工程师,目前在上海某外企带领团队继续从事全栈开发,负责对印项目。
前年和去年分享的很多校招上岸经验也都是出自阿秀的学习圈中的往届上岸人如21届、22届、23届等,阿秀的学习圈中置顶帖的「知识图谱」和「精华区」中有很多计算机大学本科&研究生学习以及校招的内容和问题,都是往届沉淀下来的瑰宝。

多看看这些能够帮你的校招之路走的更稳、更顺、更平坦,比如:
也会在自己组建的阿秀的学习圈中分享一些社招跳槽找工作的经验,都是自己一路走过来的经验。