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

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这个头文件,问又是否可行?

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

最近的一些校招试题摘录相关推荐

  1. 大众点评网2016校招试题选录

    大众点评网的校招题还真有特点,分四部分,第一部分是行测的数字规律类题目,第二部分是行测的图形规律题,第三部分是C++.Java的基础选择题,第四部分是四个编程题. 题目都有时间限制,第一二部分皆是普通 ...

  2. 【spring相关面试题摘录】

    什么是bean的自动装配,有哪些方式? Spring Boot.Spring MVC 和 Spring 有什么区别 如何重新加载Spring Boot 上的更改,而无需重新启动服务器? Spring ...

  3. CVTE2016校招试题摘选

    今年的题分两部分,时间为晚上7:00-9:30,题目分不定项选择与两道编程题. 下面是我自己抄下来的一部分题,尽飨读者. 1.堆排序属于下面哪种排序方法? A.选择排序 B.插入排序.C.交换排序 D ...

  4. 腾讯2016校招试题----------格雷码的实现

    问题:产生n位元的所有格雷码. 格雷码(Gray Code)是一个数列集合,每个数使用二进位来表示,假设使用n位元来表示每个数字,任两个数之间只有一个位元值不同. 例如以下为3位元的格雷码: 000 ...

  5. Flink【优质】面试题摘录

    一.概念和基础篇 1. 简单介绍一下Flink Flink核心是一个流式的数据流执行引擎,其针对数据流的分布式计算提供了数据分布.数据通信以及容错机制等功能.基于流执行引擎,Flink提供了诸多更高抽 ...

  6. 360笔试——校招试题2

     

  7. BAT 数据披露:110万AI人才缺口,两者矛盾,凉凉了

    人工智能到底有多火? 近日国内首份<BAT人工智能领域人才发展报告>新鲜出炉,此次报告是针对国内人工智能领域的人才争夺情况进行了梳理.并把研究对象锁定在BAT三大巨头的身上. 来源:< ...

  8. 一个语文老师的日记作文

    有一天,我在班里表扬了一位同学,说他成语"青翠欲滴"使用得好.下一次交上来的作文,几乎每个人都用了"青翠欲滴"."教室的一角有盆青翠欲滴的花 &quo ...

  9. (征文模板参考)xx技能树/职业路线评测-xxxxxxxx

    [有奖征文]写技能树评测,送CSDN大礼包.周边礼品及现金奖励! 技能树新增了学习门户.增加了学习计划.勋章展示.技能树分享,还上线了 WAP 端门户页,特发起「用户评测」征文活动,希望您在使用产品的 ...

最新文章

  1. (C++)小明种苹果(续)
  2. Autodesk布道GIS新理念
  3. mysql二进制安装
  4. 想获得腾讯发行机会?来“腾讯GAD•游戏创新大赛”
  5. HTML5 Inline SVG
  6. mysql中创建表时提示 no database selected
  7. 机器学习实战(九)K-means(K-均值)
  8. 创业一定要做自己“喜欢”并且有“优势”的事情
  9. 苹果发布会不够酷?库克又送来了 iOS 12.2!
  10. 怎么打断点_孩子注意力不集中怎么办?7招提升儿童专注力,方法简单效果好...
  11. javascript 继承、子类化
  12. 聊天机器人语料批量处理-自动提取关键词并自动写入文件
  13. Django book 2.0
  14. 左拥快手右抱抖音,丁磊直播究竟图什么?
  15. php实例精通txt下载,PHP实例精通(1碟)
  16. 伦斯勒理工学院计算机科学专业强吗,2020年伦斯勒理工学院排名TFE Times美国最佳计算机科学硕士专业排名第59...
  17. 2021(上海)第34届国际创业投资连锁加盟展览会
  18. 错误:类 SubClass 是公共的, 应在名为 SubClass.java 的文件中声明
  19. Typecho Joe 主题 添加访目录
  20. AVI视频封装格式(阅读笔记)

热门文章

  1. kylinH5框架之项目开发调试
  2. vue/return-in-computed-property Enforce that a return statement is present in computed property
  3. AES加密算法的学习笔记
  4. iOS NSMutableAttributedString常用方法总结
  5. 十一、jQuery的基本用法
  6. ES6学习笔记(二十二)ArrayBuffer
  7. JS展示预览PDF。
  8. AngularJS(1)——入门学习
  9. 夺命雷公狗---微信开发39----微信语言识别接口1
  10. LabVIEW设计模式系列——移位寄存器