前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >锐捷网络2021秋招笔试题

锐捷网络2021秋招笔试题

作者头像
Jasonangel
发布2021-05-28 10:40:45
6860
发布2021-05-28 10:40:45
举报

来源于读者投稿。

笔试时间:2020.09.24

时长:90分钟

题目:25道题,全是C语言代码题,问输出结果。

总结:时间紧,任务重,硬核。

本文大家可以先收藏,后面再做一做看,锐捷网络出的题目考察知识点很全面。

本系列持续更新,欢迎大家关注并星标我的微信公众号,有求职或者跳槽需要的即可回来复习。

题目

答案在题目开头

1、

代码语言:javascript
复制
str1:
str2:str2
str3:null

第一个,函数内部定义的变量在函数结束时候释放掉了,所以返回会出错,

第二个是str2,

第三个定义是void,没有返回值,打印空,内存非法访问。

代码语言:javascript
复制
#include<stdio.h>

char *getstr1()
{
 char s[]="str1";  //static char s[]="str1";
 return s;
}
char *getstr2()
{
 char *s="str2";
 return s;
}
void getstr3(char *s)
{
 s="str3";
 return;
}

int main()
{
 char *s1,*s2,*s3;
 s1=getstr1();
 s2=getstr2();
 getstr3(s3);
 printf("str1:%s\r\n",s1);
 printf("str2:%s\r\n",s2);
 printf("str3:%s\r\n",s3);
}

2、4 6 1

代码语言:javascript
复制
#include<stdio.h>
#include<string.h>

int main()
{
 char *str="Ruijie";
 
 printf("str1:%d\r\n",sizeof(str));
 printf("str2:%d\r\n",strlen(str));
 printf("str3:%d\r\n",sizeof(*str));
}

3、8 20

代码语言:javascript
复制
#include<stdio.h>

