知名企业招聘软件工程师的C语言笔试题和面试题答案

Python025

知名企业招聘软件工程师的C语言笔试题和面试题答案,第1张

C语言笔试题(1)

第1题:完成文件的拷贝,srcFileName为源文件名,dstFileName 为目标文件名。

int copy_file(const char *srcFileName, const char *dstFileName)

第2题:设有文件a.file, 请写出程序在文件的开头插入 字符串 “ file start: ”

第3题:

已知

union un {

short s

char a[3]

}

求sizeof(union un)?

第4题:

请描述以下代码中的p,

char(*(*p())[])(int, void (*)())

第5题:

已知

union un {

short s

char a[3]

}

求sizeof(union un)?

C语言笔试题(2)

第1题:已知 char a[] = “abc\0efg”, 求sizeof(a) 和 strlen(a)

第2题:1, 写程序完成M进制转N进制,M、N为1~10之间。

mton(const char* mNum, int m, char *nNum, int n)

第3题:完成16进制字符串相加,返回相加后的16进制字符串。

char* sum_str16(const char* str1, const char* str2)

第4题:完成strlen函数,要求除参数外,不能使用变量和库函数。

第5题:用链表完成结点的添加、删除操作。

typedef struct student

{

int studentNum,

struct student *next

}STU

C语言笔试题(3)

第1题:两个字符串,s,t把t字符串插入到s字符串中,s字符串有足够的空间存放t字符串

第2题:printf (“%d%d\n”,++n, power(2,n))其中power(2,n)为实现一定功能的函数 如 2^n 。请问这种表示方法有什么潜在的问题?

第3题:printf (s)

请问这样的语句有没有问题?(s为一指向有效字符串的指针)

第4题:两段代码共存于一个文件,编译时有选择的编译其中的一部分,请问如何实现?

第5题:数据结构指针传给函数,函数能访问数据单元,但不能修改实际的内容,如何实现?

C语言笔试题(4)

第1题:两个字符串,s,t把t字符串插入到s字符串中,s字符串有足够的空间存放t字符串

第2题:char *a = “hello”

char *b = “hello”

if(a= =b)

printf(“YES”)

else

printf(“NO”)

第3题:简述stack frame 的含义

第4题:printf (“%d%d\n”,++n, power(2,n))其中power(2,n)为实现一定功能的函数 如 2^n 。请问这种表示方法有什么潜在的问题?

第5题:printf (s)

请问这样的语句有没有问题?(s为一指向有效字符串的指针)

C语言笔试题(5)

第1题:在头文件中定义静态变量,可能产生什么问题?

第2题:malloc()与 calloc()的区别?

第3题:寄存器变量可不可以访问其地址?可否是全局变量?在什么场合使用寄存器变量?

第4题:“\n” ‘\n’ 的区别?

第5题:#include “stdio.h”

int main()

{

int a

int *p

p = &a

*p = 0×500

a = (int )(*(&p))

a = (int )(&(*p))

if(a == (int)p)

printf(“equal !\n”)

else

printf(“not equal !\n”)

}

请问本程序的输出显示是什么?

C/C++语言应用是非常广泛的,那么学习C/C++能用来干什么呢?

1. 实验室开发

不敢说C++是世界上最好的语言,但C++基本是工科生中的大语言。

都说C++兼具面向过程以及面向对象的特性,既拥有比较优秀的运行速度,又有良好的大型项目开发能力,那简直可以制霸高校实验室了。

2. 后端开发

主流的后端开发语言就那么几种,以Java、C++领衔,Python和Go紧跟其后。

3. 游戏开发

掌握了C++基本语法之后,开发游戏也依然是一个不错的选择,目前工业级别的3D游戏引擎仍然是用C或C++编写的。

虽然以个人能力无法去完成一个庞大的网络游戏,但是从简单开始,编写一些小游戏,然后逐渐深入,循序渐进并最终加入大型游戏开发团队还是非常好的一个选择。与之相应的就业岗位主要有游戏开发工程师、游戏引擎架构工程师等。

4. 客户端开发

毕竟C++已经是一个很成熟的语言了,所以除了后端开发其实它还有很多其它的开发岗位可以选择。自然而然的,就是客户端开发了。

