富途 后端c++一面
总体时间1h多几分钟
面试官人感觉挺不错的,全程语气都挺温和,不会为难
手撕 消除相邻字符串
简单问了点项目
问动态库
怎么找到动态库
找不到动态库怎么办
makefile
两个动态库有同样的函数,调用的是哪一个动态库的(感觉是编译链接的顺序,但是怕不懂装懂还是说了不知道)
问HTTP和TCP的区别
那HTTP发送的是什么
HTTP报文有什么内容(忘了)
问哈希表(不太了解)
哈希表怎么实现的
为什么用哈希表不用链表和数组
哈希表快还是数组快,为什么
应该还有一些其他的,想不起来了
问如果让你转语言,比如c++换到go,该怎么学习
问有什么比较倾向的技术发展方向
问项目里有遇到什么困难吗,怎么解决的
最后反问
场景一:
class A{
A() {func();}
virtual func();
virtual test(){
func();
}
};
class B: public A{
B() {
func();
}
virtual func();
};
main() {
B b;
b.test();
A* a = &b;
a->test();
}
问b对象调用的是父类的func还是子类的func
问b.test调用的是父类的func还是子类的func
问a->test调用的是父类的func还是子类的func
场景二:
如A类多继承B类、C类,实例化A对象,赋值给B、C指针,A、B、C地址数值上有什么区别?
class B {
virtual void funcB(){};
};
class C {
virtual void funcC(){};
}
class A : public B, public C {
virtual void funcB(){};
virtual void funcC(){};
};
void func() {
A* a = new A();
B* b = a;
C* c = a;
}
A、B、C地址数值上有什么区别?
不知道,然后面试官解释了一下,因为A先继承B再C,所以a,b的地址是一样的,c的地址在b那段空间之后
场景三:
事务隔离级别
SELECT a FROM tbl1 WHERE id = 1; a = 1000
事务1
BEGIN;
UPDATE tbl1 SET a = a + 200 WHERE id = 1;
COMMIT;
事务2
BEGIN;
SELECT a FROM tbl1 WHERE id = 1;
......
SELECT a FROM tbl1 WHERE id = 1;
COMMIT;
采用不同隔离级别有什么区别?
四个隔离级别下的区别说一下,这个还好