C++ 面试题目记录

华为选择题总结

以下为面试被问到的题

1. 友元类,友元函数
2. 构造函数和析构函数能抛出异常吗,如果带指针的抛出异常怎么办:

答:构造函数可以抛出异常,但是存在内存泄漏奉献,如果构造函数中有指针的内存分配,由于构造函数中抛出了异常,等价于该类并没有成功实例化,因此不会自动调用构造函数,此时可以用智能指针unique_ptr来定义指针。

3. 排序算法
4. 单例模式+多线程
5. python提高效率的方法
6. 图和树的区别
7. list和tuple区别:
  1. 定义形式不同 list=[1,2,3], tuple=(1,2,3)
  2. tuple由于采用的是括号定义,所以当内部只有一个元素时,为了避免歧义,元素后面需要加一个,,如a=(1,), 而不是a=(1)
  3. tuple一旦定义不可修改,因为数据存储更安全。list是可以修改的,通过append, pop(n), insert操作等。
  4. tuple 内部元素如果包括列表,那么也是可变的
a=('a','b',[1,23])
T=a[2]
T[0]=2
T[1]=4
print(a)
# (‘a’,'b',[2.4])
8. python 传参是值传递还是传引用
9. 字典和列表推导式是什么

可以快速生成字典和列表数据
(1)列表

  1. 基础推导式:a=[for i in xxx]
  2. 推导式结合if 进行过滤[for x in xx if 过滤条件]
  3. 推导式结合三目运算符进行赋值[if 条件 else 输出值 y for x in xxx],if条件为真时输出x,否则输出y
  4. 三目运算符扩展
num=int(intput("Input a number"))
number=100 if num>5 else 0

(2)字典
{i:v for i,v in enumerate(list)}
{key:value for key, value in dict.item()}

a=['Nancy','Victor','Tom','Jenny']
b={i:v for i,v in enumerate(a)}
c={i:a[i] for i in range(len(a))}
# Apply the derived type and zip() function to output a dict 
age=[15,17,19,20]
d={k:v for k,v in zip(a,age)}
print(b,'\n')
print(c,'\n')
print(d,'\n')

#  {0: 'Nancy', 1: 'Victor', 2: 'Tom', 3: 'Jenny'} 
#  {0: 'Nancy', 1: 'Victor', 2: 'Tom', 3: 'Jenny'} 
#  {'Nancy': 15, 'Victor': 17, 'Tom': 19, 'Jenny': 20} 
10. 什么是PEP8
11. Python id()函数

返回对象的唯一标识符,标识符是一个整数。

a='runoob'
b=1
print(id(a))
print(id(b))
# 140024298019152 
# 140024298092848

1. 如何打印当前源文件的文件名以及源文件的当前行号?

cout<<__FILE__;
cout<<__LINE__;

以上两个是系统预定义宏,这种宏并不是在某个文件中定义的,而是由编译器定义的。

2. 当一个类中没有任何成员变量和函数时,sizeof大小为多少

答: 为1,这和sizeof(void)是相同的,必须给定占个文职,而分配空间最小单位为1。

3. 构造函数可否为虚函数

答:不可以,因为实例化一个类变量时,一定会指明其类型,而不是像某些多态的虚函数一样,运行时才识别确定。基类的析构函数一定要是虚函数。

4. 函数模板与类模板的区别

答:函数模板为隐式实例化,编译器可以根据实参类型推断其实际类型。类模板为显示实例化,必须指明其所使用的类型。

template<class T>
void Swap(T& a1,T& a2){
	T tmp=a1;
	a1=a2;
	a2=tmp;
}

template<class T>
class A{
	A& fun();
	A value;
};
int main(){
doubel d1=1.1;
doubel d2=2.2;
Swap(d1,d2);

int c1=2;
int c2=10;
Swap(c1,c2);

A<int> a;
return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值