软件工程师笔试题
软件笔试题
一、问答题
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)
此时已无其他线索,得到最终答案。
上一篇: android 悬浮窗口 权限 (ACTION_MANAGE_OVERLAY_PERMISSION)
下一篇: java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener
推荐阅读
-
韩顺平_PHP软件工程师玩转算法公开课(第一季)01_算法重要性_五子棋算法_汉诺塔_回溯算法_学习笔记_源代码图解_PPT文档整理
-
CCF计算机软件能力认证 试题编号: 201909-2 试题名称: 小明种苹果(续)
-
软件开发需要学什么基础知识(软件工程师必备基础知识 )
-
软件开发需要学什么基础知识(软件工程师必备基础知识 )
-
PHP面试题2019年百度工程师面试题和答案解析
-
分析经典Python开发工程师面试题
-
Python工程师面试题 与Python Web相关
-
Python工程师面试题 与Python基础语法相关
-
Fused(双重曝光相机)软件如何用涂抹笔刷来处理图片图文教程
-
全球十大收入最高职业 牙医和注会上榜,软件工程师排第六位