招银网络科技技术一面
C++:
1.什么是多态?如何实现多态 (同一接口不同行为,静态(重载,通过重载,模板等),动态(重写,通过类维护虚表,对象持有虚指针指向虚表)
2.C++智能指针(unique_ptr,shared_ptr,weak_ptr,讲讲特性)
3.为什么需要虚析构函数(基类指针指向派生类对象的时候,析构时能正确调用派生类的构造函数)
4.map,set,multi_map,multi_set的底层实现(均为红黑树,set只存值,map存键值对,自动按照键/值排序,muti允许键重复)
计算机网络(网络编程)
TCP三次握手流程,对应的socketAPI
(// 服务端
int listen_fd = socket(AF_INET, SOCK_STREAM, 0);
bind(listen_fd, ...);
listen(listen_fd, 128);
int conn_fd = accept(listen_fd, ...); // 阻塞直到三次握手完成
// 客户端
int sock_fd = socket(AF_INET, SOCK_STREAM, 0);
connect(sock_fd, ...); // 发起三次握手,返回时连接已建立)
I/O多路复用(避免了为每个连接创建一个线程/进程的资源开销,通过单个线程/进程同时监听多个文件描述符)的 I/O 事件,包括select(监听的fd有限制),poll(监听的fd无限制但是依然需要o(n)遍历fd),epoll(Linux,事件驱动:只返回就绪的 fd;有两种触发模式(et,lt)))
数据结构
二叉树,平衡树,搜索树的定义(只有最多两个子节点;左右子树的高度差不大于1的搜索树;左小于根,右大于根)
红黑树(性质,复杂度o(n))
算法题:
将链表:
L0->L1->L2->......->LN变为
L0->LN->L1->LN-1->L2->...
(遍历到中点节点,对后半部分反转,快慢指针重新拼接)(o(n)时间,o(n)空间,进阶o(1空间))
(ps:第一眼看成反转链表原题了。错了之后说了数组法的时候面试官笑了,最后想的是构造一条新的反转链表,然后和原链表再两两合并拼接,但是用了o(n)额外空间)
操作系统:
操作系统中的虚拟内存和物理内存(自己查一下吧)
数据库:
数据库隔离级别(自己查一下吧)
#发面经攒人品#