牛客后端开发面试题3

发布时间:2023年12月17日

?阿里巴巴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银行自动取款机?用指纹识别、人脸识别来替代密码输入;

首先要添加硬件设备,其次要保证安全性不能被攻击,然后再设计相应的算法以及故障处理(如果人脸识别或指纹用不了还可以用密码登录)。

文章来源:https://blog.csdn.net/qq_60012598/article/details/134977123
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。