2019迅雷校园招聘后端工程师面试总结

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/m0_37422289/article/details/83353124

一面

一面概述

基本上面试过的一面都是问答形式, 面试官有一个题目清单,每个回答一看准确,二看表达. 一面基本上给出正确答案就给过.

一面题目

题目没有很特别的地方, 大部分是常见的面试题.
印象比较深刻的有:

  1. 5亿个整型数, 内存仅有4G时,如何完成排序. 若内存无限制,如何完成时间复杂度最小的排序.
    答:
    1)海量数据分治. 先HASH划分小文件,再使用堆排序快排分别完成各个小文件的内部排序, 最后使用归并排序构建败者树完成多个小文件的外部排序.
    2)我先回答了: 若无限制,可全部读入完成时间复杂度为O(nlogn)的快排. 面试官提示内存无限大,可否再快一些. 内存无限制的情况下除了全部读入,还可以以空间换时间,直接进行计数排序. 又因为整型范围可知2^32, 5亿个数很可能填满整个范围, 直接构建长度为2^32的数组,以下标完成一次遍历计数即可. 时间复杂度为O(n).
  2. 给出一个字符串s, 要在1w个字符串中查找是否存在.
    答: 工程需要的话, 直接哈希是最方便的做法,
    原因:
    1)各语言都提供完整的哈希实现, 与内存管理方案, 开发效率和运行效率都很容易达到满意程度.
    2)1w个字符串本身所需内存也不大, 为其专门实现去重方案得不偿失.
    补充: 如果1w个字符串是一个会多次重用且不断增值,需要维护的字符串库.可构建Trie-Tree(哈希树的一种)常驻内存当中.
  3. 手撕代码为冒泡排序, 要点为加入swapped变量, 让最优排序复杂度达到为O(n).

复试

复试总结

复试可以说是很有质量了. 面试面多了其实会知道面试官有个套路:就是先从一个简单的问题开始试探,从你的表达就可以知道继续问多深了. 但复试几乎连试探都没有, 对着简历开始提问. 知识点都不是网上刷面试题见到的. 答起来很吃力, 大概只有一半的题目是我这一年里有专门准备过的.

全程更像是一场一个多小时的程序员技术交流, 对于我不懂的问题也给出了解答.

另一半都是凭印象或者自己的理解说出来的. 最后给了我offer也是很惊讶, 因为我自认为那一半没有准备过的题目,表达出来的水平确实差了很多.
但从面试官的提问方式也总结了一些面试标准(我认为的,未证实),

  1. 面试官发现你扫盲过的题目,就会问你原因.比如为什么要这样设计,能不能有更好的设计,下一个改进的点在哪;
  2. 如果是你没有准备过,就会看你解决问题的思路. 适当地给你一些提示.看能多接近正确答案. 感觉面试官并不是在等待一个非黑即白的正确答案. 这一点跟一面差别很大.

复试题目

凭印象记录下一些, 补齐答案估计还得小一个月, 每个点展开都是不小的篇幅.

  1. Cpython的GIL 形成原因
  2. 客户端知道了服务端的IP地址,以此建立一个TCP连接的过程.
  3. HTTP/2的主要优势在哪. 是否了解QUIC.
  4. 如果让你设计一个WEB开发框架,要有那些组成部分.
  5. 局域网内有人在用HTTPS服务, 如何窃取他的通信内容.
  6. Innodb中同时有主键和普通索引.给了一个实例表, 解释不同的where条件下,innodb访问索引的具体过程.(如,where后的colname为普通索引, 则innodb会从普通索引的B+Tree上找到目标, 获取目标的主键,然后第二步再去主键的B+Tree上(也就是聚集索引)找到主键的记录)
  7. redis内存管理机制. 如果设置了一个永不过期的key,但是实际上从未使用过,如何从内存中把它淘汰.
  8. linux文件格式,如何记录并访问一个文件
  9. 系统调用write()与read()实现过程与原理
  10. free指令中的buffer区和cache区什么作用,有什么区别
  11. 主从数据库实现读写分离时,由于海量的写操作导致主从不一致,如何解决.

(待更新.)

展开阅读全文

没有更多推荐了,返回首页