QA

C++部分:
1、一个类对象,有一个char成员,char*成员,int成员,两个成员函数,另外一个虚函数,问sizeof多少?
2、多继承使用成员函数时需要注意?避免虚函数调用二义性的方式列举2种。
3、如果new内存时,失败会出现何种情况?
4、delete时需要注意事项?delete数组时不用[]是否可以? 一个指针为NULL,可否进行delete?
5、构造函数和析构函数是否可以是虚函数?如果可以,说明何种情况下使用?
6、一段内存占8个字节,如果取得前四个字节的数据?
7、简要说明二叉树?
8、简要说明一种设计模式?
9、列举一些stl的数据结构,map 和multimap的区别?
10、vector和list的使用特点,何种情况下使用list优于vector?
11、线程加锁的方式?


linux部分:
1、进程加锁的方式?
2、列举一些常用命令?

数据库部分:
1、数据备份的方式?
2、SQLSERVER的默认端口是?
3、为何使用索引查询速度加快?

 

看题目,这是大公司的面试题.
1.通常数据都是32bit取整的,虚函数表再加4byte.
2.虚拟继承,或者直接用scope::
3.抛异常
4.可以,但是不提倡
5.constructor 不行
6.memcpy
7/8.随便说
剩下看msdn就好

 

1.考虑字对齐是12个字节,不考虑是5个字节

2.多个父类中同名的函数间的覆盖。(第二题对我来说太深奥了,我虚函数应用仅限:替换)

3.NULL

4.不能对空指针进行delete操作,删除数组时一定要在delete后紧跟[];delete 数组不可以不用[]

5.构造函数不可以是虚函数。析构函数可以为虚函数。在函数方法需要替换的情况下使用虚函数。

6.使用联合体

7.树的知识忘记了……

8.单例模式,当这个类是经常被调用但里面数据不需要修改的时候使用该模式

9.没用过……只用过内存映射文件FileMapping

10.不太了解……

11.不知道要加的是临界资源锁还是死锁?

不知道面试官会不会满意我这样的答案……

 

额,第一道题应该是16,忘记加上虚函数表了

 

 

[Quote=引用 7 楼 jyeung 的回复:]
看题目,这是大公司的面试题.
1.通常数据都是32bit取整的,虚函数表再加4byte.
//我是直接把数据成员sizeof叠加,然后每个函数都看成4个字节叠加,看来是答错了。
2.虚拟继承,或者直接用scope::
//除了虚拟继承,似乎可以对对象选择接口(进行强制转换),以避免二义性。
3.抛异常
//他问的不是怎样处理,而是不处理会出现什么情况。我完全晕了。
4.可以,但是不提倡
//我回答的是数组必须[]才行,回来查资料,似乎不用[]也可。
5.constructor 不行
6.memcpy
//我回答是把数据强制转换成int来处理,因为int是4个字节的。
7/8.随便说
剩下看msdn就好
//最讨厌的就是数据库部分的了,都不会,默认端口之类的从来就没怎么留意过,晕了。

 

1、16吧,对齐加上 虚函数表指针
2、base::fun这样?
3、new失败是不是返回0
4、delete数组也可以不用【】,
5、虚构函析数。继承中用

6、char *
7、根节点左子树右子树
8、工厂、单件。没有深入过
9、vector list map deque
10、vector是数组,list是链表。个人理解

 

1.16个
2.用这个:fatherName::,否则不知道该函数是从父类继承的还是从祖类继承的
3.不正式地返回操作系统,可以exit(1)
4.必须要中括号[]。
5....不知道了。

 

数据库部分:
1、数据备份的方式?
全备份 差分备份 增量备份
2、SQLSERVER的默认端口是?
1433
3、为何使用索引查询速度加快?
索引分为两种 聚簇索引和非聚簇索引 两者的查询方式不同。索引就好像关键字一样。第一种是索引跟查询内容在一个存储页内。索引有明确的排列规则。第二种是索引后便跟的是数据的地址。同样的索引有明确的排列规则。因为索引所分配的数据空间小,所以查询速度很快。

 

感觉有些还是拿不准,平时还是关注少这些细节了。

1、一个类对象,有一个char成员,char*成员,int成员,两个成员函数,另外一个虚函数,问sizeof多少?
考虑对齐12。函数不会占用类的空间。
2、多继承使用成员函数时需要注意?避免虚函数调用二义性的方式列举2种。
注意二义性。避免的方法,用域空间显式调用,还有方法是?
3、如果new内存时,失败会出现何种情况?
返回null
4、delete时需要注意事项?delete数组时不用[]是否可以? 一个指针为NULL,可否进行delete?
注意事项?数组必须用[]。空指针也可以delete。
5、构造函数和析构函数是否可以是虚函数?如果可以,说明何种情况下使用?
析构可以,有继承关系,需要保证析构顺序的情况下。
6、一段内存占8个字节,如果取得前四个字节的数据?
与运算或者右移32位(还是说从高位地址,还是底位地址取的问题)
7、简要说明二叉树?
最多只有2个子节点的树。
8、简要说明一种设计模式?
状态,工厂,就不细说了。
9、列举一些stl的数据结构,map 和multimap的区别?
multimap没用过。应该是可支持多个key相同的元素的容器吧。
10、vector和list的使用特点,何种情况下使用list优于vector?
vector连续内存,随机存取。list非连续,非随机。插入或删除中间项的时候list优于vector。

