2021.6.28 15:00 - 16:00

前言

  因为我提前几个小时就进入飞书面试了, 所以提前大概十五分钟就开始了.
上来我也没有自我介绍, 面试官挺帅, 直接就开始问了.
第一个算法题, 问一个数字的二进制位数多少个1, 我给秒了.
然后, 面试官说我算法挺多奖, 挺好就不问算法了, 那一刻, 我心有点凉, 八股文我没学好啊.

现在想来, 因为我项目有点夸大了, 让面试官误解了, 所以问了很多数据库的问题.

所有问题的答案会在最后面进行总结.

回忆总结如下(有的问题是项目延申出来的, 有的问题是面试官主导问的)

一, 数据库

  1. 我看你数据库支持事务, 满足隔离性吗
    我说: 虽然四个性质我好像满足, 但其实不支持事务(当时对事务理解太浅, 现在想属实丢人了)

  2. mysql的几个引擎你知道吗?
    我说: 不知道(只知道个名字也没用啊, 干脆不知道为好)

  3. 几个锁, 乐观锁之类那是不是也不知道?
    我说: 不知道(问啥啥不会, 被吐槽了, 😥555555)

  4. select之类的sql语句是如何实现的?
    我说: 不知道…..

二, 操作系统

  1. 进程你了解多少
    我说: 进程包括线程, 打开应用程序就会创建一个进程

  2. 那一个进程最多有多少线程?
    我说: 四个(不对)

  3. 那么进程有几种状态?
    我说: 运行态, 阻塞态, 比如在io输入的时候(又给自己挖坑了)

  4. (这一个问题我记不清了), 在问io输入属于软什么, 还是硬什么?
    我说: 不知道这两个概念.

  5. linux你了解吗?
    我说: 没学过.

三, 计算机网络

  1. http你了解多少?
    我说: http是不经过加密的, 而https是加密传输

  2. 那么, https是如何加密的?
    我说: 通过一些加密算法, 但具体什么算法我就不清楚了(https加密这块自己挖坑跳进去了)

  3. 你知道一个网页上的内容获取的过程你知道么?
    我说: 网址先通过DNS解析之后获得服务器地址, 然后tcp三次握手建立连接, 就能传输数据了

  4. 那你知道DNS有哪几种吗?
    我说: 不知道

  5. 你刚才说tcp三次握手, 那几次挥手呢, 如何确认正确性(最后一句忘了咋问的了, 大体意思是问我报文标志位)?
    我说: 四次挥手, 报文的确认号, 是上一个报文序列号 + 1(然后面试官说, 我明白你意思了, 其他的我也没说)

  6. 那tcp四次挥手的时候, close_wait状态是发送端还是接收端的?
    我说: 发送端(错了)

  7. ip端口号最多有多少个你知道吗?
    我说: 不知道(理论65536个, 取决于内存能不能开那么多)

四, 其他的问题

  1. (因为我开着浏览器主页)给你一个搜索记录日志文件, 里面有10亿个关键词, 可重复, 问输出被搜索次数最多的20个关键词
    我回答比较散乱, 我对于全英文字母提出用 hash + trie,(结束后百度了一下, 竟然算法选对了吗, 但不全)
    然后对于中文, 我没有提出好的思路, 只说第一步要hash.

这里我的思维被禁锢住了, 一直在按做算法题的思路走, 最后面试官说可以先把关键词分类到不同的文件(分治!), 然后用最小堆之类的数据结构都可以排序. 确实

五, 所有面试问题总结补充

  1. 事务: 是访问并可能操作各种数据项的一个数据库操作序列,这些操作要么全部执行,要么全部不执行,是一个不可分割的工作单位。事务由事务开始与事务结束之间执行的全部数据库操作组成, 其实就是做一件事要有始有终!

  2. 事务的四个特性ACID:
    原子性(A): 事务中的全部操作是不可分割的, 要么全部成功执行, 要么全部不执行.
    一致性(C): 事务执行完之后, 数据的完整性没有被破坏, 表示执行完的结果要完全符合所有的设定.
    隔离性(I): 数据库允许并发事务同时对其数据的进行读写和修改的能力, 隔离性可以防止多个事务并发执行而导致数据的不一致性.
    持久性(D): 事务处理结束后, 对数据的修改就是永久的, 即使系统故障也不会丢失.

  3. mysql的存储引擎
    InnoDB, MyISAM, MEMORY.

  4. select底层实现

  5. http状态码
    1xx: 表示通知信息, 如请求收到了或正在处理
    2xx: 表示成功, 如接受或知道了
    3xx: 表示重定向, 如要完成请求还需要进一步的行动
    4xx: 表示客户的差错, 如请求中有错误的语法或不能完成
    5xx: 表示服务器的错误, 如服务器失效无法完成请求

  6. https如何加密?
    对称加密
    非对称加密

  7. 获取一个网页内容的过程

    1. 域名通过解析成IP地址
    2. 与目的主机进行tcp连接(三次握手)
    3. 发送与收取数据
    4. 与目的主机断开tcp连接(四次挥手)
  8. DNS服务器分类, 根据域名服务器所起的作用
    根域名服务器
    顶级域名服务器(TLD)
    权限域名服务器
    本地域名服务器

后记

  1. 和面试官边面边聊.
    我问面试官我表现咋样.
    面试官说我真的会的太少了, 第一次面试不要灰心, 算法是你的强项, 你交流能力挺好的.
    我说我比较单一, 想只要一项强, 就通吃, 结果大三了, 自食恶果了.
    面试官说: 算法是所有岗位的基础, 算法好固然好, 其他的也很重要, 比如tcp某个状态你不知道发生在什么时候, 你排查错误的时候就找不到.
    我恍然大悟, 表示肯定, 确实是这样的.
    我玩笑的说, 这不是想要去学么.
    ….
    总之, 表现不好, 中途面试官说我会把你的情况给二面说一下, 然后又安慰我不要灰心, 我以为我凉了一面. 但是一小时后, hr来电话约了二面???
    我现在在怀疑一面二面有没有关系了😥, whatever, 二面加油呗.