面试这个东西比较看运气和看部门社招一般没有笔试,如果有也可以参与一下我技术栈是 C++,学了一点 GO算法题大部分都是 LeetCode 题目腾讯一面(挂)1、项目2、tcp为什么可靠3、tcp滑动窗口了解吗4、http了解吗5、IP分片了解吗6、class和struct区别7、虚函数了解吗8、构造函数可以为虚函数吗9、内存对齐了解吗10、进程间通信方式11、如果同一台机器上,不同进程需要大量通信,选哪种方式12、服务器性能调优方式13、DDoS了解吗14、mysql的存储引擎了解过吗15、mysql手撕题目算法滑动窗口的最大值滴滴一面1、有分布式经验吗2、项目3、在项目中的负责位置4、性能调优了解吗5、内存泄漏定位6、内存过高会怎么样7、malloc实现原理8、tcmalloc了解吗9、vector扩容机制,实现原理10、stl源码看过吗11、vector扩容怎么查看扩容了多少12、map底层原理13、hashmap用过吗14、C++智能指针15、右值引用16、协程用过吗 (C++协程用过吗)17、进程线程协程区别18、线程怎么调度的19、线程调度算法20、协程怎么调度的(这里还提了一下go里面的gmp的m获取g的顺序)21、go的协程一直不退出会怎么样(会被系统回收吗)22、go的调试了解吗23、接上一问, 除了CPU内存网络硬盘,还需要看什么指标24、redis的用途25、redis报文了解吗26、消息队列了解吗27、传统的socket用过吗 (答了自定义协议)28、自定义协议怎么去使用 (我猜考的是tcp流式拆包黏包?)29、grpc原理30、http 2.0了解吗算法(多线程)给你两个线程,一个线程打印字母(从A到Z),一个线程打印数组(从1到26),要求交替打印,如:A1B2C3滴滴二面1、说三个项目难点,深挖2、怎么衡量你的开发效率?有点忘了,大概是这个意思 (我说我经手过的项目,基本没有售后问题)3、怎么去写概要设计(简历上有提到负责写概要设计)4、多线程编程了解吗5、读写锁和互斥锁的区别算法(多线程)手撕读写锁滴滴三面1、项目2、整个项目级别的难点(非某个技术难点)3、为什么想换工作4、未来的打算发展方向算法(多线程)两个线程(交替?)打印 1~1000滴滴HR面(挂)1、离职原因2、想去什么样的公司3、最大的收获是什么4、有没有晋升5、绩效怎么样6、最有成就感的事情(这里答的是在项目里发明的一个新功能)7、这个功能会不会有什么问题(接上一问)8、最有挫败感的事情9、长短板是什么10、短板如何去规避拼多多一面(挂)1、用golang手撕代码(我说不会写go,但是go代码都能读懂,可以用C吗)2、那就先聊项目吧,说一个难点,解决办法,有没有其他解法算法手撕反转字符串(但是比剑指offer简单,单词顺序不需要反转)(hello world. 翻转为 olleh .dlrow)拼多多一定要注意时间,因为可能面试官要赶下一场百度一面(挂)1、项目2、libevent 了解多少3、libevent 是多线程的吗4、单线程和多线程的优劣5、vector 和 deque区别6、vector 的 push_back是怎么操作的(提到了在c++11 push_back会默认调用 emplace_back)7、emplace_back 和 push_back 区别8、vector 扩容细节9、vector 是线程安全的吗10、vector 多线程访问会奔溃吗11、vector 扩容的时候多线程访问会奔溃吗12、vector 扩容方法13、vector 缩容方法14、多态了解多少(答了静态多态和动态多态)15、静态多态的细节和过程16、返回值类型不同,函数名和函数参数相同能做到(静态多态)吗17、模板能做到上面 16 里面提到的事情吗18、多态是在运行时做的还是编译时做的(注意区分静态多态和动态多态)19、虚函数和纯虚函数的区别20、上面 19 的实际应用的地方(答了工厂模式)21、虚函数表里面有什么22、虚函数表是怎么使用的23、虚函数表是在编译的哪个阶段生成的24、虚函数在文件中的位置(答了代码段)25、虚基类了解多少26、父类虚函数定义了一个test,子类虚函数也定义了一个test,如果子类的test 的参数跟父类的不一样,能编译成功吗 (这里答了可以,父类虚函数跟子类虚函数是完全不同的新函数)27、接着26,如果想调子类想用父类的虚函数怎么办 (我答的是用 父类::test 去访问)28、构造函数和析构函数可以为虚函数吗29、构造函数定义为虚函数能编译通过吗30、如果去管理内存,防止内存泄漏 (答了智能指针)31、new和malloc 有什么区别32、new的对象可以使用malloc释放吗33、new和malloc出错的话(比如内存不够了),会发生什么34、new的对象用free,malloc的对象使用delete会发生什么35、智能指针了解多少36、share_ptr 循环引用会发生什么37、怎么解决 share_ptr 循环引用 (weak_ptr)38、说下上面37的指针内部细节39、share_ptr是线程安全的吗40、原子操作是怎么做的41、share_ptr 什么时候会把里面的对象释放算法1、寻找两个正序数组的中位数2、字符串的索引対(有一点改动,就是words里面的单词要和主串匹配,要连续且不能有交叉。一种暴力解法是求 words 里面的单词全排列,再和主串匹配子串)阿里一面(挂)1、项目难点说一个2、poll和epoll3、stl常见容器用过哪些4、map有序吗5、unordered_map 和 map 插入搜索复杂度6、map是线程安全的吗7、能使得map线程安全吗8、如何实现无锁map9、python用的多吗10、redis有哪些数据结构11、跳板插入删除复杂度12、跳表为什么不用b+树13、如何通过redis实现一个限流组件,要求限制每秒5个连接 (限流算法)14、redis分布式锁了解多少,setnx15、如何设置一个合理的redis的key的超时时间16、我设置了一个10分钟的Redis超时时间,我希望一释放就抢到锁(setnx锁)17、程序如果挂了,我希望程序挂了立马释放锁(setnx锁)顺丰一面(挂)1、项目2、进程线程区别3、redis基本数据类型4、top k 问题滴滴一面(换了一个部门面)1、项目2、fork会发生什么,子进程会拷贝父进程哪些东西3、了解过 bfork 吗4、程序性能调优了解哪些5、perf用过吗6、rpc了解多少,brpc了解吗7、go的协程了解多少8、协程的优势9、我要实现一个高并发的服务器,多线程,定多少线程数合适10、面对大流量的紧急措施(熔断、降级)11、智能指针了解多少12、unique_ptr 是怎么实现的13、单进程里,一千个线程,每个线程要记录一个商品数量,商品数量一直+1的,问怎么去统计所有的线程里面的商品数量和(线程安全,后面提示是 thread_local 解决)14、原子操作知道怎么实现的吗(上个问题答了原子变量去做)15、图的最短路径算法了解多少16、对以后的职业规划有什么想法算法1、二叉树的层序遍历2、二叉树的层序遍历(Z字形遍历方式)滴滴二面1、项目2、mysql的索引的数据结构3、redis的数据种类 (最好是说出作用)4、zset用过吗5、读多写少的场景,用什么锁6、生产者消费者问题,用什么锁7、20个128G机器,构建1T redis集群,要怎么设计 (1、集群加哨兵 2、比如一个集群节点,带上几个从节点,保证集群运转稳定性 3、hash 一致性,保证 key 的节点均匀散落在集群里 4、如何找到我们的 key 值究竟散落到哪个节点了 —— 设计一个中间服务层专门去处理 redis 的 key 信息,中间节点去读取和写入集群 redis ,业务层不关心自己存的值在哪个节点,需要读写直接与中间层交互 5、如果保证第四点的中间层的稳定性 —— 需要考虑中间层的备份与容灾,比如主备等等,防止单点故障,导致整个业务不可用 )算法1、实现 LRU2、实现线程安全的链表滴滴HR面(OFFER)1、为什么离职2、对于未来的考虑3、目前在流程中的其他公司情况,offer情况4、绩效、晋升情况5、目前薪资、期望薪资6、在公司负责的工作是什么7、在公司最大的贡献8、你的领导对你离职怎么看9、在公司做项目最大的困难10、做项目的时候,有没有跨部门协作,有没有困难11、在公司做项目比较遗憾的事情12、有没有一直在坚持的事情(需要有挑战性)13、通过什么渠道学习的知识14、今年行情很差,为啥会选择今年离职,找工作会不会有焦虑15、工作之余会做什么16、对未来的规划(除了技术方面)17、从小到大,做的最出格的一件事情18、从小到大,对你来说帮助收益最大的人19、其他公司面试的体验和本公司面试的体验是怎么样的乌鸫科技一面(挂)1、项目2、怎么排查内存泄漏3、C++面向对象的优势4、静态多态的实现原理5、动态多态的实现原理6、动态多态的vptr是如何找到对应函数的7、逻辑地址和物理地址了解吗,为什么要使用逻辑地址而不是直接使用物理地址8、如何统计 ipv4 地址的出现频率 (使用 map 直接统计,key 为 ip 地址, value 为出现次数)9、如何计算 8 中的前 top k 频率次数出现的IP地址10、场景题设计,如果 8 中内存不够,需要设计怎样的系统去统计ip出现频率 (1、首先把 ip 地址转换为一个无符号整型,后面统计就使用这个整型 2、内存不够肯定是有一部分要存放在硬盘上的文件里,需要的时候去取用。我们把所有的 ip 地址按照桶去划分,一个桶为一个文件,每个桶大概装 1万个ip地址,比如:0号桶放入 0~9999,1号桶放入10000~19999,以此类推。我们先把ip 地址转换为整数,然后对 10000 取商和余数,商为桶的编号,余数为目标 ip 地址在桶文件的行号。桶文件的格式为,每一行为“ip地址的整数,出现次数”。并且我们每个桶初始化就穷举所有的 ip,频率都默认为 0,每插入一个地址,都能很快找到在桶的位置,并将其出现次数加一。3、举个例子,假设某个 ip 转换整数为 20003,我们对 10000 求商和余数,商为桶的位置,即2号桶,余数为 3 即该 ip 在桶内的位置,我们,读取2号桶文件的第3行数据,并将其出现次数加1。每个桶的行数是从0行开始的)(括号里是我自己的想法,有出现次数和 ip 就可以统计频率了)算法LeetCode 451. 根据字符出现频率排序(变种):字符串按照频率排序,如果频率相同按照出现的先后顺序富途金融一面1、项目2、最擅长的语言3、static关键字的作用4、智能指针了解多少5、tcp和udp的区别和作用6、tcp三次握手的流程7、mysql的主从复制过程,深挖,问到不会为止8、redis的作用9、redis为什么快,深挖,问到不会为止算法1、数组去重,重复的元素保留最后一个输入:[a, b, c, c, b, d, c]输出:[a, b, d, c]3、三数之和富途金融二面(挂)1、为什么想换工作2、未来职业规划3、加密算法了解多少4、非对称加密和对称加密有哪些算法5、写过单元测试吗6、你觉得代码质量应该如何保证SQL (需要注意效率)股票表stock(stk_no(PK), symbol, status(A有效/I无效)),股价表price(date, stk_no(FK), cl_price) PK(date, stk_no),注意有效股票也可能停牌,导致price表中当日数据没有对应的记录。我们需要查询所有{有效}股票在{某日}的价格, 停牌的股票也希望保留,价格可以留NULL比如stock表:1, AAPL, A2, FCBK, I3, FUTU, A4, 0700, A5, SIVB, Aprice表:2023-04-01, 1, $450.232023-04-01, 3, $34.122023-04-01, 4, $50.122023-04-02, 1, $445.232023-04-02, 3, $36.122023-04-02, 4, $48.12查询日期2023-04-01预期结果:AAPL - $450.23FUTU - $34.120700 - $50.12SIVB - NULL算法(动态规划)游戏角色, 有技能列表和魔法值, 求能造成的最大伤害, 例如:输入skill_list: [{mana_cost:10,damage:10}, {mana_cost:12,damage:13}], current_mana: 20, 输出max_damage: 20输入skill_list: [{mana_cost:10,damage:10}, {mana_cost:12,damage:13}], current_mana: 25, 输出max_damage: 26输入skill_list: [{mana_cost:2,damage:5}, {mana_cost:4,damage:11}, {mana_cost:7,damage:20}], current_mana: 13, 输出max_damage: 36