最近的一些校招试题摘录

最近又参加了一些校招,真是马不停蹄啊。多参加考试是好的,可以不断发现一些新的问题。下面摘录一些我不太会的题。

1.volatile的作用是什么?

答案:volatile是类型修饰符,用它修饰的类型变量可能会被编译器未知的因素更改,比如操作系统、硬件、线程等。遇到这个关键字修饰的变量,编译器对访问该变量的代码就不再进行优化,从而可以提供对特殊地址的稳定访问。

参考文献:

《C/C++ volatile让你看的更明白》

《讲讲C++中的volatile关键字》


2.位运算,给定一个整形变量a,写两段代码,第一个设置a的bit 3为1,第二个清除a的bit 3为0,在以上两操作中要求保持其它位不变。

答案:

#define  BIT3 (0x1<<3)
static int a;
void set_bit3()
{a |= BIT3;
}
void claer_bit3()
{a &= ~BIT3;
}

3.TCP/IP协议中,端口号的作用?

答案:

参考《 TCP/IP协议号和端口 》,《端口号的作用及常见端口号用途说明》

端口号的作用,主要是区分服务类别和在同一时间进行多个会话。

举例来说,有主机A需要对外提供FTP和WWW两种服务,如果没有端口号存在的 话,这两种服务是无法区分的。实际上,当网络上某主机B需要访问A的FTP服务时,就要指定目的端口号为21;当需要访问A的WWW服务时,则需要将目的 端口号设为80,这时A根据B访问的端口号,就可以区分B的两种不同请求。这就是端口号区分服务类别的作用。
再举个例子:主机A需要同时下载网络上某FTP服务器B上的两个文件,那么A需要 与B同时建立两个会话,而这两个传输会话就是靠源端口号来区分的。在这种情况下如果没有源端口号的概念,那么A就无法区分B传回的数据究竟是属于哪个会话,属于哪个文件。而实际上的通信过程是,A使用本机的1025号端口请求B的21号端口上的文件1,同时又使用1026号端口请求文件2。对于返回的数 据,发现是传回给1025号端口的,就认为是属于文件1;传回给1026号端口的,则认为是属于文件2。这就是端口号区分多个会话的作用。
TCP 21端口:FTP 文件传输服务
UDP 53端口:DNS 域名解析服务
TCP 80端口:HTTP 超文本传输服务
TCP 443端口:HTTPS 加密的超文本传输服务

4.当我们在浏览器中键入“facebook.com”时,然后浏览器就显示百度主页,请问在这个过程中,发生了什么?

答案: 

参考《百度面试题:从输入url到显示网页,后台发生了什么?》

基本步骤:1).在浏览器中键入域名   2).浏览器通过DNS查找域名的IP地址   3).浏览器给web服务器发送一个HTTP请求  4). facebook服务的301永久重定向响应 

5). 浏览器跟踪重定向地址 6). 服务器“处理”请求   7).服务器发回一个HTML响应  8).浏览器开始显示HTML 


5. 如下:

#include <iostream>
using namespace std;
int main()
{unsigned short a = 10;printf("%u\n", ~a);printf("%d\n", ~a);unsigned char b = 125;printf("%d", b);return 0;
}
请问输出结果是___________________

答案:

                   4294967285
                    -11
                   125
解析:short的字节数是2,也就是16位,当a=10时,二进制表示:0000 0000 0000 1010,~a若是表示为%u,即unsigned int ,由于

它的字节数是4,所以共32位。所以先将a补成32位,即0000 0000 0000 0000 0000 0000 0000 1010,然后取反,~a即表示为:1111 1111 1111 1111 1111 1111 1111  0101

由于是unsigned,所以首位是1,不表示符号位,直接计算就知道:2^31+2^30+.......+2^4+2^2+1=4294967285.

但是如果是%d呢?则首位表示符号位,代表是负数,将其表示为10进制,方法是:1.二进制减1,然后取反,得:0000 0000 0000 0000 0000 0000 0000 1011,所以应该是-11

而char同理,直接转为int,由于unsigned char为1个字节,表示范围:0——255,125在其中,所以直接转为int,仍然是125。

那么:如果上题附加:

#include <iostream>
using namespace std;int main()
{unsigned char b = 259;printf("%d\n", b);unsigned char i = -1;int p = (int)i;printf("p=%d\n", p);char j = -1;int q = (int)j;printf("q=%d\n",q);return 0;
}
答案:

                          3

                      p=255
                        q=-1
.解析:

1)、首先259转为二进制,即为:1 0000 0011,然后由于unsigned char为1个字节,8位,故要截去最前面的1,剩下的就是0000 0011,即为3.或者也可以从另外一个角度来看:unsigened char的范围是0-255,259大于255,所以溢出,反向循环过去,为259-255-1=3 .(PS:256-0,257-1,258-2,259-3)。


