linux c/c++ 面试题目整理(一)

2023-11-20

1、求下面函数的返回值

int func(x)
{
    int countx = 0;
    while(x)
    {
        countx++;
        x = x&(x-1);
    }
    return countx;
}

问:假定x是9999,那么返回多少?
答:返回的是8,解题思路是将x转化为二进制,看含有多少个1,则就返回多少。

2、文件中有一组整数,要求排序后输出到另一个文件中

       如果数不多的情况下,可以直接将文件中所有整数读到set中,set类型会自动排好序,读完后再将所有整数写到另一个文件中去。
       而整数特别多内存又不够的情况下,可以分批读,每次读一部分排好序写到一个小文件中去,直到所有整数都读取完成,这时每个小文件就都是排好序的了,然后将所有小文件中第一个数读出来进行比较,选出最小的放到目标文件中去,然后将该最小的数所在文件的下一个数读取出来进行比较,这样所有小文件都比完之后,目标文件中就是排好序的所有整数了。
       思路:这里采用的是大而化小,化整为零的手段。

3、使用递归将两个有序链表合并为一个有序链表

       思路:理解递归,并定义好结束的条件

Node * Merge(Node *head1, Node* head2)
{
    if (head1 == NULL)
        return head2;
    if (head2 == NULL)
        return head1;
    Node* head = NULL;
    if (head1->data < head2->data)
    {
        head = head1;
        head->next = Merge(head1->next, head2);
    }
        else
    {
        head = head2;
        head->next = Merge(head1, head2->next);
    }
    return head;
}

4、写一个函数找出整数数组中第二大的数

const int minnumber = -32767;
int find_sec_max(int data[], int count)
{
    int maxnumber = data[0];
    int sec_max = minnumber;
    for( int i=1;I < count; i++)
    {
        if (data[i] > maxnumber)
        {
            sec_max = maxnumber;
            maxnumber = data[i];
        }
        else
        {
            if (data[i] > sec_max)
                sec_max = data[i];
        }
    }
    return sec_max;
}

思路:定义两个变量一直保存最大的两个整数

5、如何判断一个单链表是否有环

struct node
{
    char val;
    node* next;
}
bool check(const node* head)
{
    if (head == NULL)
        return false;
    node* low = head,*fast = head->next;
    while(fast != NULL && fast->next != NULL)
    {
        low = low->next;
        fast = fast->next->next;
        if (low == fast)
        {
            return true;
        }
    }
    return false;
}

思路:第一个节点每次走一步,第二个节点每次走两步,即第一个节点走n步的时候,第二个节点走了2n步,如果是有环的链表,n和2n处必定是同一个节点。

6、一个标准的strcpy函数

//strcpy的实现:
char * strcpy(char* strDest, const char* strSrc)
{
    assert( (strDest != NULL) && (strSrc != NULL));
    char *address = strDest;
    while( (*strDest++ = *strSrc++) != ‘\0’);
    return address;
}

返回char*的原因:
返回strDest的原始值使得函数能够支持链式表达式,增加了函数的附加值。同样功能的函数,如果能合理地提高函数的可用性,自然就更加的理想。

7、嵌入式系统可能用到这样的场景,即要求设置一绝对地址为0x67a9的整型变量的值为0xaa66,怎么设置?

int *ptr;
ptr = (int*)0x67a9;
*ptr = 0xaa66;

8、下面的代码输出是什么?为什么?

void foo(void)
{
    unsigned int a = 6;
    int b = -20;
    (a+b) > 6?puts(“>6”):puts(“<=6”);
}

结果是”>6”,原因是当表达式存在有符号类型和无符号类型时所有的操作对象都自动转换为无符号类型,因此-20变成一个非常大的整数与6相加,所以该表达式计算出的结果大于6.

9、strncpy和snprintf的正确用法

//strncpy的正确用法:
strncpy(dest,src,sizeof(dest)-1);
dest[strlen(dest)] = ‘\0’;
//snprintf的正确用法:
snprintf(dest, sizeof(dest)-1, “%s”, src);

总则:
1)snprintf的使用比strncpy简洁
2)snprintf可以获取被拷贝的字节数
3)二者都有性能问题,如果src长度远大于dest,用strncpy,否则用snprintf。

10、printf中%5.3s,这样的怎么看?

