Problems in Interview

Data Struct

  1. 堆和栈的区别

    栈静态内存分配,堆动态内存分配,都存储于 RAM 中;

    栈中的变量直接存储于内存中,所以访问很快,它的内存分配是在程序编译的时候处理的;堆中的变量在程序运行时分配内存,访问这个内存会稍慢一些,但是堆的大小限制只取决于虚拟内存的大小。

    栈总是遵循先进后出的原则,最近保存的元素总可以最先被释放,这使得从栈中释放一个元素或者块非常容易;堆没有先进先出的原则,可以在任何时候释放任何元素或者块,每个堆中的元素之间都没有依赖关系,可以在任何时候随机访问。

    在知道元素的个数这种情况下,分配栈;相反分配堆。

  2. 手写链表

    注意手写链表的时候两个要点:

    • 自定义一个 Node Class
    • 链表的遍历使用一个 cur 指针,初试令其指向 head 头结点
  3. 如何判断链表两个链表相交?参考博客解释

    1. 快慢指针判断链表有环
    2. 同时遍历两个链表,如果到链表结束,则将指针指向另一个链表,遍历直到两个移动的指针相等

    扩展问题:如何找出一个有环链表中的环的起始节点?

    使用快慢指针,如果有环,快慢指针相遇的位置距离环的位置等于头节点到环的位置。

  4. 已知一个栈的入栈序列,判断另一个序列是否为合法的出栈序列

  5. 什么是红黑树?

OS

  1. 熟悉哪些 Linux 指令

Networks

  1. 报文和帧的区别

  2. ipv4 和 ipv6 的区别

  3. TCP/IP 模型

IQ Test

  1. 找出重量和其他 99 个不同的 1 个乒乓球

  2. 1000 只药水,1瓶是毒药,服用后一小时毒发,毒药可以无限稀释,一小时内用几只小白鼠能找到解药?

    知乎回答 log1000 = 10

  3. HTTP 和 HTTPS 的区别

    HTTP + 加密 + 认证 + 完整性保护 = HTTPS

后台问题

  1. 进程和线程是什么,进程和线程的区别

  2. I/O 模型是什么

  3. 解释一下多进程

    fork 方式

  4. 进程间通信?

    • 信号量

    • 共享内存

    • 管道

DataBase

  1. MongoDB 的 _id 如何保持其唯一性?

    _id 类型为 ObjectId, 是一个 12 字节的 BSON 类型字符串,按照字节顺序,依次代表:

    4字节:UNIX 时间戳 3字节:表示运行 MongoDB 的机器 2字节:表示生成此 _id 的进程 3字节:由一个随机开始的计数器生成的值

  2. MongoDB 分页查询

Last Updated: 4/1/2019, 2:47:20 PM