后端面试经验

1.写webserver的内容

webserver我是阅读《TCP网络编程》和《Linux高性能编程》学习的,其中最主要的应用就是:对多进程、多线程的学习;使用IO多路复用模型同时监听多个套接字;使用线程池机制和锁信号量来处理多任务。

具体使用的是reactor的模式,在面试的时候很重要的一个点是,面试官推荐我去学习NGINX的实现,契机是我说我了解这个,但是我只是知道这个是一个帮助写网络服务器的,具体是什么不知道,于是在面试结束去搜了一下,知道了它是使用reactor模式监听多套接字,能实现反向代理;资源请求的webserver,同时因为使用了reactor模式,io多路复用技术就像redis一样,少量线程就很高效。目前是打算后期看极客时间的nginx的课程继续学习。

2.TCP相关

这个在后边面试成功拿到鹅厂offer很有帮助,具体来说学习这个经历阶段比较多,从最开始考研的时候对计网知识的记忆性学习;到后来看趣谈网络协议了解了tcp的有连接本质上就是发收双方维护一定的数据结构;最后是在找实习之前通过学习CS144的大作业的lab,在实现的过程中对tcp的实现有了更深刻的了解。

收获1:比如tcp本身的连接,在实现中维护了TCP_CONNECTION TCP_SENDER TCP_RECEIVER,使用这些结构体来维护数据。

收获2:在实现时应用层和传输层是有字节流的,这里需要能读写,需要实现接口,然后具体实现时我们后续会用传输层这边的读写的内容。应用层的是测试会自动测试,然后这里存储就有一些内容,比如有不把数据读走的读。

收获3:在实现滑动窗口的时候,第一次的时候在移动窗口时使用的是把后边的数据复制到前面,基于queue实现的,但是发现效率不高,后续想到了数据结构里的循环队列,于是通过一个指针来代表队头,实际数据不真的移动,提升效率。

这里收获3是最大的,也是很重要的,对以前学过的数据结构的一个应用。

3.算法相关

一个是我在面数据分析的一个岗位时学到的

如果按组去划分,count,使用的是group by 某某某,然后having

要求去重就使用DISTINCT

在排序时使用order by

我当时的问题是order突然忘记怎么写了。

剩下的三个是我在面试的时候都直接写下来的,比较常规的题目,但是不是每个都做过

a.LRU缓存

我自己想的通过自制的链表实现,和hash

使用hash的set来存储具体的键,使用N来表示能接受的LRU的容量限制,在具体实现中,get能得到key对应的value,get的同时会把数据提到链表的头部,通过头部来表达数据的新旧访问关系;set首先要判断是否有这个值,如果有就把它放在最前面,然后更新值,如果不存在,要判断目前的数量是否大于等于N,如果不是,就直接放在队头,否则就去掉队尾的然后在队头插入。

b.深度遍历树

通过栈和递归的方式

树的深度优先遍历dfs,常见的形式是使用函数调用的递归方式,使用递归能实现,使用栈也能实现,递归在底层也是通过函数栈来实现的,所以树的深度优先遍历都是使用栈来实现的。

树的宽度优先遍历是通过队列来实现的。

c.判断环是否有圈

使用快慢指针或者用set

4.表达方面

这个是我在阅读《聪明人说话之前想的事》里学到的,在讲话的时候"先讲结论",先说对方想听的内容而不是表达自己想听的,在这种情况下要弄清楚什么是结论,比如对于tcp协议的实现,结论就是tcp本质上是双方维护一定的结构来表现出逻辑上的连接,本身tcp是没有一条物理上的连接的,这就是对于tcp协议实现有关的结论。

相关推荐
weixin_404157682 小时前
Java高级面试与工程实践问题集(四)
java·开发语言·面试
程序员爱钓鱼3 小时前
Go输出与格式化核心库:fmt包完整指南
后端·面试·go
_饭团4 小时前
C 语言内存函数全解析:从 memcpy 到 memcmp 的使用与模拟实现
c语言·开发语言·c++·学习·算法·面试·改行学it
小金鱼Y4 小时前
前端必看:this 不是玄学!5 大绑定规则帮你永久告别 this 困惑
前端·javascript·面试
凌波粒4 小时前
LeetCode--704.二分查找(数组)
算法·leetcode·职场和发展
tobias.b5 小时前
计算机基础知识-操作系统
考研·面试·职场和发展
向往着的青绿色5 小时前
完全平方数【Letcode279题解】
开发语言·c++·数学·算法·面试·性能优化·动态规划
木斯佳5 小时前
前端八股文面经大全:阿里云AI应用开发二面(2026-03-21)·面经深度解析
前端·css·人工智能·阿里云·ai·面试·vue
QD_ANJING5 小时前
2026年大厂前端高频面试原题-React框架200题
开发语言·前端·javascript·react.js·面试·职场和发展·前端框架