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;

??}

linux软件工程师笔试题,C/C++软件工程师笔试题相关推荐

  1. linux开发工程师前景_选择成为软件开发工程师的5个原因

    这个星期我将给本地一所高中做一次有关于程序猿是怎样工作的演讲.我是志愿(由 Transfer 组织的)来到这所学校谈论我的工作的.这个学校本周将有一个技术主题日,并且他们很想听听科技行业是怎样工作的. ...

  2. 全国计算机技术与软件专业技术考试----(中级资格/工程师)各资格证详细介绍

    软件设计师 能根据软件开发项目管理和软件工程的要求,按照系统总体设计规格说明书进行软件设计,编写程序设计规格说明书等相应的文档:组织和指导程序员编写.调试程序,并对软件进行优化和集成测试,开发出符合系 ...

  3. 软件测试用例优秀例子_最全软件测试面试题汇总

    原创: 软件测试大师 软件测试大师 昨天 软件测试面试题 尘世沧桑,微笑向暖 1.你的 测试 职业发展是什么? 测试经验越多,测试能力越高.所以我的职业发展是需要时间积累的,一步步向着高级测试工程师奔 ...

  4. Linux中安装IE和Office等软件(转)

    Linux中安装IE和Office等软件(转) 听说出了一种新的Linux中文版本,LinXP,可以在Linux下运行IE6.0 及Office 2000,PhotoShop 7等Windows应用软 ...

  5. 【Linux入门学习之】Ubuntu常用软件

    [Linux入门学习之]Ubuntu常用软件 速配指南之软件参考 本文定位:作为速配指南的补充,列出国内用户比较常用的软件.请将论坛软件推荐版块的内容逐步转移至wiki,而非本文. 本文作用:为新手指 ...

  6. 【Linux入门学习之】Ubuntu常用软件 速配指南之软件参考

    [Linux入门学习之]Ubuntu常用软件 速配指南之软件参考 本文定位:作为速配指南的补充,列出国内用户比较常用的软件.请将论坛软件推荐版块的内容逐步转移至wiki,而非本文. 本文作用:为新手指 ...

  7. linux监控软件有哪些?用什么软件好?

    Linux全称GNU/Linux,是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX的多用户.多任务.支持多线程和多CPU的操作系统,是很多企业正在运行的一个操作系统.因此看到不少企业 ...

  8. 电子工程师也有“鄙视链”!软件硬件无一幸免!

    前言 自古以来,文人相轻,而这股风气如今也在电子工程师的圈子里蔓延开来,影响者众多.从程序语言.工具.OS.硬件.到职场,根据你所学东西的不同,被划分为不同的阵营.仿佛是文人特有的傲气在作祟,出于对所 ...

  9. 这是网络工程师最详细的必备软件整理,附最新安装包

    鱼乘于水,鸟乘于风,草木乘于时. "鱼是凭借着水的力量才能游动,鸟是凭借风的力量才能飞翔,花草树木是凭借着季节的变化而生长."古人早就告诉过我们,看似独立的个体,也都是借助外力的帮 ...

  10. 测试 软通动力软件测试机试_软通动力软件测试面试题

    软通动力软件测试面试题 软通动力软件测试面试题 1.白箱测试和黑箱测试是什么?什么是回归测试? 回归测试是指软件系统被修改或补充后重新进行的测试,是为了保证对软件所做的修改没有引入新的错误而重新进行的 ...

最新文章

  1. 获得汉字字符串拼音首字母
  2. 事件监听器 java_Java实现一个简单的事件监听器
  3. 为什么lp的最优解是一个概率_什么时候应该用概率图模型、消息传递替代传统组合优化求解器?未来工作?(持续更新)...
  4. oracle存储过程无效字符_Oracle存储过程基础+ 错误代码
  5. 为什么判断 n 是否为质数只需除到开平方根就行了?(直接证明)
  6. 【莫队】区间不同数(金牌导航 莫队-1)
  7. Android之自定义控件入门
  8. install cuda5 on ubuntu12.04
  9. Nginx 系列:Nginx 实践,location 路径匹配
  10. linux python命令无反应_几个无(有)聊(趣)的Linux命令
  11. 云服务器常用端口及其含义
  12. 【中秋快乐】求问meta-learning和few-shot learning的关系是什么?
  13. HDU 4915 Parenthese sequence
  14. 【学习记录贴】#3——校园二维和三维电子地图制作
  15. Java方法重载与方法重写的区别
  16. 【Python】根据经纬度计算距离
  17. html5手机摄像头相册批量,h5调用手机摄像头/相册(示例代码)
  18. 洛谷4173(fft带通配符字符串匹配)
  19. 事故赔付额年降高达7成,所托瑞安打造商用车智能驾驶商业化样本
  20. 微信扫描下载apk解决方案

热门文章

  1. 同样是消息队列,Kafka凭什么速度那么快?
  2. hikari如何切换数据源_如何使用Spring为HikariCP设置数据源?
  3. wangeditor 使用
  4. RabbitMQ的5种队列_订阅模式_入门试炼_第7篇
  5. 玩转 Linux 常用命令
  6. HTTP中GET与POST方法有什么区别
  7. 计算机软考中集成系统,软考中级系统集成项目管理工程师有哪些作用?
  8. websocket 获取连接id_Swoole学习笔记七:搭建WebSocket长连接 之 使用 USER_ID 作为身份凭证...
  9. datagridview选中获取行号_DataGridView控件显示行号的正确代码及分析
  10. 计算机对环境的影响的案例,计算机环境下的呈现方式对学生样例学习的影响