常见计算机基础笔试题总结quickstart
【本文链接】
1. 以下是一颗平衡二叉树,请画出插入键值3以后的这颗平衡二叉树。
分析:考察平衡二叉树的基本操作,插入3变成不平衡,需要节点5右旋一次,节点2左旋一次。。
2. 表达式X=A+(B*(C-D))/E的后缀表示形式可以是 XABCD-*E/+=
如何快速解答,增加括号。
3. 对于一个内存地址是32位、内存页是8KB的系统。0X0005F123这个地址的页号与页内偏移分别是多少。
0x5F123/8K=a*8k+b,页号是a,页内偏移量应该是b。
4. 如果X大于0并小于65536,用移位法计算X乘以255的值为: 255x=256x-x = (X<<8)-X
5. 一个包含n个节点的四叉树,每个节点都有四个指向孩子节点的指针,这4n个指针中有 4n-(n-1)=3n+1 个空指针。
6. 以下两个语句的区别是:第一个动态申请的空间里面的值是随机值,第二个进行了初始化,里面的值为0
int *p1 = new int[10];
int *p2 = new int[10]();
7. 计算机在内存中存储数据时使用了大、小端模式,请分别写出A=0X123456在不同情况下的首字节是,大端模式:0X12 小端模式:0X56 X86结构的计算机使用 小端 模式。
一般来说,大部分用户的操作系统(如windows, FreeBsd,Linux)是小端模式的。少部分,如MAC OS,是大端模式 的。
8. 在游戏设计中,经常会根据不同的游戏状态调用不同的函数,我们可以通过函数指针来实现这一功能,请声明一个参数为int *,返回值为int的函数指针:
int (*fun)(int *)
9. 头文件中ifndef / define / endif 是做什么用的?防止该头文件被重复引用。
10. 写出输出:char array[] = “abcde”; char* s = array;
cout<<sizeof(array)<<strlen(array)<<sizeof(s)<<strlen(s);
答案:6545
11. stable排序有InsertionSort,BubbleSort,MergeSort,CountSort,RadixSort。
12. 为什么对于n非常大的时候,堆排序的效率不如快排?
堆排序时,i 2i都是非常大的,要经常跨越长内存,甚至跨越缓存影响效率,而快排始终是在一个小范围内,而且越来越小。
13. [0,2,1,4,3,9,5,8,6,7]是以数组形式存储的最小堆,删除堆顶元素0后的结果是:
A. [2,1,4,3,9,5,8,6,7]
B. [1,2,5,4,3,9,8,6,7]
C. [2,3,1,4,7,9,5,8,6]
D. [1,2,5,4,3,9,7,8,6]
提示:最后一个元素7和0替换,然后将较小的child替换上去直到OK。
14. 在公司局域网上ping www.taobao.com没有涉及到的网络协议是()
A、ARP B、DNS C、TCP D、ICMP
DNS是将域名www.taobao.com映射成主机的IP地址,ARP是将IP地址映射成物理地址,ICMP是报文控制协议,由路由器发送给执行ping命令的主机,而一个ping命令并不会建立一条TCP连接,故没有涉及TCP协议。
15 http属于(应用层)协议,ICMP属于(网络层)协议。
16. 深度为k的完全二叉树至少有(2^(k-1))个结点,至多有(2^k-1)个结点。
17. 字节为6位的二进制有符号整数,其最小值是(-32)。
18. 设有28盏灯,拟公用一个电源,则至少需有4插头的接线板数(9)个。
第一个板4个口,此后每增加1个板会消耗1个原来的口,总的只增加3个口,故N个接线板能提供 1+3*N个电源口。
19 一台指针式钟表的时钟和分钟的指向重合的时间间隔是__。
A.720/13分钟 B. 720/11分钟 C. 60分钟D. 以上都不正确
【分析】时针60分钟走1/12*2π的弧度,V(时针)= 1/12*2π/60 (rad/min);分针60分钟走2π的弧度,V(分针)= 2π/60 (rad/min);假设从重合开始经过了T时间又重合了,则满足:V(时针)*T+2π=V(分针)*T。
20. 已知一个线性表(38,25,74,63,52,48),假定采用散列函数h(key) = key%7计算散列地址,并散列存储在散列表A【0....6】中,若采用线性探测方法解决冲突,则在该散列表上进行等概率成功查找的平均查找长度为(C)
A、1.5 B、1.7 C、2.0 D、2.3
依次进行取模运算求出哈希地址:
A |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
记录 |
63 |
48 |
38 |
25 |
74 |
52 |
|
查找次数 |
1 |
3 |
1 |
1 |
2 |
4 |
74应该放在下标为4的位置,由于25已经放在这个地方,所以74往后移动,放在了下标为5的位置上了。
由于是等概率查找,所以结果为:1/6*(1+3+1+1+2+4)= 2.0
21.(B)设计模式将抽象部分与它的实现部分相分离。
A、Singleton(单例) B、 Bridge(桥接)
C、 Composite(组合) D、 Facade(外观)
22、typedef char *String_t; 和 #define String_d char * 这两句在使用上有什么区别?
答:typedef char *String_t 定义了一个新的类型别名,有类型检查。
而#define String_d char * 只是做了个简单的替换,无类型检查,前者在编译的时候处理,后者在预编译的时候处理。
同时定义多个变量的时候有区别,主要区别在于这种使用方式String_t a,b; String_d c,d; a,b ,c都是char*类型,而d为char类型
由于typedef还要做类型检查。。#define没有,所以typedef比#define安全。
23、OFFSETOF(s, m)的宏定义,s是结构类型,m是s的成员,求m在s中的偏移量。
#define OFFSETOF(s,m) ((int)&(((s*)0)->m))
24. 为了某项目需要,我们准备构造了一种面向对象的脚本语言,例如,对所有的整数,我们都通过Integer类型的对象来描述。在计算“1+2”时,这里的“1”,“2”和结果“3”分别为一个Integer对象。为了降低设计复杂度,我们决定让Integer对象都是只读对象,也即在计算a=a+b后,对象a引用的是一个新的对象,而非改a所指对象的值。考虑到性能问题,我们又引入两种优化方案:(1)对于数值相等的Integer对象,我们不会重复创建。例如,计算“1+1”,这里两个“1”的引用的是同一个对象——这种设计模式叫做(享元模式);(2)脚本语言解析器启动时,默认创建数值范围[1,32]的32个Integer对象。现在,假设我们要计算表达式“1+2+3+…+40”,在计算过程需要创建的Integer对象个数是(40)。
分析:1到7以及他们的和是不用创建的,从8开始,28(是1到7的和)+8=36,36需要创建,36+9=45,45需要创建…依次类推,在加数是32之前(含32)需要创建的对象是32-8+1=25,某数+32=某数之后33至40所表示的加数也要创建,这样有8个加数 + 8个和,共有16个数需要创建,注意,加数中包含36,这个我们已经创建了,所以有25+8+8-1=40个数的对象需要创建。
n sn
[1,7] no [1,3,....28] no
[8,32] no [36,45,...] yes
[33,40] yes [561,...] yes
总共25+8+8-1=40个
25 由9,2,5,7,构造一个Huffman树,带权路径长度为 9*1+2*3+5*3+7*2 = 44
提示:每次选取最小的2个节点组成一个新的节点。
26 Linux中进入目录都要x权限(执行权限),查看目录下的文件需要r权限(读权限)和x权限,因为相当于进入了目录。执行目录下某个可执行文件,需要进入目录的x权限,以及对该执行文件的x权限。
27 下面哪种排序法对12354最快?
A. quick sort
B. buble sort
C. merge sort
已经部分排序,bubbleSort只需要交换一次即可。
BubbleSort比较相邻元素a和b,如果a>b那么交换,这样一趟下来,最大的元素就到升到了最后。
28 依赖:用到了别人的方法或变量;关联:对称的,好比你是我的朋友,我也是你的朋友;
聚合:非对称的,员工与公司就是聚合关系,还有一个重要特点就是生命周期可以不同,员工离开了公司还是可以活的;组合:生命周期一致,好比人与心脏,一个没了另一个也没了。强度:依赖<关联<聚合<组合。
29 有两个线程,最初 n=0,一个线程执行 n++; n++; 另一个执行 n+=2; 问,最后可能的 n 值?()
A. 1
B. 2
C. 3
D. 4
解析:大家要知道 C语言中的 ++ 和 += 并不是原子操作,而是通过多条微程序组成的,因此 ++ 和 += 在执行过程中可能被中断的
第一种可能情况:现在假设两个线程没有并行顺序执行的那么结果显然是 4。
第二种可能情况:再假设现在第一个n++ 已经执行完了 但是结果还没有写回内存 这个时候 n+=2 已经全部执行完 2 写进了内存 结束 然后回到n++的写回操作 这个时候内存就从2被改回1了,后面再来一次n++ 结果就为2。
第三种可能情况: 第n+=2 先读取n的值到寄存器 即0入寄存器 这个时候被中断 第一个n++开始执行 并直到结束 内存被改成了1 ,然后 n+=2 继续执行 结束后内存变为2 第二个n++再执行 结果就是3
30 一棵二叉树的先序遍历是 f b a c d e g h,中序遍历是 a b d c e f g h,问后序遍历是什么
答案:adecbhgf
解析:根据先序遍历和中序遍历,我们可以构建一颗二叉树:
31 在一个 big endian 的 32 位的计算机上,b 的结果是______
unsigned int a = 0x1234;
char b = *((char*)&a);
答案:0
解析:unsigned int是 4 个字节,0x1234 的完整表示是 0x 00 00 12 34,因为是 big endian,所以,所以 &(取地址) 的话,如果当字节看的话,取到了最左边 00 字节的地址,一定要转换成 char 看的话,值就是 0。
32 select foo,count(foo) from pokes where foo>10 group by foo having count(*)>5 order by foo
SQL Select语句完整的执行顺序:
1、from子句组装来自不同数据源的数据;
2、where子句基于指定的条件对记录行进行筛选;
3、group by子句将数据划分为多个分组;
4、使用聚集函数进行计算;
5、使用having子句筛选分组;
6、计算所有的表达式;
7、使用order by对结果集进行排序。
因此 合理的答案应该为 from --where-- group by-- having --select-- order by
只有select选出了相应的表 才能对其排序,删除之类的操作
33 UNIX系统中,目录结构采用(带链接树形目录结构)
34 避免死锁的一个著名算法是(银行家算法)
35 怎么理解分配延迟? dispatch lantency 分配器停止一个进程到开启另一个进程的时间
36 入栈出栈顺序问题,卡特兰数:n=5,那么h(5) = C(2n,n)/(n+1) = 42
37 a+b*(c-d)/e-f的逆波兰式是:abcd-*e/+f-
38 计算 a^b << 2 ===> a^(b<<2)
移位运算<< >>优先级高于位运算& | ^。
39 不使用其他变量,交换两个整型a,b的值
答案:x = x+y; y = x-y; x = x-y
40、写出float x 与“零值”比较的if语句。
if(x>=0.000001 && x<=-0.000001)(x不为0的比较)
float: 6位精度
double: 16位精度
常见计算机基础笔试题总结quickstart的更多相关文章
- Android开发面试经——3.常见Java基础笔试题
Android开发(29) 版权声明:本文为寻梦-finddreams原创文章,请关注:http://blog.csdn.net/finddreams 关注finddreams博客:http:/ ...
- Android开发面试经——2.常见Android基础笔试题
标签: androidAndroid基础Android面试题Android笔试题 2015-03-12 15:04 3361人阅读 评论(3) 收藏 举报 分类: Android开发(29) 版 ...
- Android开发面试经——4.常见Android进阶笔试题(更新中...)
Android开发(29) 版权声明:本文为寻梦-finddreams原创文章,请关注:http://blog.csdn.net/finddreams 关注finddreams博客:http:/ ...
- 非常全面的java基础笔试题
下面是java基础笔试题,当时我去笔试,做了1个小时(80道选择题,后面的简答题就没时间做了),结果很吓人,太挫了,最后被面试官忽悠去培训去了,呵呵.我偷偷把面试题弄了下来,用来学习吧,也希望能对你们 ...
- Android采访开发——2.通用Android基础笔试题
注意finddreams博客: http://blog.csdn.net/finddreams/article/details/44219231 正值跳槽的热季.整理一下Android面试中最常考的笔 ...
- Java基础&笔试题
这些题目是近期我参加过的笔试题和一些我在网上选的部分题,在这里做笔记,认真去学习,更好的应对后面的招聘.有错误欢迎指出. 一.Java基础部分 1.指针在任何情况下都可进行>,<,> ...
- SQL基础&笔试题
仅以此篇博客纪念让我羞愧的一次笔试,作为对数据库基础的恶补. 一.SQL的基本概念: SQL是集数据定义语言DDL,数据操纵语言DML,数据控制语言DCL的功能于一体,可以独立完成数据库生命周期的全部 ...
- iOS 基础笔试题
参考:https://www.jianshu.com/p/1d3496bc5bda 1.#import 跟#include.@class有什么区别?#import<> 跟 #import& ...
- ios基础笔试题-集锦二
前言 下文转载自:http://www.henishuo.com/objc-interview-two/ 1.即时聊天App不会采用的网络传输方式 A. UDP B. TCP C. HTTP D. F ...
随机推荐
- iOS 加急申请每个开发者必须会
加急申请原来做过很多次,有成功,有拒绝(最终还是成功,一次不行,被拒绝后多来几下即可,直到成功).但是听朋友说了一件事情,很是不解:他们希望能快速审核上线,在淘宝里面找加速商店,首次上线12000元, ...
- yii2 Pjax的使用
有两个例子:刷新时间和数据显示排序 1.刷新时间 (1)控制器中的方法:Time public function actionTime() { return $this->render('tim ...
- inline-block元素overflow:hidden对齐问题
inline-block元素设置overflow:hidden后,其本身会上移 解决方法:在该元素或其父元素上设置vertical-align:bottom 原因解释:inline-block元素被设 ...
- MongoDB创建数据库和集合命令db.createCollection详解(转)
切换/创建数据库 use yourDB; 当创建一个集合(table)的时候会自动创建当前数据库 完整的命令如下:db.createCollection(name, {capped: <Boo ...
- Oracle的DBMS_OUTPUT.PUT_LINE用法及脚本批处理方法
打印至控制台(无显示): BEGIN DBMS_OUTPUT.PUT_LINE('Hey look, ma!'); END; / 打印至控制台(有显示): SET SERVEROUTPUT ON BE ...
- 如何清理WindowsXp的临时文件
软件限制策略中的 "路径规则" 不允许的, 是指在 这个路径中的程序都 不准运行! 这就限制了 : 通常电脑中病毒, 都是通过上网感染病毒的 -> 病毒/恶意软件通过 &qu ...
- [转]Informatica vs SSIS
转自 http://blog.csdn.net/thy822/article/details/8489779 这篇文章, 我不能同意更多, 所以转在这里. Here is my thinking af ...
- 微信 6.5.1 for iOS发布 可以在朋友圈分享相册中的视频
今天微信 6.5.1 for iOS发布了,最主要的一个功能是可以在朋友圈分享相册中的视频,卖转发朋友圈视频软件的家伙估计要哭了.微信这次更新,更有利于个人号的运营,个人号的价值将更高.先定一个小目标 ...
- 滑雪 why WA
滑雪 Time Limit: 1 Sec Memory Limit: 64 MBSubmit: 587 Solved: 219 Description 小明喜欢滑雪,因为滑雪的确很刺激,可是为了获 ...
- 【PHP面向对象(OOP)编程入门教程】8.构造方法__construct()与析构方法__destruct()
大多数类都有一种称为构造函数的特殊方法.当创建一个对象时,它将自动调用构造函数,也就是使用new这个关键字来实例化对象的时候自动调用构造方法.构 造函数的声明与其它操作的声明一样,只是其名称必须是__ ...