笔试
单选题20道,编程题3道
较简单
一面
时长1h,海纳
1. 自我介绍
2. tcp的连接、断开
3. 虚拟内存,操作系统有8k内存,让你运行16k的东西,要怎么办?虚拟内存和物理内存的区别
4. 输入一个www.baidu.com会怎么样?dns解析的详细过程?访问策略是怎样的?DNS防解死?
5. 说一下对面向对象的理解?c++的三大特性?c++比c语言优化了什么
6. 字节对齐?
7. (手撕1)快排思想。时间复杂度?怎么优化,优化的方式
8. 一个满的10L容器,7L、4L空的容器,如何得到5L的水
9. (手撕2)给一个单向链表,先写一个链表,然后函数,参数是头结点,判断链表是否有环
struct ListNode {
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};
bool hasCycle(ListNode *head) {
ListNode* fast = head;
ListNode* slow = head;
while(fast != NULL && fast->next != NULL) {
slow = slow->next;
fast = fast->next->next;
// 快慢指针相遇,说明有环
if (slow == fast) return true;
}
return false;
}
10. 什么时候可以去实习?有咩有投其他的公司?
11. 反问环节
二面
46min,海纳
1. 自我介绍
2. 字符串”abcde"占用多少字节?int几个字节?指针呢?
3. 内存栈和内存堆的区别
出题:给我看一段代码
malloc在内存堆
int *p是在内存栈,由内存栈指向内存堆
4. 进程、线程和堆栈的关系
出题:
int n = 0;
T1, T2
while(10)
n +=1;
cpu单核 并发
运行结果
5. 说一下死锁?如何避免死锁?
6. http在哪一层?https是对称加密还是非对称加密
7. tcp在哪一层?tcp的流量控制和拥塞控制?
8. udp的应用场景?为什么udp可以用于播放视频的场景?
9. 快排的思想(只让说),时间复杂度是多少?为什么是nlog2n,怎么算出来的
11. 给你一篮子鸡蛋,如何以最快的方法找出最大和最小的鸡蛋
12. 二叉搜索树是什么?写一下二叉搜索树的插入函数
TreeNode* insertIntoBST(TreeNode* root, int val) {
if(!root){
root = new TreeNode(val, nullptr, nullptr);
}
else if(val< root->val){
root->left = insertIntoBST(root->left, val);
}
else if(val> root->val){
root->right = insertIntoBST(root->right, val);
}
return root;
}
13. 反问环节
HR面
20min