软件工程师笔试题

软件笔试题
一、问答题
1、什么是子网掩码、什么是网关。
网关(Gateway)又称网间连接器、协议转换器。网关在网络层以上实现网络互连,是最复杂的网络互连设备,仅用于两个高层协议不同的网络互连。网关既可以用于广域网互连,也可以用于局域网互连。网关是一种充当转换重任的计算机系统或设备。使用在不同的通信协议、数据格式或语言,甚至体系结构完全不同的两种系统之间,网关是一个翻译器。与网桥只是简单地传达信息不同,网关对收到的信息要重新打包,以适应目的系统的需求。
子网掩码(subnet mask)又叫网络掩码、地址掩码、子网络遮罩,它是一种用来指明一个IP地址的哪些位标识的是主机所在的子网,以及哪些位标识的是主机的位掩码。子网掩码不能单独存在,它必须结合IP地址一起使用。子网掩码只有一个作用,就是将某个IP地址划分成网络地址和主机地址两部分。 子网掩码是一个32位地址,用于屏蔽IP地址的一部分以区别网络标识和主机标识,并说明该IP地址是在局域网上,还是在远程网上。

2、TCP/IP通信建立的过程怎样,TCP和UDP有什么区别。
TCP: 可靠传输协议,速度慢,一般用于文件,与控制指令的传输。
UDP: 不可靠传输协议,速度快,一般用于多媒体数据帧的传输 (视频,音频)

3、用什么函数开启新进程、线程(不限语言)
进程 fork()
线程 pthread_create(pthread_t *tidp,const pthread_attr_t attr,(void)(start_rtn)(void),void *arg);

4、找出一个整数数组中,第二小的数(不限语言)

int find_2_min(int *arr,int nums)
{
	int i=0;
	int min = 65535;
	int min_ = 65535;

	for(i=1;i<nums;i++)
	{
		if(arr[i]<min)
		{
			min_ = min;
			min = arr[i];
		}
		else if(arr[i]<min_ && arr[i] != min)
			min_ = arr[i];
	}

	printf("min:%d,min_:%d\n",min,min_);

	return min_;
}

5、const 有什么用途?(请至少说明两种)
只读
1). 关键字const的作用是为给读你代码的人传达非常有用的信息,实际上,声明一个参数为常量是为了告诉了用户这个参数的应用目的。如果你曾花很多时间清理其它人留下的垃圾,你就会很快学会感谢这点多余的信息。(当然,懂得用const的程序员很少会留下的垃圾让别人来清理的。)
2). 通过给优化器一些附加的信息,使用关键字const也许能产生更紧凑的代码。
3). 合理地使用关键字const可以使编译器很自然地保护那些不希望被改变的参数,防止其被无意的代码修改。简而言之,这样可以减少bug的出现。

6、程序的局部变量存在于( 栈 )中,全局变量存在于( 静态区 )中,动态申请数据存在于( 堆 )中。
7、 简述你所开发过自定义控件, 谈谈它的功能与基本实现.若没有,请简要描述下你所接触的第三方控件实现

8、写一函数int fun(char *p)推断一字符串是否为回文(对称),是返回1,不是返回0,出错返回-1.
int fun(char *p)
{
if(p==NULL)
return -1;
else
{
int length = 0;
int i = 0;
int judge = 1;
length = strlen§;
for(i=0;i <length/2; i++)
{
if(p[i]!=p[length-1-i])
judge = 0; break;
}
if(judge == 0)
return 0;
else
return 1;
}
}

9、产生死锁的原因主要是?
1)、系统资源不足 ; 2)、进程运行推进的顺序不合适 3)、资源分配不当等

补充死锁的四个必要条件:1 互斥条件:一个资源每次只能被一个进程使用
2 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放
3 不剥夺条件:进程已获得的资源,在未使用完之前,不能强行剥夺
4 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系

10、进程间通信有哪些?
无名管道、有名管道、消息队列、共享内存、信号量、信号

11、软件开发一般有哪几个阶段
问题的定义及规划、软件需求分析 、软件设计、 代码编写 、 软件测试

12、二级指针怎么声明(不限语言)
int k,*p,**pp;
k=8;p=&k;pp=&p

13、linux基础命令
(1)获取kernel版本信息的命令是什么?
umane -a / cat /proc/version / lsb_release -a

(2)新建文件夹命令是什么?
mdkir

(3)查找文件的命令是什么?
find

(4)拷贝的命令是什么?
cp
14、当你遇到一个开发难题的时候,你会通过哪些途径寻求解决方法,说明下原因。

二、不定项选择题
1、 面向对象的语言具有继承性、多态性和( A ) 。
A) 封装性 B) 拆箱性 C) 封闭性 D) 逻辑性

2、构造函数何时被调用?( A )
A)创建对象时 B)类定义时
C)使用对象的方法时 D) 使用对象的属性时

3、下列选项中,( C )是引用类型。
A)enum类型 B)struct类型
C)string类型 D)int类型

4、下列关于构造函数的描述正确的是( C )
A)构造函数可以声明返回类型。
B)构造函数不可以用private修饰
C)构造函数必须与类名相同
D)构造函数不能带参数

5、有两个线程,最初 n=0,一个线程执行 n++; n++; 另一个执行 n+=2; 问,最后可能的 n 值?( BCD )
A. 1
B. 2
C. 3
D. 4
P.S:都不是原子操作,所以都有可能被中断

6、进程进入等待状态有哪几种方式?( D)
A. CPU调度给优先级更高的线程
B. 阻塞的线程获得资源或者信号
C. 在时间片轮转的情况下,如果时间片到了
D. 获得spinlock未果
P.S ABC都是就绪态
7、递归函数最终会结束,那么这个函数一定?( B )
A. 使用了局部变量
B. 有一个分支不调用自身
C. 使用了全局变量或者使用了一个或多个参数
D. 没有循环调用

8、如果进栈序列为e1,e2,e3,e4,e5,则可能的出栈序列是( )
A、e3、e1、e4、e2、e5
A、e5、e2、e4、e3、e1
A、e3、e4、e1、e2、e5
D、以上都有可能
我觉得这道题应该是出错了,没有正确答案

三、思维题:
1、阐述下对目前新型技术的看法和理解,例如人工智能、大数据、5G,或者论坛等等(任何新型科技皆可,发散性思维阐述下)。

四、逻辑推理题:
1、如果你有无穷多的水,一个3公升的提捅,一个5公升的提捅,两只提捅形状上下都不均匀,问你如何才能准确称出4公升的水?

先打满5公升的提桶,然后把空的3公升提桶倒满,再把3公升提桶清空装5公升提桶剩下2公升水,
再次把5公升提桶装满,然后往3公升提桶倒水把桶装满,此时5公升桶里即有4公升的水。

2、教授选出两个从2到9的数,把它们的和告诉学生甲,把它们的积告诉学生乙,让他们轮流猜这两个数
甲说:“我猜不出”
乙说:“我猜不出”
甲说:“我猜到了”
乙说:“我也猜到了”
问这两个数是多少

3,4 4,6

思路,先取出2~9之间积可能重复的两个数的组合,(2,6)(2,9) (3,4) (3,6) (3,8)
(4,6)
当甲说他猜到了,证明排除和相同的组合,剩下(2,6)(3,4)(3,6)(4,6)
当乙猜到了,排除乘积相同的,剩下(3,6)(4,6)
此时已无其他线索,得到最终答案。

  • 7
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值