招银软件开发(C++)面经
一二面+hr面
一面:40min(一二面一起面,两个面试官)
1.自我介绍
3.重写和重载
4.堆区和栈区
5.大端字节和小端字节
二面
1.介绍一个项目(web服务器)
难点在哪里(http请求与解析)
http请求行和请求头如何解析?
缓冲区用来做啥?怎么做的
reactor特点,其他的(proactor),各自使用场景
定时器作用
2.场景题:
(1)双十一十五分钟不付款就取消订单,怎么实现?(定时器)
定时器加到哪里(订单添加到数据库时,添加定时器)
负载均衡,如果有几台服务器宕机了,定时器怎么办?(冗余备份)
那么备份定时器的资源消耗有多大?(懵逼)
3.算法题:
存储的数字不容易读,怎样把数字转化为对应的汉字(读法)(哈希映射)
一面:40min(一二面一起面,两个面试官)
1.自我介绍
2.联合体和结构体区别
联合体
用途:使几个不同类型的变量共占一段内存(相互覆盖)
结构体是一种构造数据类型
用途:把不同类型的数据组合成一个整体-------自定义数据类型
Struct与Union主要有以下区别:
(1)struct和union都是由多个不同的数据类型成员组成, 但在任何同一时刻, union中只存放了一个被选中的成员, 而struct的所有成员都存在。在struct中,各成员都占有自己的内存空间,它们是同时存在的。一个struct变量的总长度等于所有成员长度之和。在Union中,所有成员不能同时占用它的内存空间,它们不能同时存在。Union变量的长度等于最长的成员的长度。
(2)对于union的不同成员赋值, 将会对其它成员重写, 原来成员的值就不存在了, 而对于struct的不同成员赋值是互不影响的。
4.堆区和栈区
5.大端字节和小端字节
6.函数指针和指针函数
函数指针,其本质是一个指针变量,该指针指向这个函数。总结来说,函数指针就是指向函数的指针。
指针函数,简单的来说,就是一个返回指针的函数,其本质是一个函数,而该函数的返回值是一个指针。
7.虚函数
虚函数就是在基类中被关键字virtual说明,并在派生类重新定义的函数。虚函数的作用是允许在派生类中重新定义与基类同名的函数,并且可以通过基类指针或引用来访问基类和派生类中的同名函数。
虚析构函数可以在析构派生类的对象时,既调用基类B的析构函数,也调用派生类D的析构函数
(1)构造函数不能声明为虚函数
1)因为创建一个对象时需要确定对象的类型,而虚函数是在运行时确定其类型的。而在构造一个对象时,由于对象还未创建成功,编译器无法知道对象的实际类型,是类本身还是类的派生类等等
2)虚函数的调用需要虚函数表指针,而该指针存放在对象的内存空间中;若构造函数声明为虚函数,那么由于对象还未创建,还没有内存空间,更没有虚函数表地址用来调用虚函数即构造函数了
(2)析构函数最好声明为虚函数
首先析构函数可以为虚函数,当析构一个指向派生类的基类指针时,最好将基类的析构函数声明为虚函数,否则可以存在内存泄露的问题。
如果析构函数不被声明成虚函数,则编译器实施静态绑定,在删除指向派生类的基类指针时,只会调用基类的析构函数而不调用派生类析构函数,这样就会造成派生类对象析构不完全。
8.数组和指针的区别1)因为创建一个对象时需要确定对象的类型,而虚函数是在运行时确定其类型的。而在构造一个对象时,由于对象还未创建成功,编译器无法知道对象的实际类型,是类本身还是类的派生类等等
2)虚函数的调用需要虚函数表指针,而该指针存放在对象的内存空间中;若构造函数声明为虚函数,那么由于对象还未创建,还没有内存空间,更没有虚函数表地址用来调用虚函数即构造函数了
(2)析构函数最好声明为虚函数
首先析构函数可以为虚函数,当析构一个指向派生类的基类指针时,最好将基类的析构函数声明为虚函数,否则可以存在内存泄露的问题。
如果析构函数不被声明成虚函数,则编译器实施静态绑定,在删除指向派生类的基类指针时,只会调用基类的析构函数而不调用派生类析构函数,这样就会造成派生类对象析构不完全。
9.mysql数据库:索引方式有哪些?聚簇索引和非聚簇索引、左连接和右连接区别(left join, right join)+如果索引不到填什么?
left join (左连接):返回包括左表中的所有记录和右表中连接字段相等的记录。
right join (右连接):返回包括右表中的所有记录和左表中连接字段相等的记录。
inner join (等值连接或者叫内连接):只返回两个表中连接字段相等的行。
full join (全外连接):返回左右表中所有的记录和左右表中连接字段相等的记录。
10.数据结构:满二叉树和完全二叉树区别、平衡二叉树、分治思想体现在哪些(快排最明显)
满二叉树:二叉树除了叶结点外所有节点都有两个子节点。
complete binary tree 完全二叉树:从根往下数,除了最下层外都是全满(都有两个子节点),而最下层所有叶结点都向左边靠拢填满。
11.手写快排(自己定义一个输入)二面
1.介绍一个项目(web服务器)
难点在哪里(http请求与解析)
http请求行和请求头如何解析?
缓冲区用来做啥?怎么做的
reactor特点,其他的(proactor),各自使用场景
定时器作用
2.场景题:
(1)双十一十五分钟不付款就取消订单,怎么实现?(定时器)
定时器加到哪里(订单添加到数据库时,添加定时器)
负载均衡,如果有几台服务器宕机了,定时器怎么办?(冗余备份)
那么备份定时器的资源消耗有多大?(懵逼)
3.算法题:
存储的数字不容易读,怎样把数字转化为对应的汉字(读法)(哈希映射)
4.反问
三面(hr面)20min
1.自我介绍
2.本科和硕士隔了一年
3.实习与在校学习区别
4.找工作会看中哪些?(地区、岗位)
5.实习遇到问题如何解决
6.家里情况,是否同意你到外地定居?
7.研究生期间学到哪些?
8.你从哪里了解到我们公司?
9.你还面了哪些公司?
9.反问(竟然有的是面试完才笔试)
10.九月中下旬出结果
#招银网络##招银网络科技校招#2.本科和硕士隔了一年
3.实习与在校学习区别
4.找工作会看中哪些?(地区、岗位)
5.实习遇到问题如何解决
6.家里情况,是否同意你到外地定居?
7.研究生期间学到哪些?
8.你从哪里了解到我们公司?
9.你还面了哪些公司?
9.反问(竟然有的是面试完才笔试)
10.九月中下旬出结果