21届春招实习生面经回馈

笔者985小硕,今年2月开始准备春招,主要技术栈是C++和python。在今天完成了字节和腾讯的hr面试,特来回馈牛客网。
首先是刷题,半年前在学校的时候就每天写一两道练手,目前leetcode大概550道题吧。

4月3号更新:腾讯和字节今天都给offer了,可惜考虑到地理位置和时间,还是选择了字节。春招算是落下帷幕了,不过学习还是要继续,永不停歇的奋斗!

3月份陆续投递了好几家公司,总结如下:
  • 02/08 开始在牛客网上看面试经验。梳理C++框架知识,回顾项目经验以及总结。
  • 02/26 C++知识梳理基本完成。开始对不熟悉的部分专门学习。
  • 03/02 陆续开始面试,发现自己的不足,针对性学习。
03/03 字节跳动音视频自动化测试面试。
  • C++多态的实现,动态、静态,写一段代码表示。
  • 虚函数表,构造函数能不能声明为virtual(不能,因为构造都没完成,怎么多态。)
  • 写一份从线程池中malloc内存的函数定义。
  • static关键字。
  • C++程序编译器处理,预处理、编译、汇编、链接。
  • 程序加载后在内存里数据是怎么分布的,
    • 栈区、堆区、BSS、代码段、 数据段、映射区。
    • 代码段里有只读字符串常量和代码程序。
    • BSS里存了未初始化或者初始化为0的全局变量和静态变量。
    • 数据段里存了初始化的全局变量和静态变量。
    • 堆区存的都是动态申请的内存,栈区存储局部变量,函数返回地址、参数、返回值等。
  • 线程、进程,区别联系。
  • 对于加锁有什么了解,死锁讲个例子,能不能不加锁(atomic原子操作)。
    • 互斥锁、条件变量、自旋锁、读写锁。
    • 死锁产生的情况,互斥操作、占有资源的情况下又向其他资源发出请求、不可剥夺、环路等待。
    • 解决死锁的方法,资源有序分配(资源加序号)、资源可剥夺(允许进程剥夺其他进程的资源)、资源一次性分配(线程所需的资源一次全部给它,或者逐步释放)。
  • 智能指针shared_ptr,线程安全性。
  • vector和list的区别,
  • set的应用场景,
  • git的一些基本操作。
  • 然后笔试题,合并两个有序链表。我写的循环实现,也可以用递归(写完面试官提了一下递归的问题)。
  • 最后问了问最近学什么,我说准备学学TCP、ip通信。
03/03 腾讯windows客户端面试
  • 项目的完成是否是自己独立的,怎么做的
  • 消息机制,sendMessage(等待)和PostMessage(立即返回)
  • 线程或者进程通信方式,就讲了socket、管道和共享内存。
  • 数组和链表的区别。
  • 类对象实例的内存中包含了什么,虚函数表的实现原理。
  • 递归查看文件夹下的所有文件。要求循环的思路,那就用栈。
  • 函数调用递归会发生什么,栈溢出。VS中的栈溢出检测工具知道吗。
  • 设计模式。
    • 单例模式,一个实例,加锁双重判断或者直接返回this保证多线程安全。
    • 工厂模式,主要解决接口问题。只提供创建基类对象的接口,由传入的参数来决定实例化哪一个子类,返回的是基类。
    • 观察者模式,定义依赖关系,当某一对象发生改变时,所有依赖于这个对象的实例都收到通知(回调函数)。
    • 装饰器模式,对对象增加新的功能,又不互相影响依赖。可以并行发展。继承的一种替代。相当于在原函数的基础上再加了一层,注意参数为函数指针(可以声明为模板以适应不同类型函数以及类成员函数)。
  • 函数调用中寄存器的变化情况。
  • 动态库和静态库的区别。
  • 如果在动态库中申请了一块空间,返回了指针,那么调用方可不可以delete这块空间。没答上来
    • 如果VS编译选项都是MD或者MT,那么内存申请和销毁API调用的是同一个CRT dll里的。
    • 如果存在不一致,那么有可能释放出现问题。
    • 另外也有人从堆的角度去考虑。堆不一样,释放的方法也不一样。
    • 解决方法是dll中导出释放资源的函数,统一new和delete所用的堆,统一编译选项,都使用 MVSCRT.dll。
  • TCP和UDP的区别。
  • 平常是如何进行调试的,思路或者说方法论是怎么样的,有没有用过一些调试工具。
  • 调试的时候对于断点,知道有哪些断点类型吗。
  • WinDbg的使用。
  • 平常有没有用过性能优化的一些工具。例如程序卡顿时如何优化。
03/04 字节跳动二面
  • 项目
  • 设计的时候是怎么想的。
  • UML图。
  • 给一段类的实现代码,说一下类对象的内存情况。
  • 给一段代码,分析问题。是关于类的构造、析构顺序以及构造,析构函数内写虚函数的问题。
  • 线程、进程中资源释放的问题。
  • 资源new之后会不会泄漏。
  • 为什么线程崩溃会导致其他线程也崩溃。主要是同一地址空间,当非法访问时会出问题。
  • android开发里的JNI。
  • 最后问了一下设计模式,写了一个单例模式。
