1.针对以下代码,const char str1[]=”abc”;
const char str2[]=”abc”;
const char *p1=”abc”;
const char *p2=”abc”;
判断下列说法哪个是正确的。str1和str2地址不同,p1和p2地址相同
答:const char str1[] = "abc";const char str2[] = "abc";
这是在栈上分配的 从高地址到低地址分配 当然不相等
const char *p1 = "abc";const char *p2 = "abc";
这两个指针指向的是同一地址,编译器认为p1指向的“abc”和p2指向的“abc”是属于同一常量。
2.以下说法错误的是:
a.引用必须被初始化,指针不必
b.引用初始化以后不能被改变,指针可以改变所指的对象
c.不存在指向空值的引用,但是存在指向空值的指针
d.一个引用可以看作是某个变量的一个别名
e.引用传值,指针传地址(错,引用也是传地址)
f.函数参数可以声明为引用或指针类型
答:变量是一个内存空间的名字。引用是一个变量的别名,它共享另一个变量的内存空间,指针本身是一个变量,可以通过它来索引另一个内存空间的内容。引用不可以改变指向,但是指针可以改变指向。引用的大小是所指变量的大小,指针则是本身的大小,4个字节。
3.以下说法错误的是:
{
unsigned int temp = i;
temp = (temp & 0x55555555) + ((temp & 0xaaaaaaaa)>>1);
temp = (temp & 0x33333333) + ((temp & 0xcccccccc)>>2);
temp = (temp & 0x0f0f0f0f) + ((temp & 0xf0f0f0f0)>>4);
temp = (temp & 0xff00ff) + ((temp & 0xff00ff00)>>8);
temp = (temp & 0xffff) + ((temp & 0xffff0000)>>16);
return temp;
}
请问func(0x1f530828)的返回值是?
答:12(不是很懂~~~)
4.一条很长的河,河水的流速是1m/s,一个皮划艇逆流滑行的速度是2m/s,某一刻皮划艇运动员发现丢失了一只漂流瓶,然后调头顺流以相同的节奏划船,经过半小时后发现了漂流瓶。请问船调头时距离漂流瓶多远?
答:5400m。
方法1:逆流滑行速度为2m/s,说明静水速度为3m/s,顺水速度为4m/s,列方程即可。
方法2:将河作为参考系(则河静止),皮划艇只需原路返回,即33060=5400
5.中关村电子城某卖手机的店铺给客人报价,如果按照底价500元(成本价)报出,那么客人就一定会选择在该店铺购买,价格每增加1元,客人流失的可能性增加1%,那么该店铺给客人报出的最优价格是?
答:550元。
单价500+x,人数N(1-x%),求利润即Nx*(1-x%)最大,N为正整数,显然x=50时最优。
6.通过算法生成的随机数是“伪随机”的,也就是说,在设定好第一个数之后,后面的数字的序列是确定的,并且经过一个非常大的循环会回到第一个数的状态,然后周而复始。显然,摇号、抽奖的程序是不能通过伪随机数来实现的。现实中常常基于某种热噪声来实现真正的随机数。假定某热噪声是标准正态分布,那么能否将它转换成(0,1)区间上的均匀分布?
A.忽略测量和计算误差,可以转换为(0,1)区间上的均匀分布。
B.无法转换为(0,1)区间上的均匀分布
C.信息不足,无法判断
D.借助伪随机数生成算法可以转换为(0,1)区间上的均匀分布
E.仅仅靠伪随机数生成算法,就可以生成(0,1)区间上的均匀分布
F.以上说法都不对
答:生成两个独立的正太分布变量Z0,Z1,然后arctan(z0/z1)/(2pi)+0.5,可以生成0-1均匀分布的变量,已经通过程序验证。
7.12321能被写成0种两个质数相加的形式。
答:12321为奇数,奇数=奇数+偶数,两个质数则偶数只能为2,奇数为12319,12319=97*127,显然不是质数,故不能写成两个质数相加的形式。
8.用6块12的完整瓷砖,铺满26的地面,一共有?种不同的铺法(不允许将瓷砖划分成小块)
答:13种。
方法1:6=1+1+1+1+1+1=2+1+1+1+1=2+2+1+1=2+2+2
上面四种类型,每一种铺法个数关键看2放置的位置,第一种只有1种,第2种有5种,第3种有6种,第4种有1种,故共计1+5+6+1=13种铺法。
方法2:斐波那契数列
最后一列为1有dp(n-1)种方法,最后一列为2有dp(n-2)种方法,故dp(n)=dp(n-1)+dp(n-2),已知此处dp(1)=1,dp(2)=2,则dp(6)=13。
9.有4个进程A、B、C、D,设它们依次进入就绪队列,因相差时间很短可视为同时到达。4个进程按轮转法分别运营11,7,2和4个时间单位,设时间片为1。四个进程的平均周转时间为?
答:周转时间=完成时间-到达时间。
画出甘特图,进程C在第8秒完成,进程D在第14秒完成,进程B在第20秒完成,进程A在第24秒完成,故平均周转时间为(8+14+20+24)/4=16.25
10.一监狱人脸识别准入系统用来识别待进入人员的身份,此系统一共包括识别四种不同的人员:狱警、小偷、送餐员、其他。下面哪种学习方法最适合此种应用需求?
A、二分类问题
B、多分类问题
C、层次聚类问题
D、K-中心点聚类问题
E、回归问题
F、结构分析问题
答:多分类问题。
11.若干个等待访问磁盘者依次要访问的磁道为19,43,40,4,79,11,76,当前磁头位于40号柱面,若用最短寻道时间优先磁盘调度算法,则访问序列为?
答:40,43,19,11,4,76,79。
磁盘调度算法
12.如果一个博物馆参观者到达的速率是每分钟20人,平均每个人在馆内停留20分钟,那么该博物馆至少需要容纳400人才行?
答:20分钟后达到稳定态,20*20=400人,此时每进20个人出20个(第1分钟到达的20个人该出去了)
13.以下排序方式,平均时间复杂度最差的排序是?
答:http://blog.csdn.net/wuxinyicomeon/article/details/5996675
14.程序出错在什么阶段?
int main(void)
{ http://www.taobao.com
cout<< “welcome to taobao”<<endl;
}
A、预处理阶段出错 B、编译阶段出错 C、汇编阶段出错 D、链接阶段出错
E、运行阶段出错 F、程序运行正常
答:gcc编译器对程序的编译可以分为4个阶段:预处理、编译、汇编和链接。
预处理:对源文件中的宏进行展开;
编译:gcc将c文件编译成汇编文件(gcc检查代码规范性、是否有语法错误等,以确定代码实际要做工作);
汇编:as将汇编文件编译成机器码(把编译阶段生成的.s文件转成目标文件.o);
链接:ld将目标文件和外部符号进行链接,得到一个可执行二进制文件。
15.下列不属于hash碰撞解决方法的是?
A、线性探测 B、单旋转法 C、二次探测
D、拉链法 E、双重散列 F、多重散列
答:单旋转法是hash生成的方法
16.二分查找树里查询一个关键字的最坏时间复杂度是?
答:最坏的情况就是节点的插入序列有序,此时树退化为单枝树,查找退化为顺序查找,最坏情况变为O(n)。
17.第二维平面上有12个位置不同的店,通过连接其中任意两点,可以画出59条不同的直线。那么,在59条直线种,经过3个或3个以上的店的直线有?条
答:2条。12个点最多有C(12,2)=66个点,可以知道若三个点在一条直线上则减少2条直线C(3,2)-1=2,若四个点在一条直线上则减少5条直线C(4,2)-1=5,这里有59条直线,即减少了7=2+5条,显然有三个点在一条直线,四个点在一条直线上,其他任意两点均在不同直线上。
18.硬币游戏:连续扔硬币,直到某一人获胜。A获胜条件是先正后反,B获胜是出现连续两次反面,问AB游戏时A获胜概率是?
答:3/4。只要在B获胜之前出现正,A一定赢,而B赢的概率是1/2*1/2=1/4(反反),故A赢的概率是1-1/4=3/4(正正、正反、反正)
19.下面选项中,?是一个典型TCP客户端(主动建立连接,主动断开连接)会经历的状态序列。
答:SYNC_SENT->ESTABLISHED->FIN_WAIT_1->FIN_WAIT_2->TIME_WAIT。
tcp三次握手客户端connect,会发送SYN,服务器端确认并发送SYN,客户端确认,进入ESTABLISHED状态,客户端调用close,发送FIN,进入FIN_WAIT1状态,服务器端确认,进入CLOSE_WAIT状态,客户端进入FIN_WAIT2状态,服务器端调用close,客户端进入TIME_WAIT状态
20.下列关于线程调度的叙述中,错误的是?
A、调用线程的sleep()方法,可以使比当前线程优先级低的线程获得运行机会
B、调用线程的yeild()方法,只会使与当前线程相同优先级的线程获得运行机会
C、当有比当前线程的优先级高的线程出现时,高优先级线程将抢占CPU并运行
D、一个线程由于某些原因进入阻塞状态,会放弃CPU
E、具有相同优先级的多个线程的调度一定是分时的
F、分时调度模型是让所有线程轮流获得CPU使用权
答:E。有相同优先级的多个线程的调度可能是分时的,也可能是线程逐个运行,由具体JVM而定,选项C说法错误,故为所选。