linux软件工程师笔试题,C/C++软件工程师笔试题

1,程序设计(可以用自然语言来描述,不编程):C/C++源代码中,检查花括弧(是“(”与

“)”,“{”与“}”)是否匹配,若不匹配,则输出不匹配花括弧所在的行与列。

2,巧排数字,将1,2,...,19,20这20个数字排成一排,使得相邻的两个数字之和为一个素数,且

首尾两数字之和也为一个素数。编程打印出所有的排法。

3,打印一个N*N的方阵,N为每边字符的个数(   3〈N〈20

),要求最外层为“X”,第二层为“Y”,从第三层起每层依次打印数字0,1,2,3,...

例子:当N   =5,打印出下面的图形:

X   X   X   X   X

X   Y   Y   Y   X

X   Y   0   Y

X

X   Y   Y   Y   X

X   X   X   X   X

其他C/C++软件工程师笔试题

如何定位全局数组的写越界

??一个被大量引用的全局数组int

a[100],被写越界了,这样的情况如何定位?

????

??最简单的方法是,将数组a[100]改为a[101],然后对访问a[100]的地方设置断点进行调试。因为a[100]应该是没有人访问的,如果访问就是越界访问,直接可以定位到该位置。

????

??另外:将函数定义成static类型可以防止该文件意外的其他文件中的函数调用此函数。

++i与i++的区别到底怎样?

??i++和++i的 最重要的区别大家都知道就是

+1和返回值的顺序。但,两这还有一个区别(在C++中)就是i++在实现的时候,产生了一个local object class

INT;

??

??//++i 的版本

??INT INT::operator++()

??{

??

*this=*this+1;

?? return *this;

??}

??

??//i++ 的版本

??const INT

INT::operator ++(int)

??{

?? INT oldvalue=*this;

??

*this=*this+1;

?? return

oldvalue

??}

??

??所以从效率上来说++i比i++来的更有效率。具体细节你可以看More Effective C++

的M6

内存泄漏

2006-2-18 星期六(Saturday) 晴

??struct

chunk_t

??{

?? u_char *ptr;

?? size_t len;

??};

??

??int

key_switch(const struct RSA_public_key *k, R_RSA_PUBLIC_KEY

*publickey)

??{

?? chunk_t exponent,modulus;

??

??

publickey->bits =(k->k)*BITS_PER_BYTE;

??

?? modulus =

mpz_to_n(&(k->n),k->k);

?? exponent =

mpz_to_n(&(k->e),k->k);

??

??

memcpy(publickey->modulus+128,modulus.ptr,modulus.len);

??

memcpy(publickey->exponent+128,exponent.ptr,exponent.len);

??

?? ……

……

?? return

0;

??}

??

??象上面这样的函数,其中在调用mpz_to_n的时候进行了malloc内存分配,别以为chunk_t

exponent,modulus;是局部变量就没问题,如果函数退出前不释放mpz_to_n申请的空间,就会存在内存泄漏问题。

??

??应该在……

……处加上代码:

??freeanychunk(modulus);

??freeanychunk(exponent);

??

??指针释放的问题早就知道了,但是实际应用中还是会因为没注意到而忘了。由于分配内存使用的是对malloc封装的函数alloc_bytes(),所以使用相关的内存泄漏调试工具会定位到alloc_bytes()函数里,根本不能定位到具体泄漏的地点。

??

??所以说对malloc/free进行二次封装有它的好处,同时也会带来坏处。

在linux下防止某个程序被运行两次的方法

??通过文件锁来实现,在程序运行的一开始,检查某文件是否存在,如果存在则说明改程序已经在运行了,如果不存在则利用open语句创建该文件,程序退出时关闭并删除此文件。

??

??具体代码:

??

??static char file_lock[sizeof(ctl_addr.sun_path)] =

/var/run/file.pid;

??static bool file_lock_created = FALSE;

??

??static

int

??create_lock(void)

