小红书C++ 一面(技术面、50min)
小红书C++ 一面(技术面、50min)
面试官问
自我介绍
你简历上的项目比较多样化,为什么会去做这些项目呢
你觉得你以后会想去做什么呢
挑一个你觉得难度最大的项目,然后介绍一下,balabala
项目问题balabala
说一说项目中遇到的一些困难吗
你写这个项目的主要原因是什么
你刚才提到了
CDN
,那么CDN
为什么能加速,其原理是什么呢C++
的编译从源码到可执行文件中间的步骤有哪些呢?你了解G++在编译的时候的
o(1)
、O(2)
、O(3)
这些优化有什么区别吗有什么方法可以操作操作系统的堆的空间呢
malloc
、free
和new
、delete
有什么区别吗malloc
的时候操作系统会发生什么事情呢malloc
是怎么做到的呢,简单说一下原理呢你说一下进程跟线程的异同
进程切换的的过程会发生什么事情呢,比如说一个核在一个时间段只能跑一个进程,那么进程在切换的时候会发生什么呢
进程间通讯的方法有哪些呢
共享内存是怎么做的呢,可以讲一下他的原理吗
除了
mutex
可以实现进程间同步,还有什么可以实现进程间同步呢C++11的标准多了哪些东西呢
- 扔给我一道编程题:
思路:我们不需要关心染色了那些行哪些列,我们只需要关心染色的行数和列数即可,然后就是两个组合数的乘积
#include <bits/stdc++.h> using namespace std; #define ll long long ll C(int n,int m) { int ans = 1; for(int i = 1;i <= m; ++i) { ans *= (n-i+1); ans /= i; } return ans; } int main() { ll n,k; cin>>n>>k; ll ans = 0; for(int i = 0;i <= n; ++i) { for(int j = 0;j <= n; ++j) { ll cnt = i * n + j * n - i * j; if(cnt == k) { ll line = C(n,i); ll row = C(n,j); ans += line * row; } } } cout<<ans<<endl; return 0; }
问面试官
- 我想问一下我投的这个智能分发的这个岗位大概是做什么的呢,偏向算法还是说偏向应用呢?
答:(简单回答)两方面都有涉猎