03/13 字节跳动,三面,凉了
  • 学习的方式、思路。
  • 遇到的困难,怎么解决的。
  • 多线程模型中的生产者消费者模型。没写好。
  • 后面又让写了一个链表翻转,这个没什么问题。
  • 第二天起来看到面试结束了,然后系统提示转岗,应该是凉了。
03/23 腾讯企业微信,一面,过了
  • 上来先写三个笔试题。还好都不算难,看你的思考。
  • 翻转链表(写完问了一下递归写法可能出的问题)。
  • 前k小(快速选择,递归终止条件没写好)。
  • 大数相加(字符串相加,考虑负数,问了一下循环写的对不对,我觉得没问题,测试也没问题)。
  • 一个小时写完,主要是最后一个写了挺久的。
  • 接下来就自我介绍,问了下android开发,我说经验不多。
  • 两个判断题,第一个是const。注意int const == const int。
  • 第二个是虚函数,注意虚函数在纯变量赋值中不会用到(我自己测试的结果)。
  • 设计模式,写了单例,问为什么要两层判断,第一层删掉可以吗。我觉得第一层删掉会每次调用都加锁,不好。
  • 进程通信。android通信的一些特殊之处,没了解过。
  • TCP、UDP。
  • 栈、队列的应用场景。
  • 最后一个智力题?握手问题,两人之间有且仅有一次握手,总共握了55次,问有多少人。组合问题,Cn2,11个人。
03/24 腾讯企业微信,二面
  • 先写了个排序算法,随便选,我写的堆排。
  • 然后问了问TCP、socket函数在TCP三次握手中的体现。
  • 因为面试官看我python写得多,问我C++怎么样,问了问目前写的东西。
03/25 字节跳动AI Lab后端,一、二面
  • 一面写了个最长上升序列,dp。
  • 问了一下机器学习领域的算法熟不熟悉,我说不大熟悉。
  • 让我举了些例子,我就说特征提取、crf、grabcut、傅里叶等等。
  • 然后问我crf,我大致讲了一下,不是很熟。
  • 后面的不记得了,主要是问项目和算法,基础问的少。

  • 二面面试官差不多,也是问项目和算法。
  • 然后问我在实验室研究搞得怎么样,强项在哪,我说工程能力可以。
  • 他就让我写了俩算法。
  • 第一个是求第k大。
  • 第二个是字符串编辑距离。想了好一会,勉强写出一个还行的,不过也不能100%clear。看了一下leetcode,是困难等级的,解法其实不难,就是难想。
03/27 腾讯企业微信三面
  • 拷贝构造函数调用的地方,函数参数传值,函数返回赋值。
  • const成员函数,不能修改类的值。只能读取,不能写。另外const class对象可以调用const函数。
  • 问了一个前端和客户端的区别。我说客户端里其实也有前端的部分,例如ui设计、用户交互等。不过一般意义上的前端是指浏览器相关的,例如html、css、js那一块的。
  • 客户端里倾向于哪里,我说是PC和安卓有经验。
  • 问了两个算法题,第一个是说按照一定比例输出序号,没想出来,现在我觉得应该是蓄水池抽样的思想。
  • 因为第一个没回答好,就出了另一个,在100w*100w的黑白图像。黑色的点围成了一条不规则曲线,你知道这些点的坐标。问如何判断一个点是否在曲线内。
  • 提示是从BFS的角度去想,做状态压缩,没想到。。。
  • 然后就让写三道题看看。
  • 第一题是字符串比较,大小写无关。无关就全部转换成大小写即可。
  • 第二题是求旋转数组的最小值,采用二分的思想。
  • 第三题是求三个结点的最小公共祖先。采用int的二进制位存储状态,如果有一个结点处int值为7说明三个都有了,那么就是它了。
03/30 字节跳动AI Lab后端 HR面 已offer
  • 问了面试感受
  • 通过几轮面试,觉得以后自己会做什么
  • 什么时候能实习。
04/02 腾讯企业微信 HR面
  • 本科和硕士的专业
  • 爱好
  • 介绍了一下企业微信
  • 投了哪里,有没有其他公司的offer
总结
主要就是面试了字节和腾讯吧,各自捞我两次。
阿里和华为也试过,不过都没什么消息。蚂蚁面试了两轮但是笔试没写好就算了,没去继续面试了。
面完感觉字节面试效率超高,hr小姐姐也很可爱😍
腾讯中规中矩,也还不错,就三面两道题没做出来感觉很慌,不过还是给了hr面机会。
最后祝贺自己上岸,撒花。

#2021届暑期实习##字节跳动##实习##C++工程师##面经#
全部评论
膜膜大佬
点赞 回复 分享
发布于 2020-04-02 17:14
&leetcode500+ tql
点赞 回复 分享
发布于 2020-04-06 15:32
请问贴主,企业微信3面中 算法第一个是说按照一定比例输出序号。 能详细一点嘛?
点赞 回复 分享
发布于 2020-04-15 21:42

相关推荐

8 61 评论
分享
牛客网
牛客企业服务