相信大多数学C++的同学都用过C++写桌面软件吧。那时候估计还是用MFC,照着代码书上敲一遍就能写一个比较简单的界面了。所以如果不想做后端,完全可以靠C++找一份客户端开发的工作。做客户端同样也需要扎实的编程基础和计算机理论基础,同时可能还要熟悉Windows/C++编译链接机制、QT客户端开发技术体系、Windows消息机制等技术。

所以,假如你学的是C++,同时也不在乎业内莫名其名的岗位歧视链的话,找一个客户端开发的工作也是非常不错的。只不过相较于后端开发,你可能需要重新审视客户端这个角色。

5. 多媒体开发

目前多媒体技术同样渗入到人们的日常生活中,音视频已经成为人们获取信息的一个非常重要的手段。音视频在传输过程中都是经过压缩并且按照一定规则打包过的。视频的编码技术从最开始的H.261到如今的H.265,经历了30多年的发展,而且实现代码全部是由C或C++实现。

最新的HEVC编码标准就是由C++代码实现,对此感兴趣的话在学完C++语法后,可以去ITU(国际电信联盟)官网去下载源码查看。与之相应的就业岗位有图像算法工程师、视频编码研发工程师、音视频转码工程师等。

6. 嵌入式开发

上面几种岗位选择都是偏软件方方向的,而C/C++还有一类非常大的就业方向,就是去做嵌入式。嵌入式本身可能是偏硬件一点,但是现在做个什么事,都是软硬不分家的。

嵌入式的开发同样也会涉及到网络编程、并发编程等方面。通俗点解释可能就是,嵌入式代码是运行在别的小系统上,而不是传统意义的计算机上。这个方向除了需要编程能力,还需要基本的电路理论素养。

一般招聘嵌入式开发岗的公司大多是以硬件产品为主的互联网+公司,比如小米、华为等。进去公司很多都是在做物联网相关的工作,毕竟这是热点。当然也会有其它的业务方向,例如芯片、机器人等。

7. 人工智能

人工智能、机器学习等方向也少不了C或C++语言的身影。

需要强调的是虽然C++语言可以从事的方向非常广泛,但是仅仅掌握C++语法是远远不够的,上述的应用领域C++语言是基础,进入这些领域还需要进一步深入系统学习相关领域的知识以及去接触真实企业项目的内容。

嵌入式软件开发:例如单片机,dsp,arm等;基于嵌入式操作系统的应用软件,驱动程序;基于大型服务的底层任务,如相应的协议栈。

ios手机app的开发,安卓app的开发都用c了

一般企业岗位为嵌入式软件工程师,驱动工程师,软件工程师等相关职位

你所学的就已经是偏向嵌入式开发了,不过从你专业来看,建议向嵌入式软件开发.因为硬件开发需要专业知识太高.

嵌入式软件开发重点中的重点就是学好C语言.C的灵活,和全面的内存管理使得C语言永远脱离不了底层控制的开发.数据结构和算法适当看下,现在你如果直接找底层驱动类开发的工作,基本上是很困难.现在嵌入式方向用到的高深算法基本没有(由于在大部分嵌入式开发中,CPU和内存很难达到目前计算机的程度,所以高深算法用不到太多).

剩下的就多看看操作系统,了解操作系统对今后的工作很有帮助.建议学习下LINUX,多了解目前开发主要应用的一些OS系统(有的需要多任务实时操作系统,有的是单任务操作系统,种类很多),再有就是多熟悉各操作系统下的编译环境.

再有,要学习得非常透彻的就是:要了解计算机的内存分配,要细化的来学习.在嵌入式系统中,内存是很金贵的,在有限内存中,做到不浪费,不增加内存是个难题.所以,这个是很重要的.

做到以上你就可以放心大胆的去找嵌入式软件开发的相关工作了.

另外补充下:不是说学习了C++和JAVA就能从事软件开发工作,软件开发工作多方向,学了这2个,也就是能做应用软件.控制类的是做不来的.何去何从,自己考虑吧.

PS:看到"貊氏游魂"仁兄的说法真好笑,既然知道自己是初学者就别对他人说:如果想用C找工作,一般是在说笑.我觉得你在说笑.就目前软件开发行业信息,全世界软件开发的60%大多是嵌入式开发,做嵌入式开发不用C你用JAVA试下.

学会你那3种多说做做应用.你说的高手是做什么的?如果真对你说出这样的话,那么他肯定不是高手.另外说下,软件开发做应用只是很小的一方面.别把软件开发视作想当然.应用软件并不代表整个软件开发.