知了常识站
白蓝主题五 · 清爽阅读
首页  > 电脑基础

面试常问的库函数有哪些?程序员必看

面试常问的函数有哪些?程序员必看

找工作面试时,尤其是技术岗,经常会被问到一些常见的库函数。别小看这些基础问题,它们往往是考察你对语言掌握程度的试金石。比如你在写C语言程序时用了strcpy,面试官突然问你:这个函数有啥风险?你能答上来吗?

strlen 和 sizeof 的区别

这个问题几乎成了标配。很多人以为它们差不多,其实差别挺大。strlen是计算字符串长度,不包含末尾的\0;而sizeof是算整个变量占多少字节。

#include <stdio.h>
#include <string.h>

int main() {
    char str[] = "hello";
    printf("strlen(str) = %d\n", strlen(str));  // 输出 5
    printf("sizeof(str) = %d\n", sizeof(str));  // 输出 6(包括\0)
    return 0;
}

strcpy 和 strncpy 的安全隐患

面试官特别喜欢拿strcpy说事,因为它不会检查目标缓冲区大小,容易造成缓冲区溢出。这也是很多安全漏洞的根源。

这时候你可以提一下strncpy,它多了一个长度参数,相对安全些,但要注意它不一定自动加\0。

char dest[10];
strcpy(dest, "hello world"); // 危险!超出dest容量

atoi 和 strtol 哪个更好用?

把字符串转成整数,很多人第一反应就是atoi。但它遇到非法字符直接返回0,没法判断到底是转换失败还是原本就是0。

strtol就更靠谱,它能通过指针返回出错位置,适合做健壮性处理。

malloc 和 free 要成对出现

动态内存管理是重点。面试官可能会让你写一段分配内存再释放的代码。记住一点:每次 malloc 都要对应一个 free,否则就是内存泄漏。

顺便提一句,calloc 和 malloc 的区别在于前者会把内存初始化为0,适合数组类场景。

strcmp 和 strncmp 的使用场景

比较字符串内容,用strcmp没问题。但如果只想比前几个字符,比如判断文件扩展名是不是“.txt”,那就该用strncmp,避免越界或误判。

if (strncmp(filename + len - 4, ".txt", 4) == 0) {
    printf("这是一个txt文件\n");
}

这类细节,在实际项目里很实用,面试官一听就知道你有没有真写过代码。

memcpy 和 memmove 能互换吗?

两个都用来拷贝内存,但关键区别在于是否处理内存重叠。memcpy不保证处理重叠区域,而memmove可以,因为它内部做了判断。

如果你在面试中提到这点,说明你看过底层逻辑,不是死记硬背。

本站“知了常识站”专注分享电脑、软件、网络与生活常识等实用知识,仅供学习交流使用。

访问地址:http://dgzljx1688.com,欢迎收藏本站获取更多实用教程。

如有侵权或错误内容,请联系站长及时处理。