小红书C++ 一面(技术面、50min)

小红书C++ 一面(技术面、50min)

面试官问

  • 自我介绍

  • 你简历上的项目比较多样化,为什么会去做这些项目呢

  • 你觉得你以后会想去做什么呢

  • 挑一个你觉得难度最大的项目,然后介绍一下,balabala

  • 项目问题balabala

  • 说一说项目中遇到的一些困难吗

  • 你写这个项目的主要原因是什么

  • 你刚才提到了CDN,那么CDN为什么能加速,其原理是什么呢

  • C++的编译从源码到可执行文件中间的步骤有哪些呢?

  • 你了解G++在编译的时候的o(1)O(2)O(3)这些优化有什么区别吗

  • 有什么方法可以操作操作系统的堆的空间呢

  • mallocfreenewdelete有什么区别吗

  • 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;
}

问面试官

  • 我想问一下我投的这个智能分发的这个岗位大概是做什么的呢,偏向算法还是说偏向应用呢?
    答:(简单回答)两方面都有涉猎

猜你喜欢

转载自blog.csdn.net/m0_46201544/article/details/127453220