牛客后端开发面试题3

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

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

相关推荐
午言若5 分钟前
MYSQL 架构
c++·mysql
从以前42 分钟前
【算法题解】Bindian 山丘信号问题(E. Bindian Signaling)
开发语言·python·算法
不白兰1 小时前
[代码随想录23回溯]回溯的组合问题+分割子串
算法
kirito学长-Java1 小时前
springboot/ssm网上宠物店系统Java代码编写web宠物用品商城项目
java·spring boot·后端
海绵波波1071 小时前
flask后端开发(9):ORM模型外键+迁移ORM模型
后端·python·flask
余生H1 小时前
前端Python应用指南(二)深入Flask:理解Flask的应用结构与模块化设计
前端·后端·python·flask·全栈
御风@户外2 小时前
质数生成函数、质数判断备份
算法·acm
羑悻的小杀马特2 小时前
【AIGC篇】畅谈游戏开发设计中AIGC所发挥的不可或缺的作用
c++·人工智能·aigc·游戏开发
闻缺陷则喜何志丹2 小时前
【C++动态规划】1105. 填充书架|2104
c++·算法·动态规划·力扣·高度·最小·书架