1
有7克,2克砝码各一个,天平一只,如何只用这些物品3次将140的盐分为50、90克各一份?
1、将140克盐放天平两边平分两份各70克;
2、将一份70克盐平分两份各35克;
3、将7克和2克砝码各方天平一侧,取一份35克盐向天平两端加知道左右平衡,此时与7克砝码一侧为15克盐,与2克砝码一侧为20克盐;
4、此时20克盐加70克盐为90克,剩余合并为50克。
2
用二进制来编码字符串“abcdabaa”,需要能够根据编码,解码回原来的字符串,最少需要()长的二进制字符串?
这道题需要对abcd进行Huffman编码。首先根据权值建立Huffman树,得到最优编码:
a=0, b=10, c=110, d=111
然后数一下就行了。答案为14
3
辗转相除法的时间复杂度为log(n)
4
长度为n的数组乱序存放着0至n-1. 现在只能进行0与其他数的交换,完成以下函数
public void sort(int[] array, int len) { int min, index;
for(int n = 1; n < len; n ++){ swapWithZero(array, len, array[n]);
min = array[0]; index = 0;
for(int j = n+1; j < len; j ++){ if(array[j] < min){ min = array[j]; index = j; } }
swapWithZero(array, len, array[index]); } } |
5
有ABCD四个人要在夜里过一座桥,他们通过这座桥分别需要耗时1、2、5、10分钟,现在只有一支手电,过桥时必须带有手电,并且同时最多只能两个人一起过桥。请问如何安排能够让四个人尽快都过桥。
1和2 先过。1返回,5和10先过,2返回,1和2一起过。一共时间=2+1+10+2+2=17分钟
6
七夕节n对恋人(n>=2)围成一圈举行篝火晚会。晚会的规则是:男女相同,且每对恋人处在相邻的位置上。请问有多少种不同的圈子?
根据题设,要求不同的圈子,这意味着圈子可以转动时造成的差异,可以不计。n个人站一竖排的全排列为n!,n个人站一圈子且不计圈子转动的差异的全排列为(n-1)!。
又,n个人其实是2n个情侣,每组情侣有2种站位,n组有2^n种站位。
故,C对
7
你有一个3X3X3的立方体。你现在在正面左上的顶点,需要移动到对角线的背面右下的顶点中。每次移动不限距离,但只能从前至后、从左至右、从上至下运动,即不允许斜向或后退。有多少种方法?
这道题可以看成是3X3X3矩阵,xyz轴各走3步啊,从(3,3,3)走到(0,0,0),一共有:
C9 3 * C6 3 * C3 3 = 1680
8
某招聘笔试共有120人参加,考试有6道题。1-6道分别有86人,88人,92人,76人,72人和70人答对,如果答对3道或3道以上通过笔试,问至少有多少人通过?
由题干知共做题120×6=720,分别答对1至6题的共有86+88+92+76+72+70=484人次,则没答对1至6题的人次为720-484=236,当未通过考试的人都答错4道题时,未通过考试的人最多,即共有236÷4=59人,那么通过考试的至少有120-59=61人
9
列出数据库中常用的锁及其应用场景
解答:数据库中的锁是网络数据库中的一个非常重要的概念,它主要用于多用户环境下保证数据库完整性和一致性。各种大型数据库所采用的锁的基本理论是一致的,但在具体实现上各有差别。目前,大多数数据库管理系统都或多或少具有自我调节、自我管理的功能,因此很多用户实际上不 清楚锁的理论和所用数据库中锁的具体实现。在数据库中加锁时,除了可以对不同的资源加锁,还可以使用不同程度的加锁方式,即锁有多种模式,SQL Server中锁模式包括:
1)共享锁 SQL Server中,共享锁用于所有的只读数据操作。共享锁是非独占的,允许多个并发事务读取其锁定的资源。默认情况下,数据被读取后,SQL Server立即释放共享锁。例如,执行查询“SELECT * FROM my_table”时,首先锁定第一页,读取之后,释放对第一页的锁定,然后锁定第二页。这样,就允许在读操作过程中,修改未被锁定的第一页。但是,事务 隔离级别连接选项设置和SELECT语句中的锁定设置都可以改变SQL Server的这种默认设置。例如,“ SELECT * FROM my_table HOLDLOCK”就要求在整个查询过程中,保持对表的锁定,直到查询完成才释放锁定。
2)修改锁 修 改锁在修改操作的初始化阶段用来锁定可能要被修改的资源,这样可以避免使用共享锁造成的死锁现象。因为使用共享锁时,修改数据的操作分为两步,首先获得一 个共享锁,读取数据,然后将共享锁升级为独占锁,然后再执行修改操作。这样如果同时有两个或多个事务同时对一个事务申请了共享锁,在修改数据的时候,这些 事务都要将共享锁升级为独占锁。这时,这些事务都不会释放共享锁而是一直等待对方释放,这样就造成了死锁。如果一个数据在修改前直接申请修改锁,在数据修 改的时候再升级为独占锁,就可以避免死锁。修改锁与共享锁是兼容的,也就是说一个资源用共享锁锁定后,允许再用修改锁锁定。
3)独占锁 独占锁是为修改数据而保留的。它所锁定的资源,其他事务不能读取也不能修改。独占锁不能和其他锁兼容。
4)结构锁 结构锁分为结构修改锁(Sch-M)和结构稳定锁(Sch-S)。执行表定义语言操作时,SQL Server采用Sch-M锁,编译查询时,SQL Server采用Sch-S锁。
5)意向锁 意 向锁说明SQL Server有在资源的低层获得共享锁或独占锁的意向。例如,表级的共享意向锁说明事务意图将独占锁释放到表中的页或者行。意向锁又可以分为共享意向锁、 独占意向锁和共享式独占意向锁。共享意向锁说明事务意图在共享意向锁所锁定的低层资源上放置共享锁来读取数据。独占意向锁说明事务意图在共享意向锁所锁定 的低层资源上放置独占锁来修改数据。共享式独占锁说明事务允许其他事务使用共享锁来读取顶层资源,并意图在该资源低层上放置独占锁。
6)批量修改锁 批量复制数据时使用批量修改锁。可以通过表的TabLock提示或者使用系统存储过程sp_tableoption的“table lock on bulk load”选项设定批量修改锁。
10
下列不属于java语言鲁棒性特点的是
正确答案: B 你的答案: A (错误)
Ajava能检查程序在编译和运行时的错误
Bjava能运行虚拟机实现跨平台
Cjava自己操纵内存减少了内存出错的可能性
Djava还实现了真数组,避免了覆盖数据的可能
解析:鲁棒性越高,说明你的程序越健壮,越稳定,可以承载的压力越大。是程序性能的一种度量标准。
根据对性能的不同定义,可分为稳定鲁棒性和性能鲁棒性。跨平台不是。
11.
continue语句可以出现在各种循环体中
错误,放在switch中不行。
12
一堆硬币,一个机器人,如果是反的就翻正,如果是正的就抛掷一次,无穷多次后,求正反的比例。
正:1.本来就是正,概率0.5,下一次还为正的概率0.5*0.5=0.25
2.本来是反,概率0.5,下一次被翻过来
所以总的为0.75
所以3:1
13
卡特兰数通项为:c(2n, n)/(n+1)。
可用于找有多少种出栈序列。
一景区需要门票5元,售票员没有零钱,假设这一天会来2N个人,其中N个人会给5元钱,N个人给10元,问所有人都不需要等待的概率是多少?
可以将5元看作入栈,10元看作出栈。求有多少不同序列。
1、不考虑人物排列满足卡特兰数 h(N)=h(0)*h(N-1)+h(1)*h(N-2)+...+h(N-1)h(0)=(2N)! / (N+1)!N!
2、加入人物排列得到不需要找零钱的排列方法总数为和 h(N)*N!*N!
3、2N个人总排列方法总数为(2N)!
4、概率为和h(N) / (2N)!=1 / (N+1)
14
求 n 个数中的最大值和最小值,最少的比较次数是?
设计一个分治算法,设min和max是A[0:n]的最小最大值,则对于A[0:n+1]
if A[n+1]>max max=A[n+1]
elseif A[n+1]<min min=A[n+1]
理想情况下,不会进入第二个else去比较,那么总共比较n-1次
15
下面函数将返回?
1 2 3 4 5 6 7 8 9 | public static int func (){ try{ return 1; }catch (Exception e){ return 2; }finally{ return 3; } } |
记住:无论如何finally语句都要执行就会这个题了
finally语句在try或catch中的return语句执行之后返回之前执行且finally里的修改语句不能影响try或catch中 return已经确定的返回值,若finally里也有return语句则覆盖try或catch中的return语句直接返回。(同学们可以踊跃探讨哦)
答案为3
16
拷贝构造函数的特点是()
正确答案: B D 你的答案: B C D (错误)
该函数名同类名,也是一种构造函数,该函数返回自身引用
该函数只有一个参数,是对某个对象的引用
每个类都必须有一个拷贝初始化构造函数,如果类中没有说明拷贝构造函数,则编译器系统会自动生成一个缺省拷贝构造函数,作为该类的保护成员
拷贝初始化构造函数的作用是将一个已知对象的数据成员值拷贝给正在创建的另一个同类的对象
解析:c中,不需要为保护成员,要是为保护成员别人怎么用?
17
下列关于虚函数的说法正确的是()
正确答案: C D 你的答案: A B C (错误)
在构造函数中调用类自己的虚函数,虚函数的动态绑定机制还会生效
在析构函数中调用类自己的虚函数,虚函数的动态绑定机制还会生效
静态函数不可以是虚函数
虚函数可以声明为inline
解析:由于类的构造次序是由基类到派生类,所以在构造函数中调用虚函数,这个虚函数不会呈现出多态; 相反,类的析构是从派生类到基类,当调用继承层次中某一层次的类的析构函数时往往意味着其派生类部分已经析构掉,所以也不会呈现出多态D虚函数声明为inline但是在编译时会被忽略。
1:只有类的成员函数才能说明为虚函数;
2:静态成员函数不能是虚函数;
3:内联函数不能为虚函数;
4:构造函数不能是虚函数;
5:析构函数可以是虚函数,而且通常声明为虚函数。
18
假定指针变量p定义为“int *p=new int(100);”,要释放p所指向的动态内存,应使用语句( )
正确答案: A 你的答案: D (错误)
delete p;
delete *p;
delete &p;
delete []p;
解析:int* p = new int (100) 是创建一个int型的内存,并赋值为100;
int *p = new int[100] 是创建100个int型的内存;
一般用法是new一个数组的话一般是delete [] 其他的直接delete即可。
但是其实对于内置数据类型,其实是delete[] 和delete都可以的。
19
一棵有124个叶节点的完全二叉树,最多有( )个节点。
正确答案: B 你的答案: A (错误)
247
248
249
250
n0 = n2 + 1,于是度为2的结点个数123个
完全二叉树中度为1结点个数最多1个
因此该完全二叉树中结点最多有123 + 1 + 124 = 248个
20
操作系统采用分页式存储管理(PAGING)方法,要求( )
正确答案: B 你的答案: A (错误)
每个进程拥有一张页表,且进程的页表驻留在内存中
每个进程拥有一张页表,但只要执行进程的页表驻留在内存中,其他进程的页表不必驻留在内存中
所有进程共享一张页表,以节约有限的内存空间,但页表必须驻留在内存中
所有进程共享一张页表,只有页表中当前使用的页面必须驻留在内存中,以最大限度地节约有限的内存空间
21
五对夫妇甲,乙,丙,丁,戊举行家庭聚会 每一个人都可能和其他人握手, 但夫妇之间绝对不握手. 聚会结束时, 甲先生问其他人: 各握了几次手? 得到的答案是: 0,1,2,3,4,5,6,7,8. 试问: 甲太太握了 几次手?
甲太太握了四次手。
首先,分析题目
每一个人都可能和其他人握手, 但夫妇之间绝对不握手。
可得出每个人最多握八次手(除自己和亲爱的)
甲先生问各握了几次手时得到的回答是:
0,1,2,3,4,5,6,7,8
解析如下:
1.回答握了8次的说明TA除了自己亲爱的以外和每个人都握手了。所以TA和回答握手次数为0的那个人是一家人。
2.因为8君和除了0君外的人都握手了,所以1君的那一次握手肯定是和8君。7君握了七次手,没和0君、1君握,因为每人最多握8次手且0君是8君的爱人,则可得出7君和1君是一家人。
3.因为8君和除了0君外的人都握手了,7君和除0君、1君外的人都握手了,所以2君的两次握手应该分别是和7君、8君。6君握了6次手,没和0君、1君、2君握手,因为每人最多握8次手且0君是8君的爱人、1君是7君的爱人,所以2君和6君是一家人。
4.因为8君和除了0君外的人都握手了,7君和除0君、1君外的人都握手了,6君和除0君、1君、2君外的人都握手了,所以3君的三次握手应该分别是和6君、7君、8君握的。5君握了5次手,没和0君、1君、2君、3君握,因为每人最多握8次手且0君是8君的爱人、1君是7君的爱人、2君是6君的爱人,所以3君和5君是一家人。
5.由上可得,4君即为甲太太,也就是说甲太太握了4次手.
那甲太太分别是和谁握的呢?
当然是5、6、7、8君啦~