int main(void)
{
    printf(“%s, %5.3s\n”, “computer”, “computer”);
    return 0;
}

输出:computer,com
       %5.3s 或者是 %5.3d 中小数点后面表示输出的最大宽度,小数点前面的表示输出的最小宽度;
       %5.3f则表示输出场宽为9的浮点数, 其中小数位为3, 整数位为1, 小数点占一位, 不够9位右对齐;
       默认都是右对齐, 若是%-7s则输出左对齐

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

linux c/c++ 面试题目整理(一) 的相关文章

  • 选择fasta文件中氨基酸超过300个且“C”出现至少4次的序列

    我有一个包含蛋白质序列的 fasta 文件 我想选择超过 300 个氨基酸且半胱氨酸 C 氨基酸出现超过 4 次的序列 我使用此命令来选择具有超过 300 个 aa 的序列 cat 72hDOWN fasta fasta bioawk c
  • 使用 shell 脚本发送 HTML 邮件

    如何使用 shell 脚本发送 HTML 电子邮件 首先 您需要撰写消息 最低限度由这两个标头组成 MIME Version 1 0 Content Type text html 以及适当的消息正文 p Hello world p 获得后
  • 使用脚本检查 git 分支是否领先于另一个分支

    I have branch1 and branch2我想要某种 git branch1 isahead branch2 这将显示如果branch1已承诺branch2没有 也可能指定这些提交 我无法检查差异原因branch2 is在之前br
  • 使用 ioctl 在 C++ 中以编程方式添加路由

    我编写了简单的 C 函数 添加了新路线 void addRoute int fd socket PF INET SOCK DGRAM IPPROTO IP struct rtentry route memset route 0 sizeof
  • 在ubuntu中打开spyder

    我想在ubuntu中打开spyder Python IDE 通常我会在 shell 中编写 spyder 它会打开spyder IDE 现在 当我在shell中编写spyder时 它只是换行 什么也没有发生 类似于按 enter 我如何找回
  • MySQL 与 PHP 的连接无法正常工作

    这是我的情况 我正在尝试使用 Apache 服务器上的 PHP 文件连接到 MySQL 数据库 现在 当我从终端运行 PHP 时 我的 PHP 可以连接到 MySQL 数据库 使用 php f file php 但是当我从网页执行它时 它只
  • 链接错误:命令行中缺少 DSO

    我对 Linux 使用 Ubuntu 14 04 LTS 64 位 相当陌生 来自 Windows 并且正在尝试移植我现有的 CUDA 项目 当通过链接时 usr local cuda bin nvcc arch compute 30 co
  • “git add”返回“致命:外部存储库”错误

    我刚刚进入 git 的奇妙世界 我必须提交我对程序所做的一系列更改 位于名为的目录中 var www myapp 我创建了一个新目录 home mylogin gitclone 从这个目录中 我做了一个git clone针对公共回购 我能够
  • 如何并行执行4个shell脚本,我不能使用GNU并行?

    我有4个shell脚本dog sh bird sh cow sh和fox sh 每个文件使用 xargs 并行执行 4 个 wget 来派生一个单独的进程 现在我希望这些脚本本身能够并行执行 由于某些我不知道的可移植性原因 我无法使用 GN
  • LINUX:如何锁定内存中进程的页面

    我有一个 LINUX 服务器 运行一个具有大量内存占用的进程 某种数据库引擎 该进程分配的内存太大 需要将其中一部分换出 换出 我想做的是将所有其他进程 或正在运行的进程的子集 的内存页面锁定在内存中 以便只有数据库进程的页面被换出 例如
  • 嵌入清单文件以要求具有 mingw32 的管理员执行级别

    我正在 ubuntu 下使用 i586 mingw32msvc 交叉编译应用程序 我很难理解如何嵌入清单文件以要求 mingw32 具有管理员执行级别 对于我的例子 我使用了这个hello c int main return 0 这个资源文
  • 为 Linux 编译 Objective-C 应用程序(API 覆盖范围)

    我可能在这里问一些奇怪的问题 但我不确定从哪里开始 问题是我正在考虑使用 Obj C 和 Foundation 类在 Mac 上编写一个命令行工具 但存在一个非常大的风险 那就是我希望能够为不同的 Linux 发行版编译它 以便将来作为服务
  • Python 3.4.3 subprocess.Popen 在没有管道的情况下获取命令的输出?

    我试图将命令的输出分配给变量 而不让命令认为它正在通过管道传输 原因是 如果正在通过管道传输 则相关命令会给出未格式化的文本作为输出 但如果从终端运行 则会给出颜色格式化的文本 我需要获取这种颜色格式的文本 到目前为止我已经尝试了一些事情
  • ssh 连接超时

    我无法在 git 中 ssh 到 github bitbucket 或 gitlab 我通常会收到以下错误消息 如何避免它 输出 ssh T email protected cdn cgi l email protection i ssh
  • 批量删除文件名中包含 BASH 中特殊字符的子字符串

    我的目录中有一个文件列表 opencv calib3d so2410 so opencv contrib so2410 so opencv core so2410 so opencv features2d so2410 so opencv
  • SSH,运行进程然后忽略输出

    我有一个命令可以使用 SSH 并在 SSH 后运行脚本 该脚本运行一个二进制文件 脚本完成后 我可以输入任意键 本地终端将恢复到正常状态 但是 由于该进程仍在我通过 SSH 连接的计算机中运行 因此任何时候它都会登录到stdout我在本地终
  • 在 C 中使用单个消息队列是否可以实现双向通信

    我希望服务器向客户端发送一些消息 并让客户端确认它 我被分配了这个任务 我可以在 C linux 中使用单个消息队列来完成它还是我需要创建两个 谢谢 是的 可以使用 sysV 消息队列来做到这一点 从您之前的问题来看 您正在使用该队列 您可
  • 如何为 Linux 桌面条目文件指定带有相对路径的图标?

    对于我的一个 Linux 应用程序 我有应用程序二进制文件 一个 launcher sh 脚本 针对 LD LIBRARY PATH 和一个 desktop 文件 所有这些都位于同一文件夹中 我想使用图标的相对路径而不是绝对路径 我试过了
  • 在 .gitconfig 中隐藏 GitHub 令牌

    我想将所有点文件存储在 GitHub 上 包括 gitconfig 这需要我将 GitHub 令牌隐藏在 gitconfig 中 为此 我有一个 gitconfig hidden token 文件 这是我打算编辑并放在隐藏令牌的 git 下
  • 我们真的应该使用 Chef 来管理 sudoers 文件吗?

    这是我的问题 我担心如果 Chef 破坏了 sudoers 文件中的某些内容 可能是 Chef 用户错误地使用了说明书 那么服务器将完全无法访问 我讨厌我们完全失去客户的生产服务器 因为我们弄乱了 sudoers 文件并且无法再通过 ssh

