2021.6.28 15:00 - 16:00
前言
因为我提前几个小时就进入飞书面试了, 所以提前大概十五分钟就开始了.
上来我也没有自我介绍, 面试官挺帅, 直接就开始问了.
第一个算法题, 问一个数字的二进制位数多少个1, 我给秒了.
然后, 面试官说我算法挺多奖, 挺好就不问算法了, 那一刻, 我心有点凉, 八股文我没学好啊.
现在想来, 因为我项目有点夸大了, 让面试官误解了, 所以问了很多数据库的问题.
所有问题的答案会在最后面进行总结.
回忆总结如下(有的问题是项目延申出来的, 有的问题是面试官主导问的)
一, 数据库
我看你数据库支持事务, 满足隔离性吗
我说: 虽然四个性质我好像满足, 但其实不支持事务(当时对事务理解太浅, 现在想属实丢人了)mysql的几个引擎你知道吗?
我说: 不知道(只知道个名字也没用啊, 干脆不知道为好)几个锁, 乐观锁之类那是不是也不知道?
我说: 不知道(问啥啥不会, 被吐槽了, 😥555555)select之类的sql语句是如何实现的?
我说: 不知道…..
二, 操作系统
进程你了解多少
我说: 进程包括线程, 打开应用程序就会创建一个进程那一个进程最多有多少线程?
我说: 四个(不对)那么进程有几种状态?
我说: 运行态, 阻塞态, 比如在io输入的时候(又给自己挖坑了)(这一个问题我记不清了), 在问io输入属于软什么, 还是硬什么?
我说: 不知道这两个概念.linux你了解吗?
我说: 没学过.
三, 计算机网络
http你了解多少?
我说: http是不经过加密的, 而https是加密传输那么, https是如何加密的?
我说: 通过一些加密算法, 但具体什么算法我就不清楚了(https加密这块自己挖坑跳进去了)你知道一个网页上的内容获取的过程你知道么?
我说: 网址先通过DNS解析之后获得服务器地址, 然后tcp三次握手建立连接, 就能传输数据了那你知道DNS有哪几种吗?
我说: 不知道你刚才说tcp三次握手, 那几次挥手呢, 如何确认正确性(最后一句忘了咋问的了, 大体意思是问我报文标志位)?
我说: 四次挥手, 报文的确认号, 是上一个报文序列号 + 1(然后面试官说, 我明白你意思了, 其他的我也没说)那tcp四次挥手的时候, close_wait状态是发送端还是接收端的?
我说: 发送端(错了)ip端口号最多有多少个你知道吗?
我说: 不知道(理论65536个, 取决于内存能不能开那么多)
四, 其他的问题
- (因为我开着浏览器主页)给你一个搜索记录日志文件, 里面有10亿个关键词, 可重复, 问输出被搜索次数最多的20个关键词
我回答比较散乱, 我对于全英文字母提出用 hash + trie,(结束后百度了一下, 竟然算法选对了吗, 但不全)
然后对于中文, 我没有提出好的思路, 只说第一步要hash.
这里我的思维被禁锢住了, 一直在按做算法题的思路走, 最后面试官说可以先把关键词分类到不同的文件(分治!), 然后用最小堆之类的数据结构都可以排序. 确实
五, 所有面试问题总结补充
事务: 是访问并可能操作各种数据项的一个数据库操作序列,这些操作要么全部执行,要么全部不执行,是一个不可分割的工作单位。事务由事务开始与事务结束之间执行的全部数据库操作组成, 其实就是做一件事要有始有终!
事务的四个特性ACID:
原子性(A): 事务中的全部操作是不可分割的, 要么全部成功执行, 要么全部不执行.
一致性(C): 事务执行完之后, 数据的完整性没有被破坏, 表示执行完的结果要完全符合所有的设定.
隔离性(I): 数据库允许并发事务同时对其数据的进行读写和修改的能力, 隔离性可以防止多个事务并发执行而导致数据的不一致性.
持久性(D): 事务处理结束后, 对数据的修改就是永久的, 即使系统故障也不会丢失.mysql的存储引擎
InnoDB, MyISAM, MEMORY.select底层实现
图http状态码
1xx: 表示通知信息, 如请求收到了或正在处理
2xx: 表示成功, 如接受或知道了
3xx: 表示重定向, 如要完成请求还需要进一步的行动
4xx: 表示客户的差错, 如请求中有错误的语法或不能完成
5xx: 表示服务器的错误, 如服务器失效无法完成请求https如何加密?
对称加密
非对称加密获取一个网页内容的过程
- 域名通过解析成IP地址
- 与目的主机进行tcp连接(三次握手)
- 发送与收取数据
- 与目的主机断开tcp连接(四次挥手)
DNS服务器分类, 根据域名服务器所起的作用
根域名服务器
顶级域名服务器(TLD)
权限域名服务器
本地域名服务器
后记
- 和面试官边面边聊.
我问面试官我表现咋样.
面试官说我真的会的太少了, 第一次面试不要灰心, 算法是你的强项, 你交流能力挺好的.
我说我比较单一, 想只要一项强, 就通吃, 结果大三了, 自食恶果了.
面试官说: 算法是所有岗位的基础, 算法好固然好, 其他的也很重要, 比如tcp某个状态你不知道发生在什么时候, 你排查错误的时候就找不到.
我恍然大悟, 表示肯定, 确实是这样的.
我玩笑的说, 这不是想要去学么.
….
总之, 表现不好, 中途面试官说我会把你的情况给二面说一下, 然后又安慰我不要灰心, 我以为我凉了一面. 但是一小时后, hr来电话约了二面???
我现在在怀疑一面二面有没有关系了😥, whatever, 二面加油呗.