2022年底 互联网日常实习面经

简单记录一下近期互联网实习面试情况


小红书 媒体中台

三轮面试

一面(已过)

关于C++

  • 多态如何实现?底层原理?(我答的虚函数+子类重写,底层是虚函数表、虚函数指针,但是语无伦次)

关于OS

  • 进程线程区别?
  • 线程与创建它的进程共享了哪些部分?

关于网络

  • TCP三次握手,四次挥手
  • 为什么四次挥手后客户端需要TIME_WAIT一段时间?

手撕算法

  • 二叉树后序遍历

二面(已过)

关于项目

  • 队列式缓冲区pop操作为什么要加锁?是不是没有必要加锁?
  • 堆区和栈区的区别?
  • 为什么要编码成char数组,为什么不直接转成string?(考虑到效率问题)
  • 为什么要设定五种等级?动态修改日志等级的作用是什么?当前输出的日志等级是什么时候确定的?

关于C++

  • std::map和std::unordered_map的底层原理?区别是什么?遍历操作复杂度是什么样的?各适用于什么样的数据情况?

  • std::vector扩容原理?如果我想让扩容的容量减小,怎么操作?

  • std::deque的底层原理?

  • C++中一个类默认有多少个构造函数?

  • 类中一个函数后加const修饰是什么作用?

  • std::forward()起到什么作用?什么应用场景?

关于网络

问到这里发现我全都会,直接说问一个比较难的计算机网络问题:

  • A端发送一个UDP报文给B端,但此时B端没有bind端口,那么这时A端会收到什么样的响应报文?(太细节了,他说的答案我都没听说过。。。)

手撕算法


三面

HR面,问一些关于自己和公司的问题。。。


慧国科技 软件开发

仅一轮面试,问的全是语言基础,无算法题。

关于项目

  • 锁是什么锁?如何实现的?为什么自己实现自旋锁,有没有跟其他锁对比过?
  • 多线程操作在哪里体现?如何保证线程安全?
  • 遇到bug如何调试?gdb如何调试多线程?

关于基础

  • 指针和引用的区别
  • 全局变量和局部变量能否重名?局部变量作用域?
  • 预编译阶段聊不了解?宏定义是什么?
  • 静态链接库、动态链接库,具体操作?

Bilibili 测试开发

一面(已过)

关于项目

  • 做项目时遇到问题怎么解决的?(gdb调试)
  • 日志库有没有做可靠性的检查?(没有)

关于基础

  • HTTPS的加密流程?(TLS四次握手过程 等等)

手撕算法

  • 给n个字符串,输出最长的2个。

二面(我直接推掉了。。对不起)

Bilibili C端开发

一面

关于项目

  • 参考过什么开源代码?

  • 自旋锁?为什么不用互斥锁?

  • 循环缓冲区?

关于基础

  • C++11/14/17新特性列举两个?
  • shared_ptr的问题,循环引用

其他

  • 实现一个类的默认析构拷贝等构造函数,里面有个char*数组

寒武纪 高性能计算C++开发

总结一下,一开始狠狠夸我,然后狠狠爆杀我。首先,面试官夸我简历很优秀,并且觉得我在某些方面比他强。然后他说觉得我各方面水平都可以,不问基础的问题了,直接上来就问真实开发场景。。。

关于基础

  • 堆的构建原理?
  • Linux 的I/O多路复用技术有哪些?具体原理?

场景题

场景1. 真是项目中可能需要手写很多测试用例,例如我现在只能生成0~1之间的随机浮点数,那么如何根据这个生成一个具有高斯分布的测试用例?

场景2. 现在开发了很多算子,要做正确性测试,每次测试需要计算很久,很多算子都做这么多测试,跑下来可能要十几天时间才能跑完。现在,可能遇到了内部架构需要调整,但是算子不变,每次做完内部架构的调整之后,都需要重新跑一遍测试结果,这又会花费很多时间,而且我可能需要多次调整内部架构,请问如何优化这个过程?


商汤科技 算法开发

一面

全是关于深度学习和算法的。。。

  • batch normalization是什么?有什么作用?(答了个大概,真忘了。。。)
  • 问论文项目。。(介绍了一下我的论文)
  • Python如果跑得特别慢,如何去优化效率?(for循环改内置函数、jit即时编译、用numpy scipy库等)

手撕算法

一个长度为n的字符串,输出其最长回文子串的长度。

原题:5. 最长回文子串 - 力扣(LeetCode)(这题是输出string,但是我考的时候是输出长度)

我考场写的代码,记忆化搜索:

class Solution {
public:
    string longestPalindrome(string s) {
        string ans = "";
        int n = s.size();
        int maxh = 1;
        vector f(n, vector(n, -1));
        auto dfs = [&](auto &&self, int i, int j) -> int{
            if(f[i][j] != -1) return f[i][j];
            if(i==j) return f[i][j] = 1;
            if(i==j-1){
                if(s[i] == s[j]){
                    if(2 > maxh){
                        maxh = 2;
                    }
                    return f[i][j] = 1;
                }else{
                    return f[i][j] = 0;
                }
            }
            if(s[i] == s[j] && self(self, i+1, j-1)){
                if(j-i+1 > maxh){
                    maxh = j-i+1;
                }
                return f[i][j] = 1;
            }else{
                self(self, i+1, j);
                self(self, i, j-1);
                return f[i][j] = 0;
            }
        };
        dfs(dfs, 0, n-1);
        return maxh;
    }
};
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
我可以为你提供一些关于 Unity 实习面经的信息。以下是一些常见的问题和主题,可能会在 Unity 实习面试中提及: 1. Unity 基础知识:面试官可能会问你关于 Unity 的基础知识,比如游戏对象、组件、场景、动画等的概念。 2. C# 编程:Unity 使用 C# 作为主要编程语言,所以你可能会被问到关于 C# 的基本语法、面向对象编程等方面的问题。 3. Unity API 和功能:面试官可能会问到你对 Unity API 的了解程度,以及你是否熟悉常用的 Unity 功能,比如碰撞检测、物理模拟、粒子系统等。 4. 游戏开发经验:如果你有相关的游戏开发经验,面试官可能会询问你参与过的项目、你在项目中扮演的角色、遇到的挑战以及如何解决问题等。 5. 问题解决能力:面试官可能会给你一些实际的问题场景,并评估你解决问题的能力和思维过程。这可能涉及到编程逻辑、算法设计或解决技术性问题的能力。 6. 项目展示:如果你有自己的作品或项目,面试官可能会要求你展示项目的代码、设计思路和实现过程。 7. 其他技术:除了 Unity 和 C#,你可能会被问到其他相关的技术,比如游戏设计原则、图形学基础、网络编程等。 这些只是一些常见的问题和主题,具体的面试内容可能因公司和职位要求而有所不同。提前准备并熟悉这些问题,可以帮助你在面试中更好地展示自己的能力和经验。祝你面试顺利!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值