随机推荐

  • C、C++、C#、python、java编程—函数

    C资料 菜鸟教程 C语言中文网 C community C 资料 菜鸟教程 cplusplus C community C 资料 菜鸟教程 microsoftC 文档 python资料 菜鸟教程 python标准库 Java资料 菜鸟教程
  • 【Ansible故障解决】解决Ansible初始连接host服务器需验证问题

    Ansible故障解决 解决Ansible初始连接host服务器需验证问题 一 ansible介绍 二 修改ansible cfg配置文件 1 ansible的配置文件修改 2 修改配置文件中的其他部分 3 编辑主机清单 三 测试ansib
  • sh、bash 和 dash 几种 shell 的区别是什么?

    在调试基于 Debian 的 Docker 镜像时 进入容器后在终端中按上箭头键后终端显示 A 下箭头显示 B 右箭头显示 C 左箭头显示 D 按删除键也是显示了几个特殊字符 很奇怪 仔细看了一下 原来进入容器的时候终端使用的 sh 切换为
  • iPhone惊爆史诗级漏洞:亿万台手机可永久越狱 苹果无法修复

    在我认为完美越狱已死的时候没想到国外大神爆出了一个 不可修补 iPhone漏洞 这个漏洞会让iPhone永久越狱从iPhone 4S到iPhone X的所有设备均会受到影响 但是目前还是不支持A12芯片的 据发现它的安全研究员axi0mX称
  • C++实现大数运算(加减乘除求余)

    前言 只有部分GCC编译器支持int128 而我们平常使用的软件 最大只有 int64 当这些不够用时 我们该怎么办 我本身想写代码实现整数型大数据的加减乘除和求余 结果写着写着想着连小数运算的也一起写上 反正加的代码不多 电脑是死的 人是
  • 报错解决:No module named tensorflow.contrib

    今天在跑代码的时候发现一个报错 如下图所示 于是乎我就按照下面的提示安装啊 可惜的是 无效 然后我就去查了下自己的TensorFlow版本 是1 15 再看了下Readme md 怀疑是不是版本太高了 想到就做 换了个低版本的TensorF
  • ruoyi(若依)分离版框架,FluentMybatis封装后,导入功能的前后端实现

    我这里使用的是车辆来作为示例 首先是前端 导入按钮 点击导入按钮后的对话框 导入的一系列方法 下面是后端 Controller层 我们使用了FluentMybatis进行了封装 mapper层被封装了 但会有一些封装好的方法 我们只要 利用
  • vue 项目中使用高德地图

    官方文档 高德地图API官网 高德地图2 0参考手册 高德地图JS API 2 0 示例 在项目中使用 vue amap 高德地图JSAPI在Vue框架下使用 高德地图在线 JS API 示例 一 账号准备 首先 需要注册并登录高德地图开放
  • uni-app 之 表格设置

    uni app 之 表格设置 image png
  • QT connect()连接函数

    函数重载 连接函数后多种重载方法 常用的有 函数4个参数 发射信号的对象 发射的信号 接受信号的对象 要执行的槽 按键单击信号连接到按键槽函数 方法1 connect ui gt pushButton SIGNAL clicked bool
  • java与C++之间的区别

    前言 研究生期间主要使用的是C 语言 因工作的要求 现在需要学习java语言 在学习的这段时间里 发现两种语言之间有着很多相似的地方 但又有一些区别 下面说一下java和c 中比较显著的区别 适用于有c 基础的读者 一 在数据类型 关键字方
  • 销售人员的月工资数量(月工资=基本工资+提成,提成=商品数*1.5)

    include
  • mfc窗口创建的create与oncreate

    在view类中 create 是虚函数由框架调用 是用来 生成一个窗口的子窗口 oncreate 消息响应函数 是用来 表示一个窗口正在生成 某个CWnd的Create函数由当前CWnd的Owner调用 而在CWnd Create中 又会调
  • JDBC乱码解决方法

    JDBC操作数据库出现中文乱码解决方案 学习JDBC的时候 我不止一次碰到过数据库中文乱码问题 解决方法其实很简单 在配置文件的url中加入如下语句就ok了 useUnicode true characterEncoding utf8 出现
  • MySQL幻读:大家好,我是幻读,我今天又被解决了

    什么是幻读 幻读的定义我这里还得补充一句 幻读仅专指 新插入的行 中途通过 update 更新数据而出现同一个事务前后两次查询的 结果集合 不一样 这种不算幻读 然后前几天有位读者跟我说 这个幻读例子不是已经被 可重复读 隔离级别解决了吗
  • localStorage和sessionStorage和Cookie的区别

    localStorage和sessionStorage和Cookie是前端开发中三种常见的临时存储客户端会话信息或者数据的方法 它们都存储在客户端中 区别 一 三者存储的有效时期不同 1 Cookie存储的有效时期可以设置 一般在浏览器关闭
  • 实战wxPython:042 - 高级控件之选项卡Notebook

    在wxPython中 book控件允许用户在各种面板之间切换 最常见的例子是带有选项卡界面的浏览器和系统选项对话框 选项卡wx Notebook提供了一个选项卡栏和一个 页面区域 该页面区域用于显示与每个选项卡相关的页面 默认情况下 选项卡
  • Anaconda下载速度慢,用清华镜像

    Anaconda在官网下载速度慢 关键是下载到一半就没了 清华镜像相对还是要好一点 以下网址持续更新 https mirrors tuna tsinghua edu cn anaconda archive
  • 获取openwrt wan口ip方法

    2020年7月30日14点39分 更新 之前写的方法 获取的是wan口的ip和网关 使用过程发现 以有线上网模式为例 获取wan口网关时 若网关中出现连续的1 1 会获取失败 表明该正则表达式是有问题的 即下面这个grep oE 之后的内容
  • linux c/c++ 面试题目整理(一)

    1 求下面函数的返回值 int func x int countx 0 while x countx x x x 1 return countx 问 假定x是9999 那么返回多少 答 返回的是8 解题思路是将x转化为二进制 看含有多少个1