张壁锦IT笔试面试技术题分享会ppt.ppt

上传人:本田雅阁 文档编号:2689616 上传时间:2019-05-05 格式:PPT 页数:22 大小:110.01KB
返回 下载 相关 举报
张壁锦IT笔试面试技术题分享会ppt.ppt_第1页
第1页 / 共22页
张壁锦IT笔试面试技术题分享会ppt.ppt_第2页
第2页 / 共22页
张壁锦IT笔试面试技术题分享会ppt.ppt_第3页
第3页 / 共22页
张壁锦IT笔试面试技术题分享会ppt.ppt_第4页
第4页 / 共22页
张壁锦IT笔试面试技术题分享会ppt.ppt_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《张壁锦IT笔试面试技术题分享会ppt.ppt》由会员分享,可在线阅读,更多相关《张壁锦IT笔试面试技术题分享会ppt.ppt(22页珍藏版)》请在三一文库上搜索。

1、笔试、面试经历交流会,-张壁锦,笔试题目,行测逻辑题 基础知识点考查题 编码题 逆天的题目,基础知识点考查题,指针和引用的关系 Const Volition Static Extern c 内联函数和宏定义,指针和引用的区别?,1、从现象上看:指针在运行时可以改变其所指向的值,而引用一旦和某个对象绑定后就不再改变。 2、从内存分配上看:程序为指针变量分配内存区域,而引用不分配内存区域。 3、从编译上看:程序在编译时分别将指针和引用添加到符号表上,符号表上记录的是变量名及变量所对应地址。指针变量在符号表上对应的地址值为指针变量的地址值,而引用在符号表上对应的地址值为引用对象的地址值。符号表生成后

2、就不会再改,因此指针可以改变指向的对象(指针变量中的值可以改),而引用对象不能改。 引用:一个变量的别名,为什么引入别名呢?原因是我们想定义一个变量,他共享另一个变量的内存空间,使用别名无疑是一个好的选择。变量是什么?是一个内存空间的名字,如果我们给这个内存空间在起另外一个名字,那就是能够共享这个内存了,引用(别名)的由此而来。 指针:指向另一个内存空间的变量,我们可以通过它来索引另一个内存空间的内容,本身有自己的内存空间。,Const(只读),const修饰符可以把对象转变成常数对象,意思就是说利用const进行修饰的变量的值在程序的任意位置将不能再被修改,就如同常数一样使用! 在C语言中,

3、const的意思是“一个不能被改变的普通变量”,它总是占用存储空间而且它的名字是全局的。C编译器不能把const堪称一个编译器间的常量。所以在C中你可以这么写: const int bufsize;/不赋值。 但不能这么写: cosnt bufsize = 100; char bufbufsize; /因为bufsize不是常量。 但是在C+里,上面两种情况正好反过来。在C+里const修改的量表示常量,必须在初始化时赋值,并且可以作为数据的维数,堆与栈的区别,heap area存放程序的动态数据 stack area存放程序的局部数据 1、栈区(stack) 由编译器自动分配释放 ,存放函数

4、的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。地址是由高向低减少的 2、堆区(heap) 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。地址是由低向高增长的,Extern “C”是由提供的一个连接交换指定符号,用于告诉这段代码是函数。这是因为C+编译后库中函数名会变得很长,与C生成的不一致,造成不能直接调用C函数,加上extren “c”后,C+就能直接调用C函数了。 Extern “C”主要使用正规DLL函数的引用和导出 和 在C+包含C函数或C头文件时使用。使用时在前面加上extern “c”

5、关键字即可 extern是C/C+语言中表明函数和全局变量作用范围(可见性)的关键字,该关键字告诉编译器,其声明的函数和变量可以在本模块或其它模块中使用。记住,下列语句: extern int a; 仅仅是一个变量的声明,其并不是在定义变量a,并未为a分配内存空间。变量a在所有模块中作为一种全局变量只能被定义一次,否则会出现连接错误。 通常,在模块的头文件中对本模块提供给其它模块引用的函数和全局变量以关键字extern声明。例如,如果模块B欲引用该模块A中定义的全局变量和函数时只需包含模块A的头文件即可。这样,模块B中调用模块A中的函数时,在编译阶段,模块B虽然找不到该函数,但是并不会报错;它

6、会在连接阶段中从模块A编译生成的目标代码中找到此函数。,static关键字,在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在声明它的模块的本地范围内使用。,与extern对应的关键字是static,被它修饰的全局变量和函数只能在本模块中使用。因此,一个函数或变量只可能被本模块使用时,其不可能被extern “C”修饰。,volatile,一个定义为volati

7、le的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。下面是volatile变量的几个例子: 1). 并行设备的硬件寄存器(如:状态寄存器) 2). 一个中断服务子程序中会访问到的非自动变量(Non-automatic variables) 3). 多线程应用中被几个任务共享的变量,用变量a给出下面的定义,a) 一个整型数(An integer) b) 一个指向整型数的指针(A pointer to an integer) c) 一个指向指针的的指针,它指向的

8、指针是指向一个整型数(A pointer to a pointer to an integer) d) 一个有10个整型数的数组(An array of 10 integers) e) 一个有10个指针的数组,该指针是指向一个整型数的(An array of 10 pointers to integers) f) 一个指向有10个整型数数组的指针(A pointer to an array of 10 integers) g) 一个指向函数的指针,该函数有一个整型参数并返回一个整型数(A pointer to a function that takes an integer as an arg

9、ument and returns an integer) h) 一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数( An array of ten pointers to functions that take an integer argument and return an integer ),a) int a; / An integer b) int *a; / A pointer to an integer c) int *a; / A pointer to a pointer to an integer d) int a10; / An array