C++部分:
1、一个类对象,有一个char成员,char*成员,int成员,两个成员函数,另外一个虚函数,问sizeof多少?
等于12(因为对其的原因)
2、多继承使用成员函数时需要注意?避免虚函数调用二义性的方式列举2种。
使用作用域运算符;重写虚函数
3、如果new内存时,失败会出现何种情况?
返回0
4、delete时需要注意事项?delete数组时不用[]是否可以? 一个指针为NULL,可否进行delete?
删除对象数组时,必须使用delete [],基本(内置)数据类型数组不用;delete NULL没有问题
5、构造函数和析构函数是否可以是虚函数?如果可以,说明何种情况下使用?
构造不能为虚,析构必须为虚。否则导致初始化失效以及内存泄露等问题。
6、一段内存占8个字节,如果取得前四个字节的数据? 
memcpy
7、简要说明二叉树?
每个父节点最多两个子节点
8、简要说明一种设计模式?
单例,工厂,适配器 ...
9、列举一些stl的数据结构,map 和multimap的区别?
multimap允许重复键
10、vector和list的使用特点,何种情况下使用list优于vector?
不需要随机访问,但需要动态删除中间的元素时
11、线程加锁的方式?
互斥体,临界区,事件等待,信号量


linux部分:
1、进程加锁的方式?
互斥锁,文件锁,信号量
2、列举一些常用命令?
ls ps

数据库部分:
1、数据备份的方式?
全备份,增量备份
2、SQLSERVER的默认端口是?
1433
3、为何使用索引查询速度加快?
因为索引搜索时使用B-tree等方式加快查找速度,避免了全表扫描


11、线程加锁的方式?
。。。
12、模板的偏特化?
。。。
13、如果一个类继承的含有纯虚函数,如果编译没有问题,何种情况下运行时出错?

 

class A
{
public:
~A(){};

char ch;
char *pch;
int it;
//double d;(1)
int fun1();
void fun2();
};

sizeof(A)==12//注释(1)
sizeof(A)==24//没注释(1)

??为什么啊??

int *p, *q;
p=new int[3];
q=NULL;
delete p;
delete q;
system("pause");

事实说话,以上都行,,

 

 

 

我也查阅了一些资料,大概是说如果delete类对象数组时,需用[],如果delete内置数据类型的数组时,不用[]也可。 这题出的真细致。

 

C++部分:
1、一个类对象,有一个char成员,char*成员,int成员,两个成员函数,另外一个虚函数,问sizeof多少?
char 1字节(考虑对齐 实际上占4字节) char *看程序位数,4或8 int 4字节 成员函数不占字节 虚函数,不占字节,但是由于有虚函数,所以会多一个隐式的成员虚表指针 4或8字节

假设是32位 
4+4+4+4 = 16
2、多继承使用成员函数时需要注意?避免虚函数调用二义性的方式列举2种。
指定范围或强制转换类型再访问
3、如果new内存时,失败会出现何种情况?
返回空指针或者抛异常,可以设置,具体得查一下
4、delete时需要注意事项?delete数组时不用[]是否可以? 一个指针为NULL,可否进行delete?
可以delete数组不加[],但会造成内存泄漏,只释放了第一个元素。可以delete NULL;
5、构造函数和析构函数是否可以是虚函数?如果可以,说明何种情况下使用?
构造函数不能是虚的,析构可以是虚的。当一个基类有虚函数,一般也会把析构函数设置成虚的。
6、一段内存占8个字节,如果取得前四个字节的数据?
char *array = 地址;
接下来用array[0]~array[3]访问
7、简要说明二叉树?
父节点只有0-2个子节点 并且只有一个根节点的
8、简要说明一种设计模式?
随便举,最简单是单例
9、列举一些stl的数据结构,map 和multimap的区别?
map是一对一,multimap是一对多
10、vector和list的使用特点,何种情况下使用list优于vector?
vector适用于随机访问,前后端增删数据快
list适用于频繁中间增删数据
基本可以理解为一个是数组,一个是链接
11、线程加锁的方式?
这个好像没啥考点,用过就知道,没用过就不知道。需要用时百度一下就行了

linux部分:
1、进程加锁的方式?
同上
2、列举一些常用命令?
同上

数据库部分:
1、数据备份的方式?
上大学时背过的。热备份 冷备份 归档备份
2、SQLSERVER的默认端口是?
百度
3、为何使用索引查询速度加快?
空间换时间

 

我看那个delete[]的问题上面没一个搞清楚了,我来简单解释一下。首先 new[]和delete[]配对使用是个好习惯,不会出问题。但不用[]也并非所有情况下都有问题,那些说不用[]只会删除第一个元素,导致内存泄露的根本没搞懂,释放内存最终还是用free整块释放的,怎么会只删除第一个元素呢?真正原因是,在delete对象数组时,因为只是一个指针,编译器并不知道他是个数组,只会调用第一个元素的析构函数,而不会调用后面的析构函数,导致对象不能正常的清除,这才是根本的!就是说,如果new的是简单类型,或类很简单,不需要析构函数的,不会出任何问题!
当然,始终成对使用是最好的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值