【网易】C++岗-互娱面经( 游戏客户端方向 )

一面:

项目
图形和视觉相关的工作有做过吗;
opencv 用了什么;
项目中图像算法都用了什么;
C++ 基础
static (作用域、存储区)
extern、extern “C”;带extern “C”生成的函数有什么区别呢;(c++编译方式将函数名和参数列表编译成唯一名字;C编译只将函数名进行编译,无法实现重载)
Override、Overload;Override关键字怎么用的;(可以显式的在派生类中声明,哪些成员函数需要被重写,如果没被重写,则编译器会报错。)
虚函数;
各种类型转换的 cast 的区别;dynamic_cast能转不带虚函数的类的吗,dynamic_cast转被强制转换过的指针可以吗;(不能转换不带虚函数的类的指针;出错返回空指针(应该是只会去管指针的类型))
多继承的时候虚函数表指针;
auto关键字;下面代码问:C是什么;(c是拷贝)//*

    vector<int>a;
    vector<int> & b = a;
    auto c = b;

lambda;为什么要有lambda;(能在函数内定义;存在访问权限;可以作为函数参数或返回值,用作回调;)
lambda;变量捕获;(值捕获、引用捕获)
下面这样使用lambda 会有什么问题;(返回栈中已经退出了的内存)

auto cal()
{
    int c;
    auto fun  = [&](){
        return c;
    };
    return fun;
}
void  main()
{
    auto x = cal();
    x();
}

shared_ptr 用 make_shared 的优势;(不用new、提高性能、异常安全)
shared_ptr 中为啥用指针;(因为要多个对象指向同一个引用计数)
OS
进程线程;(线程共有、线程私有)
fork 的父子进程的相同的地方、不同的地方;(文件、共享内存呢)
POSIX线程了解吗;
有哪些锁;
无锁数据结构知道吗
为什么要有cache;//*
JAVA 为啥比C++慢(垃圾回收、在jvm上跑);还有吗?(java理解为解释性语言,需要jvm解析后调用os提供的系统调用,相当于倒了一手)
类中成员分开new,一起new 有区别吗;(局部性原理?)
面向对象的设计模式,算不算是cache友好;
计网
socket API ;
listen 会阻塞吗;(不会)
accept 会阻塞吗 ;(会)
手撕
二叉树中找最大的二叉搜索树;
后续遍历的树形dp;
递归回溯做就行;最好加上记忆化
二分查找找lower bound;
边界处理一下就好

二面:

项目扩展基础
基础顺着项目问了一下而已

tcp、udp;
滑动窗口实现机制;
udp比较tcp 的好处;
udp怎么保证数据准确性;(应用层自己保证)
手撕
设计一个timermanager;用于实现对多个定时器的管理;
基于之前的tcp讲到的,就说发送报文会开启定时器;做一个定时器维护的接口;
给了三个接口;
add:添加一个定时任务;包括要定时的时间、回调函数;要求返回一个id;
delete :删除对应id 的定时器;
update :外部会去调用的函数,输入一个时间戳;(用这个来更新内部时间戳;
我用了树结构存储id;在update 的时候O(n)的暴力搜;复杂度太高了;
问题抽象为:判断矩形相撞
我用了四个顶点在另外一个矩形内来判断;
被指出矩形相交的问题;
问题抽象为:字符串中有多少个对应子序列;
我说应该用回溯或者动规来做,但是我暂时只想到了用回溯;
回溯写了差不多,面试官时间到了结束吧。。。。。。。。。。
总结
整体的压力很大,刚好我还发烧了;整个面试过程人都麻了;
问的题都没完整撕出来;然后面试官觉得我写的太慢了,导致压力更大。。然后死循环

发表评论

后才能评论