微信面经,wxg,后台(已意向,感谢)
一面😀 | 08月25日 |
二面😄 | 09月03日 |
面委一面😆 | 09月10日 |
面委二面🤔 | 09月10日 |
录用评估😉 | 09月10日 |
hr面😏 | 09月22日 |
云证😊 | 09月23日 |
oc+意向🤗 | 09月24日 |
一面(2h)
- 算法题(5道)
其他忘记了,基本上都是八股,问的比较细。
二面(1h40min)
1. 如何设计一个hash表,已解决冲突特别多,数据量特别大的情况。在rehash时,采用渐进式rehash的方法,即从新开辟一个大内存区域,存放新的哈希桶,将旧桶中的值缓慢移至新桶。
- get方法:先查询旧表,若查询失败,再查询新表(o(1)),肯定在!
- set方法:直接修改新表。若还未移动旧表数据,则直接设置新表,待旧表中该数据移动时,查询到新表中包含该数据,则直接放弃。
三次握手的功能:
- 收发双方确切准备好
- 协商初始序列号以及确定发送接受窗口大小
二次握手情况下:(缺少客户端发送的第三次ACK,即服务端发送ACK,就认为连接已经建立)
红黑树和AVL的区别:
插入均旋转两次,即O(1),
对于删除操作,最坏情况下,需要维护从被删除节点到根节点的所有节点平衡性,时间复杂度为O(logn)而红黑树只需要三次旋转(非严格平衡性,)
AVL搜索稳定性(因为严格平衡)要高于红黑树。
应用场景:
- sizeof为操作符,可以类型,函数作为参数;strlen为函数,只能以char * 作为参数,且必须包含'\0'
- sizeof与strlen的操作结果均为size_t
- sizeof:分配空间的实际字节数
- strlen: 空间中字符的数量
- sizeof编译器运行,strlen运行期执行
- sizeof不能计算动态空间的大小
char* s = "0123456789"; sizeof(s); //结果 4 ===》s是指向字符串常量的字符指针 sizeof(*s); //结果 1 ===》*s是第一个字符 strlen(s); //结果 10 ===》有10个字符,strlen是个函数内部实现是用一个循环计算到\0为止之前 strlen(*s); //结果 10 ===》错误 char s[] = "0123456789"; sizeof(s); //结果 11 ===》s是数组,计算到\0位置,因此是10+1 strlen(s); //结果 10 ===》有10个字符,strlen是个函数内部实现是用一个循环计算到\0为止之前 sizeof(*s); //结果 1 ===》*s是第一个字符
扩展:char* s 与char s[]区别
【区别所在】
char *s1 的s1,而指针是指向一块内存区域,它指向的内存区域的大小可以随时改变,而且当指针指向常量字符串时,它的内容是不可以被修改的,否则在运行时会报错。
char s2[]的s2 是数组对应着一块内存区域,其地址和容量在生命期里不会改变,只有数组的内容可以改变
【内存模型】
+-----+ +---+---+---+---+---+---+
s1: | *======> | h | e | l | l | o |\0 |
+-----+ +---+---+---+---+---+---+
+---+---+---+---+---+---+
s2: | h | e | l | l | o |\0 |
+---+---+---+---+---+---+
二面过了一段时间,Hr打电话告知需要安排2次面委面,并且将两次面委安排在同一天进行。
三面(1h50min)——面委1
1. 算法题(5道)- 链表相加
- K个链表翻转
- 数组右移
- 还有2道忘记了
四面(50min)——面委2
- 项目,问的很细
- 场景题:
- 假设有一块很大的可用内存区域,如何去进行管理
- 如何实现一个全文扫描
其他忘记了。
两次面委面基本上不面八股,问的项目比较多,一定要仔细了解自己所做项目的细节,不然很容易被面委大佬们问倒。
HR面(30min)
面了大概半小时,面试体验不错
- 本科或研究生期间有无记忆深刻的一两件事,为什么
- 如何学习的?
- 除了学习,还有什么爱好
- 为什么选择腾讯,为什么选择微信?
- 其他忘记了,基本上标准hr面试题,准备准备就行了。
#腾讯##面经#