阿里巴巴2021
1、通配符的含义
在字符串匹配时可以代替一定范围的字符。
2、死锁的基本知识
产生死锁的原因:
1.系统资源不足
2.进程运行推进方式不合理
3.分配资源不合理
(把幼儿园老师比作操作系统,幼儿园里的玩具比作系统资源,死锁就是小朋友们都争抢玩具却没得玩尬住了,如果玩具足够多,就不会有没有玩具玩的小朋友;如果老师安排轮流玩或者其他合理方案,小朋友们就不会因此争夺;另外就是本来只有三个球,十个人要一起玩耍,而其中一个小朋友一次性就占了两个球也是不合理的)
产生死锁的四个必要条件:
1.互斥条件:保证一个资源,每次只能给一个进程使用
2.请求与保持:一个进程因请求资源阻塞时,对于已经获得的资源保持不变
3.不剥夺条件:对于已获得资源的进程,其未使用完之前,不能强行剥夺其资源。
4.循环等待条件:若干个进程之间形成一种头尾相接的循环等待的过程
死锁的解除与预防:
从产生死锁的三个原因下手去解决,设计合理的调度算法和资源分配就能一定程度避免死锁
3、 delete、new的用法
new和delete是动态内存管理的操作符。
new空间必须要delete释放,new[]申请也要delete[]释放,并且delete之后要把指针置为nullptr
,否则指针就会变成悬空指针(野指针)
4、STL中迭代器的工作原理,迭代器与普通指针有什么区别?
迭代器的使用类似于指针,它可以访问容器中的对象
相同点:
1.迭代器和指针都可以+、-以访问前n个或后n个元素
2.迭代器和指针都可以进行减运算,指针减指针是两个指针之间的距离,迭代器减迭代器是两个迭代器之间的距离
3.通过指针和迭代器都可以修改所指向的元素
不同点:
1.输出时,指针可以直接输出值,而迭代器返回的是对象,对象不能直接输出,要加上*才能输出对象的值
2.指针是可以指向函数的,而迭代器只能指向容器中的元素
5、什么是友元?
友元本质上是破坏了C++的封装性的,但是在不暴露数据安全的情况下,让函数和类访问它,实现了可扩展性和安全性,也提供了便捷。
有友元类和友元函数。友元类是在类中声明为友元的另一个类。友元函数是在类中声明了一个非成员函数,友元类和友元函数都可以访问该类的私有和保护成员。
class A
{
A(){}
friend class B;
//A把B添加到自己的通讯录了,把B当朋友,B可以访问A里面的所有成员函数和私有成 员、保护成员。但是A不可以访问B的私有成员保护成员
}
友元的三个特性:单向的(单相思,别人可以访问你但是你不能访问别人)、不可传递(A是B的友元,B是C的友元,A不是C的友元)、不可继承。
6、typename的用法
在C++中,typename是一个关键字,用于告诉编译器某个符号是一个类型,而不是一个变量或函数。通常在模板中使用,因为模板中的类型有可能是嵌套的类型,需要使用typename来明确表示。
7、编程判断一个数是否为2的幂
n&(n-1)==0就是。
因为2的n次方数字,应该只有1个1并且右边是全0,
8、你怎样重新改进和设计一个ATM银行自动取款机?用指纹识别、人脸识别来替代密码输入;
首先要添加硬件设备,其次要保证安全性不能被攻击,然后再设计相应的算法以及故障处理(如果人脸识别或指纹用不了还可以用密码登录)。