2)、-1的二进制表示为1111 1111(取8位),由于-1赋给unsigned char,所以首位不是符号位,因此转化为十进制,前面补0:00000000 00000000 00000000 11111111,即为255,或者unsigned char的范围:0-255,因此-1溢出,变为255.


3)、-1的二进制表示为1111 1111(取8位),由于-1赋给char,所以首位是符号位,因此转化为十进制,前面补1:11111111 11111111 11111111 11111111,即为-1,或者char的范围:-128-127,因此-1没有溢出,因此还是-1.


6.  寄存器变量的作用?

答:当对一个变量频繁被读写时,需要反复访问内存,从而花费大量的存取时间。为此,C语言提供了一种变量,即寄存器变量。这种变量存放在CPU的寄存器中,使用时,不需要访问内存,而直接从寄存器中读写,从而提高效率。寄存器变量的说明符是register。对于循环次数较多的循环控制变量及循环体内反复使用的变量均可定义为寄存器变量,而循环计数是应用寄存器变量的最好候选者。 

参考:《 c语言性能优化—使用寄存器变量》  《静态变量和寄存器变量》

7.

有3个文件,A,B,C,其中A定义了一个全局变量,B,C都包含了A这个头文件,问是否可行?

若改为其中A定义了一个静态全局变量,B,C都包含了A这个头文件,问又是否可行?

答案:第一个可行,第二个不可行。可以参考《静态变量和寄存器变量》。主要原因是第一个默认全局变量的作用域是整个源程序。 当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。 而第二个静态全局变量则限制了其作用域, 即只在定义该变量的源文件内有效, 在同一源程序的其它源文件中不能使用它。



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/259133.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

yii2中的rules验证规则

2019独角兽企业重金招聘Python工程师标准>>> Rules验证规则&#xff1a;required : 必须值验证属性||CRequiredValidator 的别名, 确保了特性不为空.[[字段名],required,requiredValue>必填值,message>提示信息];email : 邮箱验证||CEmailValidator 的别名,确…

weblogic数据源配置的问题,weblogic密码破解

weblogic 报错 please increase XXX,得知是连接池出了问题&#xff0c;查看weblogic配置&#xff0c;发现没有设置超时 查看oracle 当前session&#xff0c;可以看到连接的机器&#xff0c;用户&#xff0c;当前执行的sqlid select * from v$session; select v$sql where sql_i…

自己写的简易多任务系统---基于pic18fxxx

这个工程只是实现了最简单的OS任务调度&#xff0c;对于理解任务调度有点帮助。其实就是从UC/OS-II里面摘出来的&#xff0c;没有原来的那么复杂&#xff0c;很精简&#xff0c;但道理上是一样的。工程中的CPU.C文件时直接拿Nathan Brown写好的&#xff0c;因为关于PIC任务切换…

python语言整数类型-Python 的内置数值类型

Python 是一种敏捷的、动态类型化的、极富表现力的开源编程语言&#xff0c;可以被自由地安装到多种平台上。Python 代码是被解释的。如果您对编辑、构建和执行循环较为熟悉&#xff0c;则 Python 代码对您来说更简单。但是&#xff0c;请不要搞错&#xff1a;Python 器可以是简…

滴滴出行2016校招编程题

1. 给定一个m*n的数组&#xff08;m,n>2,数组值>0&#xff09;&#xff0c;要求选出和最大的子2*2数组。例如&#xff1a; 1 2 3 4 5 6 7 8 9 显然和最大的2*2子数组是5 6;8 9.下面完成这个功能。 Input: &#xff08;m*n的数组&#xff09; 1 2 3 ; 4 5 6 ; 7 8 9 …

每天一个linux命令(22):find 命令的参数详解

find一些常用参数的一些常用实例和一些具体用法和注意事项。 1&#xff0e;使用name选项&#xff1a; 文件名选项是find命令最常用的选项&#xff0c;要么单独使用该选项&#xff0c;要么和其他选项一起使用。 可以使用某种文件名模式来匹配文件&#xff0c;记住要用引号将文件…

(WPF) DataGrid之绑定

通过ObservableCollection 绑定到 DataGrid. 1. 前台Xaml. <DataGrid x:Name"dgMeasurements"HorizontalAlignment"Left"Margin"10,69,0,10"ItemsSource"{Binding}"AutoGenerateColumns"False"Width"370">…

程序=数据结构+算法

这句名言&#xff0c;我现在品来很有感觉&#xff0c;看看uc/os-II里面那些就绪表、查找最高优先级任务等等&#xff0c;算法设计的非常巧妙&#xff0c;整个OS都是围绕着OS_TCB来运转的&#xff0c;任务需要通信&#xff0c;那就在建立个OS_EVENT&#xff0c;通过.*OSTCBEvent…

去哪笔试两题