??{

?? int fd = open(file_lock, O_WRONLY |

O_CREAT | O_EXCL | O_TRUNC,

?? S_IRUSR | S_IRGRP | S_IROTH);

??

?? if

(fd < 0)

?? {

?? if (errno == EEXIST)

?? {

?? fprintf(stderr,

\"file: lock file \"%s\" already existsn\", file_lock);

??

exit_file(10);

?? }

?? else

?? {

?? fprintf(stderr, \"file: unable

to create lock file \"%s\" (%d %s)n\"

?? , file_lock, errno,

strerror(errno));

?? exit_file(1);

?? }

?? }

?? file_lock_created =

TRUE;

?? return fd;

??}

??

??static bool

??fill_lock(int

lockfd)

??{

?? char buf[30]; /* holds \"n\" */

?? pid_t pid;

?? int

len;

??

?? pid = getpid();

?? len = snprintf(buf, sizeof(buf), \"%un\",

(unsigned int) pid);

?? bool ok = len > 0 && write(lockfd, buf,

len) == len;

??

?? close(lockfd);

?? return

ok;

??}

??

??static void

??delete_lock(void)

??{

?? if

(file_lock_created)

?? {

?? //delete_ctl_socket();

??

unlink(file_lock); /* is noting failure useful? */

??

}

??}

C/C++软件工程师笔试题

??将任意证书N分解成多个互不相同的正整数的和,并打印所有可能的组合方式。例如N=6,组合方式有1+5,2+4,1+2+3。

??#include \"stdafx.h\"

??#include

\"stdlib.h\"

??

??static int n;

??int *a;

??static int total =0

;

??void output(int s){

?? int i=1;

?? printf(\"%d =

%d\",n,a[i]);

?? for(i=2; i<=s; i++){

?? printf(\"+%d\",a[i]);

??

}

?? printf(\"n\");

??}

??

??int filter(int s){

?? int i,j;

??

if(s==1)return -1;

?? for(i=s;i>0;i--)

?? for(j=1;j??

if(a[i]==a[j])

?? return -1;

?? }

?? return 0;

??}

??void dfs(int

d,int low,int rest){

?? //printf(\"d = %d ,low = %d ; rest

=%dn\",d,low,rest);

?? int i;

?? if(rest == 0){

??

if(filter(d-1)==0){

?? total ++;

?? output(d-1);

?? }

?? }

??

if(low>rest) {

?? //printf(\"1111111111111n\");

?? return ;

??

}

?? for(i=low;i<=rest;i++){

?? a[d]=i;

?? dfs(d+1,i,rest-i);

??

}

??}

??

??int main(int argc, char* argv[])

??{

??

?? int

num;

?? printf(\"input:\");

?? scanf(\"%d\",&num);

?? n=num

;

??

?? a =(int *)malloc(sizeof(int)*(n+1));

??

?? dfs(1,1,n);

??

printf(\"total = %dn\",total);

?? free(a);

?? return 0;

??}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/530254.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

嵌入式linux中的锁机制,跟涛哥一起学嵌入式第11集:一个实现锁机制非常有意思的宏...

QQ群(宅学部落)有位学员问了一个很奇怪的宏&#xff0c;觉得很有意思&#xff0c;特拿来分享&#xff0c;它的定义如下:我们知道&#xff0c;宏定义其实就是为了方便&#xff0c;给一串代码字符串定义一个别名。有时候字符串过于复杂&#xff0c;我们可以分多行书写&#xff0c…

linux 制作box文件夹,用busybox制作自己简易的根文件系统

当使用Busybox-1.2.0制作根文件系统交叉编译器为3.3.2make-3.8.1STEP 1&#xff1a;创建根文件系统目录&#xff0c;主要包括以下目录/bin&#xff0c;/etc&#xff0c;/dev&#xff0c;/mnt&#xff0c;/sbin&#xff0c;/usr。STEP 2&#xff1a;升级make到3.81版本&#xff…

linux主频限制服务,linux抵御DDOS攻击 通过iptables限制TCP连接和频率

cc攻击一到就有点兵临城下的感觉&#xff0c;正确的设置防护规则可以做到临危不乱&#xff0c;这里给出一个iptables对ip进行连接频率和并发限制&#xff0c;限制单ip连接和频率的设置规则的介绍#单个IP在60秒内只允许新建20个连接,这里假设web端口就是80,iptables -I INPUT -…

linux es数据库 head,elasticsearch安装es-sql插件

说明&#xff1a;本示例是在CentOs Linux7.4上运行&#xff0c;安装的es版本为6.8.0&#xff0c;对应es-sql版本6.8.0&#xff0c;es-head版本5.0.0&#xff0c;需要安装JDK下载es安装包wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.8.0.tar.gz…

LINUX进程调度分析源码,Linux 实时调度(源码分析)

为了弄清楚在多cpu系统中是如何实现实时调度的&#xff0c;先引入以下几个概念&#xff1a;cpu的状态&#xff1a;我们知道&#xff0c;在linux系统中&#xff0c;任务的优先级为0~140。INVALID:(-1)该cpu不可用IDLE(0):140NORMAL(1)&#xff1a;100~139对应于普通任务的优先级…

linux源码文件名,Linux中文件名解析处理源码分析

Linux中文件名解析处理源码分析前言Linux中对一个文件进行操作的时候&#xff0c;一件很重要的事情是对文件名进行解析处理&#xff0c;并且找到对应文件的inode对象&#xff0c;然后创建表示文件的file对象。在此&#xff0c;对文件名解析过程&#xff0c;并且如何找到对应ino…

帝国cms linux伪静态规则,帝国cms7.2伪静态规则怎么写

一、在linux主机下实现伪静态确认虚拟主机是否支持rewrite伪静态.htaccess文件。添加.htaccess 文件&#xff0c;把htaccess 文件放在网站根目录。二、在win主机下实现伪静态确认虚拟主机是否支持rewrite伪静态httpd.ini文件。添加httpd.ini文件&#xff0c;把httpd.ini文件放入…

linux core 永久生效,【调试】Core Dump是什么?Linux下如何正确永久开启?

内容简介【调试】Core Dump是什么&#xff1f;Linux下如何正确永久开启&#xff1f;Core Dump是什么&#xff1f;Linux下如何正确永久开启&#xff1f;Core Dump是什么&#xff1f;Core Dump乍听之下很抽象。当程序运行的过程中异常终止或崩溃&#xff0c;操作系统会将程序当时…

linux故障排查书籍,Linux系统故障排查和修复技巧.docx

fsck -y /cievZhdab(fsck为文件系统检测修复命令&#xff0c;“-y”设定检测到错误自动修复&#xff0c;Zdev/hda6 为发生错误的硬盘分区&#xff0c;请依据具体情况更改此参数) 系统修复完成后&#xff0c;用命令“reboot&#xff0c;重新启动即可? 案例三、GRUB选项设置错误…

用于用户C语言标识符,下列可用于C语言用户标识符的一组是( )

摘要&#xff1a;下列不属于骨肉瘤患者常见护理问题()于C语言用户组Since people send nonverbal signals through multiple channels simultaneously, it is impossible to increase our nonverbal communication competence by becoming more aware of how it operates in sp…

c语言编程常见问题解答,C语言编程常见问题解答之常用函数的包含文件

函数 包含 类别 功能_atold math.h 数学子程序 把字符串转换为浮点数_beginthread process.h 进程控制子程序 启动执行一个新线程_bios_disk bios.h 接口子程序 输出BIOS磁…

c语言猜四位数游戏猜10次,C语言猜数字游戏--随机生成4个不相同的数字从小到大排序,用户开始游戏,如果用户猜对数字和数字对应的位置,界面回馈A,如果数字正确位置不正确,则回馈B...

1.看程序运行截图吧&#xff01;&#xff01;由于博主本人较笨&#xff0c;就不动画演示了&#xff0c;如果动画的话可能将是一个漫长的过程&#xff01;猜数字游戏.png2.游戏题目随机生成4个不相同的数字从小到大排序&#xff0c;用户开始游戏&#xff0c;如果用户猜对数字和数…

双端堆c语言,数据结构——双端堆(C语言)

定义双端堆&#xff1a;是一棵完全二叉树&#xff0c;该完全二叉树要么为空&#xff0c;要么同时满足下列性质&#xff1a;(1) 根节点不包含元素&#xff1b;(2) 左子树是一个最小堆&#xff1b;(3) 右子树是一个最大堆&#xff1b;(4) 如果右子树不空&#xff0c;令i是左子树中…

C语言和我的世界指令哪个难,我的世界难度有什么区别 难度选择指令介绍

我的世界中的难度(Difficulty)可以在Minecraft的选项菜单内切换。更改这个选项将直接影响到游戏本身。选项中并没有设定影响攻击性生物的可生成数量&#xff0c;包括和平模式。目前游戏共有和平、简单、普通和困难4种难度。我的世界难度区别和平&#xff1a;会生成攻击性生物&a…

w ndows10即将停止更新,微软开始警告Windows 10 v1909用户即将停止更新服务

如果您仍在运行Windows 10版本1909&#xff0c;版本1903或更早版本&#xff0c;则可能已经在系统任务栏中注意到一条新消息&#xff1a;Windows 10版本即将终止服务。根据Windows 10 May 2020 Update或2020年10月Update。为了将用户升级到最新版本的Windows 10&#xff0c;“您…

筛法求素数c 语言,位筛法求素数,有段代码看不懂,有大佬可以来说一下

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼就是BITArray[ (i -3)/ CHAR_BIT ]其中i从0开始&#xff0c;那下标不就为负了&#xff1f;而指向的又是哪个数据&#xff1f;下面是完整代码。#include #include #include #include #include #include#include int main( ){unsigne…

c语言中日期间的天数怎么计算,关于计算两个日期间天数的代码,大家来看看...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼这是原贴:http://post.baidu.com/f?kz100411727这是原码:#include "stdio.h"main(){long int i,a[2],b[2],c[2],x[12]{0,31,59,90,120,151,181,212,243,273,304,334},y,z[2];scanf("%ld-%ld-%ld %ld-%ld-%ld"…

linux nf conntrack,Linux基于mark的策略路由以及nf_conntrack RELATED

谈到什么是意义&#xff0c;话题总显得很大&#xff0c;近日每晚都和老城里的朋友聊老城的文化&#xff0c;老城的老房子&#xff0c;老城的叫卖声&#xff0c;老城的方言…进行了很多的思考&#xff0c;也挺充实。至于技术方面&#xff0c;也有跟朋友以及前同事聊过&#xff0…

android 根据资源名称,如何在Android中按名称访问可绘制资源

你可以做这样的事情。public static Drawable getDrawable(String name) {Context context YourApplication.getContext();int resourceId context.getResources().getIdentifier(name, "drawable", YourApplication.getContext().getPackageName());return contex…

Android10不能用谷歌,谷歌真的很严格,一大波老APP将不能在安卓10.0运行

苹果iOS的一大优点就是软件生态&#xff0c;第三方APP都会主动适配新的iOS系统以及手机。虽然说Android的开放性是也是一大优点&#xff0c;但是第三方软件参差不齐的优化适配水平也让安卓的用户非常头疼。不过谷歌每年都在致力于让Android的软件生态更好。根据XDA的报道&#…