10、of 10 integers e) int *a10; / An array of 10 pointers to integers f) int (*a)10; / A pointer to an array of 10 integers g) int (*a)(int); / A pointer to a function a that takes an integer argument and returns an integer h) int (*a10)(int); / An array of 10 pointers to functions that take an integer

11、argument and return an integer,数据结构,链表单链表、双链表、循环链表 队列 栈 堆 树 排序,字符串,字符串的查找强大的和谐 不用库函数,写出相同的结果,都要懂一点点,操作系统进程与线程的区别与联系、pv操作、同步、死锁、两个进程间的通信方式。 软件工程各种软件开发模型 软件测试各种测试方法、(黑白盒)测试用例的设计 数据库sql语句的使用 计算机网络,智力题,屋里的三个灯泡分别由哪个开关控制 三架飞机环游世界 用火柴和两根绳子测量45分钟之类的题目,1.1有A、B、C、D四个人,要在夜里过一座桥。 他们通过这座桥分别需要耗时1、2、5、10分钟,只有一支手电,

12、并且同时最多只能两个人一起过桥。 请问,如何安排,能够在最短时间内内这四个人都过桥?,一普查员问一女人,“你有多少个孩子,他们多少岁?” 女人回答:“我有三个孩子,他们的岁数相乘是36,岁数相加就等于旁边屋的门牌号码。“普查员立刻走到旁边屋,看了一看,回来说:“我还需要多少资料。”女人回答:“我现在很忙,我最大的孩子正在楼上睡觉。”普查员说:”谢谢,我己知道了。” 问题:那三个孩子的岁数是多少。,36 = 1 2 2 3 3 所有的可能为 1,1,36;sum = 38 1,2,18;sum = 21 1,3,12;sum = 16 1,4,9;sum = 14 1,6,6;sum = 13

13、2,2,9;sum = 13 2,3,6;sum = 11 3,3,4;sum = 10 由于普查员知道了年龄和之后还是不能确定每个孩子的年龄,所以可能性为 1,6,6;sum = 13 2,2,9;sum = 13 由于最大(暗含只有一个最大)的孩子在睡觉,所以只可能是 2,2,9;sum = 13,徐老师的生日,小宇和玉鹏都是徐老师的学生,徐老师的生日是M月N日,2人都知道徐老师的生日 是下列10组中的一天,徐老师把M值告诉了小宇,把N值告诉了玉鹏,徐老师问他们知道他的生日是那一天吗? 3月4日 3月5日 3月8日 6月4日 6月7日 9月1日 9月5日 12月1日 12月2日 12月8日

14、 小宇说:如果我不知道的话,玉鹏肯定也不知道 玉鹏说:本来我也不知道,但是现在我知道了 小宇说:哦,那我也知道了 请根据以上对话推断出徐老师的生日是哪一天,由题意可知, 老师告诉小宇的月份数字是3、6、9、12之一, 老师告诉玉鹏的日期数字是1、2、4、5、7、8之一, 小宇说:“如果我不知道的话,玉鹏肯定也不知道” 看附图1,在十个可能的生日中 月份中3、6、9、12都有重复, 日期中1、4、5、8有重复,2、7没有重复, (1)小宇自己不知道自己是清楚的,如果小宇知道的月份数字是6,那么,在小宇看来,玉鹏就有可能知道老师的生日,因为老师可能告诉玉鹏日期是7,而含有7日的生日是唯一的,只有6

15、月7日,所以,小宇知道的月份数字不是6; (2)同样,如果小宇知道的月份数字是12,那么,在小宇看来,玉鹏也有可能知道老师的生日,因为老师有可能告诉玉鹏日期是2,而含有2日的生日也是唯一的,只有12月2日,所以,小宇知道的数字也不是12; 既然小宇确定玉鹏不知道,就说明小宇知道的月份数字不是6、12之一,而是3、9之一。 玉鹏说:“本来我也不知道,但是现在我知道了” 看附图2,在3月4日、3月5日、3月8日、9月1日、9月5日这五个可能的生日中 重复一下,如果老师告诉玉鹏的日期数字是2,那么玉鹏就可以知道老师的生日是12月2日,因为含有2日的生日是唯一的,只有12月2日;如果老师告诉玉鹏的日期

16、数字是7,那么玉鹏就可以知道老师的生日是6月7日,因为含有7日的生日也是唯一的,只有6月7日;由于玉鹏本来不知道老师的生日,所以,老师告诉玉鹏的日期数字是1、4、5、8之一。 由于小宇的话向玉鹏传达了月份只能是3、9之一的信息,然后玉鹏立刻就知道了老师的生日,那么,生日不是5日,因为如果生日是5日,可能的生日既有3月5日,也有9月5日,这样,玉鹏就不能断定老师的生日月份是3月还是9月,从而不会立刻唯一地确定老师的生日。至此,生日可能是3月4日、3月8日、9月1日之一,由于玉鹏知道生日日期,所以,就旁观者所知道的来说,生日可能是这三个中的任何一个。 小宇说:哦,那我也知道了 由于可能的生日有三个

17、:3月4日、3月8日、9月1日,对于小宇而言,月份是他已经知道的,他只需要知道日期就可以知道老师的生日,由于小宇通过玉鹏的发言就可以知道老师的生日,说明老师的生日是9月1日,因为如果老师的生日是4日或者8日,则小宇无法断定生日是3月4日还是3月8日,通过小宇能断定出老师的生日,可以得到,老师的生日不是3月4日也不是3月8日,在3月4日、3月8日、9月1日三个可能的生日中,就只有9月1日是可能的了。 所以,老师的生日是9月1日。,逆天题目,int a = 5, b = 7, c; c = a+b; 这时候c、a、b的值是多少? Int a, char b ,char c Char a, int b, char c 这两者所占的内存空间一样吗? .etc,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1