int main()
{
 int x=0,y=0;`
 while(x<15){
         y++;
         x+=++y;
 }
 printf("%d %d",y,x);
}

4、48(考察宏定义的边界效应)

代码语言:javascript
复制
#include<stdio.h>

#define N 3
#define Y(n) ((N+1)*n)

int main()
{
 int z;
 z=2*(N+Y(5+1));
 printf("%d",z);
}

5、0 1

ptr[0]是等于&a[0][0],所以*ptr[0]=a[0][0]

所以最后这个二维数组是 000 100 200

代码语言:javascript
复制
#include<stdio.h>
#include<string.h>

static int arr[3][3]={0};

void init(int (*ptr)[3])
{
 int i=0;
 for(i=0;i<3;i++){
  *(ptr[i])=i;
 }
 return;
}

int main(int argc,char **argv)
{
 init(arr);
 printf("%d,%d\n",arr[0][1],arr[1][0]);
 return 0;
}

6、%s 遇到\0才会截止输出,遇到\0才会截止计算

代码语言:javascript
复制
#include<stdio.h>
#include<string.h>

int main()
{
 char str[]={'o','u','l','d'};
 printf("%d",strlen(str));
 return 0;
}
代码语言:javascript
复制
#include<stdio.h>
#include<string.h>

int main()
{
 char str[]={'o','u','l','d','\0'};
 printf("%d\n",strlen(str));
 printf("%s\n",str);
 
 return 0;
}

7、如果用%s输出,需要注意打印字符串的时候,他认为’\0‘是结束符,所以你不加’\0‘的时候,他可能会打印其他乱七八糟的东西

ABC

ABCABC

4

3

代码语言:javascript
复制
#include<stdio.h>
#include<string.h>

int main()
{
 char a[]="ABC";
 char b[]={'A','B','C'};
 printf("%s\n",a);
 printf("%s\n",b);
 printf("%d\n",sizeof(a));
 printf("%d\n",sizeof(b));
 
 return 0;
}

8、 -1,4294967295

代码语言:javascript
复制
#include<stdio.h>
#include<string.h>

int main()
{
 char a=0xff;
 printf("%d,%u\n",a>>8,a>>8);  //这里的%d   让它变成了int
 return 0;
}

看下面。右移八位全部移走了,然后补了符号位,1111 1111。另外,在内存中,因为是有符号的,所以1111 1111是个负数,负数在内存中是补码的形式存在,所以11111111-1再取反就是真实的数,就是-1。

9、0

代码语言:javascript
复制
#include<stdio.h>
#include<string.h>

int main()
{
 printf("%d\n",~3&(2&(3^4)));  //按位取反  异或 
 return 0;
}

10、80

代码语言:javascript
复制
#include<stdio.h>

int main()
{
 int a[3][4]={{10,20,30,40},{50,60,70,80},{90,91,92,93}};
 int (*p)[4];
 p=a+1;
 printf("%d\n",p[1][-1]);
 return 0;
}

11、25

代码语言:javascript
复制
#include<stdio.h>

int main()
{
 int a[2][3]={{1,3,5},{2,4,6}};
 int m,*ptr;
 
 ptr=&a[0][0];
 m=(*ptr)*(*(ptr+2))*(*(ptr+2));
 
 printf("%d\n",m);
 return 0;
}

12、静态变量全局只初始化一次 m=1,n=1 m=2.n=1

代码语言:javascript
复制
#include<stdio.h>
#include<string.h>

int test()
{
 static int m=0;
 int n=0;
 
 m++;
 n++;
 printf("m=%d,n=%d\n",m,n);
 
 return 0;
}

int main()
{
 test();
 test();
 
 return 0;
}

13、4 2 2(没有break的话会一直向下执行)

代码语言:javascript
复制
#include<stdio.h>

int main()
{
 int a=0,b=0,c=0;
 int i;
 
 for(i=0;i<5;i+=2){
  switch(i){
   case 1:
    a++;
    b++;
    break;
   case 2:
    c++;
    a++;
   case 3:
    c++;
   case 4:
    b++;
   default:
   a++;
   break;
  }
 }
 printf("%d,%d,%d\n",a,b,c);
 
 return 0;
}

14、e

代码语言:javascript
复制
#include<stdio.h>
#include<string.h>

int main()
{
 char a[7]="abcdef",b[4]="ABC";
 strcpy(a,b);
 printf("%c\n",a[4]);
 return 0;
}

15、4 3(逗号运算符)

代码语言:javascript
复制
#include<stdio.h>

int main()
{
 int y=3,x=3,z=1;
 printf("%d,%d\n",(++x,++y),z+2);
 return 0;
}

4 1

代码语言:javascript
复制
#include<stdio.h>
#include<string.h>

int main()
{
 int y=3,x=3,z=1;
 //printf("%d,%d\n",(++x,++y),z+2);
 printf("%d,%d\n",(++x,++y),z++);

 return 0;
}

16、b(ASCII)

代码语言:javascript
复制
#include<stdio.h>
#include<string.h>

int main()
{
 char b='v';
 printf("%C\n",b-20);
 return 0;
}

17、99(ASCII)

代码语言:javascript
复制
#include<stdio.h>
#include<string.h>

int main()
{
 char str[]="abcde";
 char *p;
 p=&str[2];
 printf("%d\n",*p);
 return 0;
}

18、什么情况下会编译通过,运行出错

代码语言:javascript
复制
A、gcc用-Werror选项,程序组译失败。

B、gcc使用-Werror选项,编译正常,程序运行时崩溃。

C、gcc使用-Werror选项,编译正常),程序正常运行,备份数据输出的为随机数,

D、程序正常运行,备份数据输出的为1.

19、以下哪些任务不可以放到中断的上半部执行?

代码语言:javascript
复制
A、时间敏感的任务

B、硬件相关的任务

C、进程通信的任务

D、不可被中断的任务

20、线程

25、如下所示程序,LINE C 和LINE P将会输出什么?

代码语言:javascript
复制
LINE C: value=
LINE P: value=

#indlude <stdio.h>
#indlude <pthread.h>
#include <unistd.h>
#include <sys/wait.h>

int value=0

void *runner(void *param) /* the thread */
{
  value=5;
  pthread_exit(0);
}

int main(void)
{
  pid_t pid;
  pthread_t tid;
  pthread_attr_t attr;

  pid=fork();
  if(pid==0)
  {
  pthread_attr_init(&attr);
  pthread_create(&tid,&attr,runner,NULL);
  pthread_join(tid,NULL);
  printf("LINE c: value=%d\n",value); /*LINE C*/ 
  }
  else if(pid> 0)
  {
  wait(NUL);
  printf("LINE P: value=%d\n",value); /*LINE P*/
  }
  return0;

更多问题请参看以下文章:

嵌入式笔试面试题目系列(汇总)

·················· END ··················

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-03-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 嵌入式Linux系统开发 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题目
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档