腾讯wxg基架面经
字节三面面得一塌糊涂😭
只能把希望寄托在本就基本上不可能的腾讯wxg了
明天二面, 写下面经攒攒人品
一面
先上来四道题
分割链表
验证二叉搜索树
给定一个数字串,使用","将数字串拆分为不大于1112的多个的数字,输出所有可能性
使用数组,实现一个的循环队列(先进先出),能支持无锁并发操作(一个push线程、多个pop线程)。请实现push和pop方法。可以使用cas 原子操作函数
四十分钟写完
但是第四题写的有问题
读写指针相同时, 如何判断队列空还是满, 我用了个isFull flag来标记, 但是这样做不到原子操作, 面试官提示了很久才想起来以前学数据结构时候里面的循环队列,
底层数组多开一位来实现队列空和满的区分
(字节三面也是栽在了以前学的数据结构上的东西...清晰地记着自己看到过, 但是想不起来了, 唉)
然后才进入面试环节
自我介绍, + 问了下基本情况
问了下项目, 项目是用go实现的自定义epoll IO库, 没有用go net那种封装过的epoll
原理对于C++面试官应该是小儿科了, 基本一直在解释为什么要做这个玩意儿, 用处在哪里
问了下LT与ET
ET模式下为什么要用非阻塞IO
这边主要是C++, 就问了几个浅显的C++问题
内存的堆和栈分配有什么区别
我提到了栈内存编译时固定, 就又问我, 那开发的时候需要注意什么
没做过cpp开发, 只能乱说, 是不是担心缓冲区溢出攻击(想起csapp上的那个实验)
面试官乐了, 摇头
剩下就是闲聊吹水环节
明天二面, 希望别拉胯吧
二面面了两个多小时, 让我切身体会了wxg的恐怖, 太恐怖了, ***碎了
不想写面经了, 大概列一下吧
上来先做了三道算法题, 然后:
你是写go的, 那就: 如果是你, 如何实现一个协程, 协程的结构体应该是怎么样的
场景题,如何排序大量键值对, 大概就是讲一下redis的跳表实现吧; 如何快速找到第n名
如果是你, 如何实现非阻塞地连接服务器
如果是你, 如何实现类似protobuf的序列化
如果是你, 怎么实现大量kv键值对在磁盘内的存储, 可以频繁地删除增加键值对。答mysql的实现还不行
redis的简单动态字符串如何实现的
C字符串没有len标记, free字符串的时候怎么知道free多少呢?
答delimeter说不对, 你不知道的话 ,那就:
如果是你, 如何实现malloc和free呢?
我说加上len头也不行, 说用户可能修改到len,free就会出现内存泄漏
以及其他八股:
epoll相关
https相关
零拷贝相关
裂开
干碎了, 太难了, 太难了
还面了两个多小时, 太恐怖了, 留下阴影了
3-16更新
下午三面
又又又又又又又又又又又又又又又又又又又又又要把美团鸽了...