1&#xff0c;a是一个有序数组&#xff0c;但经过向右移动数位&#xff0c;现在预在a中查找元素key的位置&#xff0c;如不存在&#xff0c;返回0。例如a[5,6.7.8,1,2,3,4]. 实现&#xff1a; 1 #quna12 def findPos(a,key):3 mina[0];4 for i in range(len(a)):5 …

MySQL5.6主从复制搭建基于日志(binlog)

什么是MySQL主从复制 简单来说&#xff0c;就是保证主SQL&#xff08;Master&#xff09;和从SQL&#xff08;Slave&#xff09;的数据是一致性的&#xff0c;向Master插入数据后&#xff0c;Slave会自动从Master把修改的数据同步过来&#xff08;有一定的延迟&#xff09;&…

opengl 如何加阴影_动漫嘴唇厚涂如何绘制?厚涂嘴唇正确画法

动漫嘴唇厚涂如何绘制&#xff1f;厚涂嘴唇正确画法&#xff01;嘴巴怎么画&#xff1f;画嘴巴真的很考验一个画师功力&#xff0c;好看的嘴巴生动而丰满&#xff0c;可以给整幅画作添上亮点&#xff0c;而画的不好的嘴巴呢&#xff0c;就容易把画面整体的风格打破。那么零基础…

位运算

我们复习一下位运算&#xff0c;这里介绍一下(& ,|, ^)的用途。 按位与 ------------& 规则&#xff1a; 0&00 0&10 1&0 0 1&11 &#xff08; 两位为1&#xff0c;才是1&#xff09;作用&#xff1a; 清零与保位。通常用来将特定的位清零&…

详解JMeter函数和变量

详解JMeter函数和变量&#xff08;1&#xff09; JMeter函数可以被认为是某种特殊的变量&#xff0c;它们可以被采样器或者其他测试元件所引用。函数调用的语法如下&#xff1a; ${__functionName(var1,var2,var3)} 其中&#xff0c;__functionName匹配被调用的函数名称。用圆括…

信号反射

突然想起来前几天调试CAN通讯的时候出现的BUG&#xff0c;那就是传说中的“信号反射”&#xff0c;也有称“振铃”的。错误刚出现的时候没有意识过来&#xff0c;还说怎么出现重复出现这么多条消息呢&#xff1f;光在书本上看到过这个概念&#xff0c;没有“实物”与之对应起来…

hdu 5199 map或二分或哈希

题目描述&#xff1a;给出n棵树的高度&#xff0c;每棵树上都站着一只鸟&#xff0c;枪手Jack站在最左边那棵树的左边对鸟进行射击&#xff0c;当Jack在高度为H的地方向右发射一颗子弹的时候&#xff0c;高度为H的树上的鸟儿就会掉落&#xff08;注&#xff1a;其他树上的鸟儿不…

数字电路实验怎么接线视频讲解_家庭影院中音箱、功放、投影机、4K播放机不知道怎么连接?手把手教你...

家庭影院中音箱、功放、投影机、4K播放机不知道怎么连接&#xff1f;手把手教你有不少用户收到从家庭影院器材之后&#xff0c;表示完全不会连接。翻看说明书也觉得头大&#xff0c;知识太多&#xff0c;然而却很难找到要点。今天主要跟大家讲讲如何连接音箱、功放、投影机和影…

.NET开发过程中的全文索引使用技巧之Solr

前言&#xff1a;相信许多人都听说过.net开发过程中基于Lucene.net实现的全文索引&#xff0c;而Solr是一个高性能&#xff0c;基于Lucene的全文搜索服务器。同时对其进行了扩展&#xff0c;提供了比Lucene更为丰富的查询语言&#xff0c;同时实现了可配置、可扩展并对查询性能…

关于字符的读入与输出

在笔试中&#xff0c;经常见到字符的读入与输出的题目。逆序打印输入时最常见、最基本的考题&#xff0c;复杂点的就是统计单词、逆序打印单词之类的。难点是如何判断输入的结束&#xff0c;如果用getchar函数&#xff0c;其输入结束符为EOF&#xff08;其打印值为-1&#xff0…

修正discuz发帖首次换行无效的问题

找遍了百度和google都没有解决方案&#xff0c;连discuz官方都没有出来解决&#xff0c;至今其官网仍有这个问题。 那就自己动手解决吧&#xff0c;顺手打个补丁。虽然走了小路&#xff0c;但是能解决问题。 解决方案&#xff1a;修改static/js/bbcode.js 找到 html2bbcode()方…

auto.js停止所有线程_Java线程与并发编程实践:深入理解volatile和final变量

同步有两种属性&#xff1a;互斥性和可见性。synchronized关键字与两者都有关系。Java同时也提供了一种更弱的、仅仅包含可见性的同步形式&#xff0c;并且只以volatile关键字关联。假设你自己设计了一个停止线程的机制(因为无法使用Thread不安全的stop()方法))。清单1中Thread…