✍个人博客:Pandaconda-CSDN博客
📣专栏地址:http://t.csdnimg.cn/fYaBd
📚专栏简介:在这个专栏中,我将会分享 C++ 面试中常见的面试题给大家~
❤️如果有收获的话,欢迎点赞👍收藏📁,您的支持就是我创作的最大动力💪
49. 设 计一个接口需要注意什么,什么是一个好的接口
-
好的接口很容易被正确使用,不容易被误用,名字上容易辨别。在所有接口设计中都应该秉行这条准则。
-
让接口更容易用对,就要把接口做得一致;易于记忆,逻辑上也要与原始类型和标准类型保持一致。
-
预防接口误用的方法:包括定义新的包装类型、限制运算符操作、限制取值范围、不要让用户负责管理资源。
-
shared_ptr 支持自定义的删除器,实现我们想要的析构机制。此外,它还能防止 DLL 交叉问题,而且也能被用来管理其它资源 (例如 Mutex 锁等)。
50. 跨平 台,在不同平台上(比如 32 位和 64 位)int 不一样,怎么实现相同位数?
为了保证平台的通用性,程序中尽量不要使用 long 数据库型。可以使用固定大小的数据类型宏定义:
typedef signed char int8_t
typedef short int int16_t;
typedef int int32_t;# if __WORDSIZE == 64
typedef long int int64_t;
# else __extension__
typedef long long int int64_t;
#endif
16 位系统:long 是 4 字节,int 是 2 字节。
32 位系统:long 是 4 字节,int 是 4 字节 , long long 是 8 字节。
64 位系统:long 是 8 字节,int 是 4 字节 , long long 是 8 字节。
51. C ++ 中有哪些系统调用的函数,即内核函数
在 C++ 中,可以通过调用一些系统函数来与操作系统进行交互,例如进行文件操作、进程管理、内存管理等。这些函数通常被称为系统调用函数或内核函数,它们提供了与操作系统内核进行交互的接口。
以下是一些常见的用于系统调用的函数:
-
文件相关:
open
、read
、write
、close
等用于文件的打开、读取、写入和关闭。 -
进程管理:
fork
、exec
、wait
、exit
等用于进程的创建、启动、等待和退出。 -
线程相关:
pthread_create
、pthread_join
、pthread_mutex_lock
、pthread_cond_wait
等用于线程的创建、等待和同步。 -
内存管理:
malloc
、free
、mmap
、munmap
等用于堆内存的分配和释放,以及内存映射操作。 -
时间和日期:
time
、clock_gettime
等用于获取当前时间和日期。 -
网络通信:
socket
、bind
、listen
、accept
、connect
、send
、recv
等用于创建网络套接字,进行网络通信操作。 -
信号处理:
signal
、sigaction
等用于处理与信号相关的操作。 -
文件系统操作:
mkdir
、rmdir
、rename
、unlink
等用于文件和目录的创建、删除和重命名。 -
设备操作:
ioctl
等用于设备的操作和控制。
需要注意的是,这些系统调用函数的具体实现和可用性可能会因操作系统和编译器的不同而有所差异。另外,C++ 标准库也提供了一些封装了系统调用的函数,使得操作系统的交互更方便高效,例如 std::fstream
用于文件操作、std::thread
用于线程管理等。