注册一亩三分地论坛,查看更多干货!
您需要 登录 才可以下载或查看附件。没有帐号?注册账号
x
本帖最后由 lyvlsi 于 2020-7-8 15:39 编辑
.1point3acres
AlphaGrep是印度的大型HFT公司,面的C++ Developer上海岗位。6月份面的,每次面完后一小时内就出结果并安排下一个面试
一面(新加坡office华人)
1)如果析构函数能否抛出异常,为什么(答:不能,如果一定要的话可以用try catch将异常封装在析构函数内部,决不能让它抛出函数之外)
2)Vector push_back 时的调用类的拷贝构造函数的特点,如果抛出异常如何处理
4)std::move的作用以及和forward的区别,内存对齐,如何初始化const(面试官提示用initializer_list),C++ lambda函数的好处
5)atomic如何做到互斥访问(锁总线Bus Lock或者锁缓存Cacheline Lock)
6)virtual class怎么用,virtual function呢
编程题就写了一个标准的堆排序
二面(上海office senior dev)
讨论简历
知不知道C++奇异递归模板模式CRTP,如何使用-baidu 1point3acres
std::move的作用(我回答可以转为右值避免拷贝构造,面试官却提示可以用在判断函数重载上)
mutex如何使用, atomic是否带锁,其中的is_lock_free()函数作用
静态库.a和动态库.so的区别. check 1point3acres for more.
std::async如何绑定到某个cpu core
三面(一个孟买IIT的烙印,codepair面试)
Solarflare网卡(HFT必用)的三种模式,Onload、TCPDirect、ef_vi速度差异,onload是否用到kernel bypass.
Bid/ask 5挡行情和1档行情如何merge(按照价格截取).
编程题:
存储市场上非常多的(ID, price),要按照price有序存储,ID唯一,多个price可以相同
针对每天的股市,实现insert(int id, double price), print(), delete(int id),不断地执行这三个操作,要求效率最高print()需要按价格顺序打印所有信息。
delete(id)需要是O(1)复杂度
我用的map<double, list<int>>(存price, id)和unordered_map<int, list<int>::iterator>(存每个id的位置)后来想想也可以用multimap<double, int>和unordered_map<int, multimap<double, int>::iterator>
应该还有更高效的数据结构处理这种情形。
最后挂在这个烙印手上了,行情merge和KV存储没做好(⊙︿⊙). ----
恳求加米
|