程序员面试逻辑题集合

2022-10-23

第一篇:程序员面试逻辑题集合

程序员面试智力题

1. 考虑一个双人游戏。游戏在一个圆桌上进行。每个游戏者都有足够多的硬币。他们需要在桌子上轮流放置硬币,每次必需且只能放置一枚硬币,要求硬币完全置于桌面内(不能有一部分悬在桌子外面),并且不能与原来放过的硬币重叠。谁没有地方放置新的硬币,谁就输了。游戏的先行者还是后行者有必胜策略?这种策略是什么?

答案:先行者在桌子中心放置一枚硬币,以后的硬币总是放在与后行者刚才放的地方相对称的位置。这样,只要后行者能放,先行者一定也有地方放。先行者必胜。

2. 用线性时间和常数附加空间将一篇文章的单词(不是字符)倒序。

答案:先将整篇文章的所有字符逆序(从两头起不断交换位置相对称的字符);然后用同样的办法将每个单词内部的字符逆序。这样,整篇文章的单词顺序颠倒了,但单词本身又被转回来了。

3. 用线性时间和常数附加空间将一个长度为n的字符串向左循环移动m位(例如,"abcdefg"移动3位就变成了"defgabc")。答案:把字符串切成长为m和n-m的两半。将这两个部分分别逆序,再对整个字符串逆序。

4. 一个矩形蛋糕,蛋糕内部有一块矩形的空洞。只用一刀,如何将蛋糕切成大小相等的两块?

答案:注意到平分矩形面积的线都经过矩形的中心。过大矩形和空心矩形各自的中心画一条线,这条线显然把两个矩形都分成了一半,它们的差当然也是相等的。

5. 一块矩形的巧克力,初始时由N x M个小块组成。每一次你只能把一块巧克力掰成两个小矩形。最少需要几次才能把它们掰成N x M块1x1的小巧克力?

答案:N x M1次。

6. 如何快速找出一个32位整数的二进制表达里有多少个"1"?用关于"1"的个数的线性时间?

答案1(关于数字位数线性):for(n=0; b; b >>= 1) if (b & 1) n++;

答案2(关于"1"的个数线性):for(n=0; b; n++) b &= b-1;

7. 一个大小为N的数组,所有数都是不超过N-1的正整数。用O(N)的时间找出重复的那个数(假设只有一个)。一个大小为N的数组,所有数都是不超过N+1的正整数。用O(N)的时间找出没有出现过的那个数(假设只有一个)。

答案:计算数组中的所有数的和,再计算出从1到N-1的所有数的和,两者之差即为重复的那个数。计算数组中的所有数的和,再计算出从1到N+1的所有数的和,两者之差即为缺少的那个数。

8. 给出一行C语言表达式,判断给定的整数是否是一个2的幂。

答案:(b & (b-1)) == 0

9. 地球上有多少个点,使得从该点出发向南走一英里,向东走一英里,再向北走一英里之后恰好回到了起点?

答案:“北极点”是一个传统的答案,其实这个问题还有其它的答案。事实上,满足要求的点有无穷多个。所有距离南极点1 + 1/(2π)英里的地方都是满足要求的,向南走一英里后到达距离南极点1/(2π)的地方,向东走一英里后正好绕行纬度圈一周,再向北走原路返回到起点。事实上,这仍然不是满足要求的全部点。距离南极点1 + 1/(2kπ)的地方都是可以的,其中k可以是任意一个正整数。

10. A、B两人分别在两座岛上。B生病了,A有B所需要的药。C有一艘小船和一个可以上锁的箱子。C愿意在A和B之间运东西,但东西只能放在箱子里。只要箱子没被上锁,C都会偷走箱子里的东西,不管箱子里有什么。如果A和B各自有一把锁和只能开自己那把锁的钥匙,A应该如何把东西安全递交给B?

答案:A把药放进箱子,用自己的锁把箱子锁上。B拿到箱子后,再在箱子上加一把自己的锁。箱子运回A后,A取下自己的锁。箱子再运到B手中时,B取下自己的锁,获得药物。

11. 一对夫妇邀请N-1对夫妇参加聚会(因此聚会上总共有2N人)。每个人都和所有自己不认识的人握了一次手。然后,男主人问其余所有人(共2N-1个人)各自都握了几次手,得到的答案全部都不一样。假设每个人都认识自己的配偶,那么女主人握了几次手?答案:握手次数只可能是从0到2N-2这2N-1个数。除去男主人外,一共有2N-1个人,因此每个数恰好出现了一次。其中有一个人(0)没有握手,有一个人(2N-2)和所有其它的夫妇都握了手。这两个人肯定是一对夫妻,否则后者将和前者握手(从而前者的握手次数不再是0)。除去这对夫妻外,有一个人(1)只与(2N-2)握过手,有一个人(2N-3)和除了(0)以外的其它夫妇都握了手。这两个人肯定是一对夫妻,否则后者将和前者握手(从而前者的握手次数不再是1)。以此类推,直到握过N-2次手的人和握过N次手的人配成一对。此时,除了男主人及其配偶以外,其余所有人都已经配对。根据排除法,最后剩下来的那个握手次数为N-1的人就是女主人了。

12. 两个机器人,初始时位于数轴上的不同位置。给这两个机器人输入一段相同的程序,使得这两个机器人保证可以相遇。程序只能包含“左移n个单位”、“右移n个单位”,条件判断语句If,循环语句while,以及两个返回Boolean值的函数“在自己的起点处”和“在对方的起点处”。你不能使用其它的变量和计数器。

答案:两个机器人同时开始以单位速度右移,直到一个机器人走到另外一个机器人的起点处。然后,该机器人以双倍速度追赶对方。程序如下。

while(!at_other_robots_start) {

move_right 1

}

while(true) {

move_right 2

}

13. 如果叫你从下面两种游戏中选择一种,你选择哪一种?为什么?

a. 写下一句话。如果这句话为真,你将获得10美元;如果这句话为假,你获得的金钱将少于10美元或多于10美元(但不能恰好为10美元)。

b. 写下一句话。不管这句话的真假,你都会得到多于10美元的钱。

答案:选择第一种游戏,并写下“我既不会得到10美元,也不会得到10000000美元”。

14. 你在一幢100层大楼下,有21根电线线头标有数字1..21。这些电线一直延伸到大楼楼顶,楼顶的线头处标有字母A..U。你不知道下面的数字和上面的字母的对应关系。你有一个电池,一个灯泡,和许多很短的电线。如何只上下楼一次就能确定电线线头的对应关系?

答案:在下面把2,3连在一起,把4到6全连在一起,把7到10全连在一起,等等,这样你就把电线分成了6个“等价类”,大小分

别为1, 2, 3, 4, 5, 6。然后到楼顶,测出哪根线和其它所有电线都不相连,哪些线和另外一根相连,哪些线和另外两根相连,等等,从而确定出字母A..U各属于哪个等价类。现在,把每个等价类中的第一个字母连在一起,形成一个大小为6的新等价类;再把后5个等价类中的第二个字母连在一起,形成一个大小为5的新等价类;以此类推。回到楼下,把新的等价类区别出来。这样,你就知道了每个数字对应了哪一个原等价类的第几个字母,从而解决问题。

15. 某种药方要求非常严格,你每天需要同时服用A、B两种药片各一颗,不能多也不能少。这种药非常贵,你不希望有任何一点的浪费。一天,你打开装药片A的药瓶,倒出一粒药片放在手心;然后打开另一个药瓶,但不小心倒出了两粒药片。现在,你手心上有一颗药片A,两颗药片B,并且你无法区别哪个是A,哪个是B。你如何才能严格遵循药方服用药片,并且不能有任何的浪费?

答案:把手上的三片药各自切成两半,分成两堆摆放。再取出一粒药片A,也把它切成两半,然后在每一堆里加上半片的A。现在,每一堆药片恰好包含两个半片的A和两个半片的B。一天服用其中一堆即可。

16. 你在一个飞船上,飞船上的计算机有n个处理器。突然,飞船受到外星激光武器的攻击,一些处理器被损坏了。你知道有超过一半的处理器仍然是好的。你可以向一个处理器询问另一个处理器是好的还是坏的。一个好的处理器总是说真话,一个坏的处理器总是说假话。用n-2次询问找出一个好的处理器。

答案:给处理器从1到n标号。用符号a->b表示向标号为a的处理器询问处理器b是不是好的。首先问1->2,如果1说不是,就把他们俩都去掉(去掉了一个好的和一个坏的,则剩下的处理器中好的仍然过半),然后从3->4开始继续发问。如果1说2是好的,就继续问2->3,3->4,……直到某一次j说j+1是坏的,把j和j+1去掉,然后问j-1 -> j+2;或者从j+2 -> j+3开始发问,如果前面已经没有j-1了(之前已经被去掉过了)。注意到你始终维护着这样一个“链”,前面的每一个处理器都说后面那个是好的。这条链里的所有处理器要么都是好的,要么都是坏的。当这条链越来越长,剩下的处理器越来越少时,总有一个时候这条链超过了剩下的处理器的一半,此时可以肯定这条链里的所有处理器都是好的。或者,越来越多的处理器都被去掉了,链的长度依旧为0,而最后只剩下一个或两个处理器没被问过,那他们一定就是好的了。另外注意到,第一个处理器的好坏从来没被问过,仔细想想你会发现最后一个处理器的好坏也不可能被问到(一旦链长超过剩余处理器的一半,或者最后没被去掉的就只剩这一个了时,你就不问了),因此询问次数不会超过n-2。

17. 一个圆盘被涂上了黑白二色,两种颜色各占一个半圆。圆盘以一个未知的速度、按一个未知的方向旋转。你有一种特殊的相机可以让你即时观察到圆上的一个点的颜色。你需要多少个相机才能确定圆盘旋转的方向?

答案:你可以把两个相机放在圆盘上相近的两点,然后观察哪个点先变色。事实上,只需要一个相机就够了。控制相机绕圆盘中心顺时针移动,观察颜色多久变一次;然后让相机以相同的速度逆时针绕着圆盘中心移动,再次观察变色的频率。可以断定,变色频率较慢的那一次,相机的转动方向是和圆盘相同的。

今天考完美国结构语言学,稍微轻松了一些。我把前几天向大家推荐的网页好好看了一遍,挑选了10个比较精彩的、不是很常见的、本Blog之前没有提过的智力题,并且把它们都整理到了一起,与大家一同分享。希望大家能够大呼过瘾~

1. 给一个瞎子52张扑克牌,并告诉他里面恰好有10张牌是正面朝上的。要求这个瞎子把牌分成两堆,使得每堆牌里正面朝上的牌的张数一样多。瞎子应该怎么做?

答案:把扑克牌分成两堆,一堆10张,一堆42张。然后,把小的那一堆里的所有牌全部翻过来。

2. 如何用一枚硬币等概率地产生一个1到3之间的随机整数?如果这枚硬币是不公正的呢?

答案:如果是公正的硬币,则投掷两次,“正反”为1,“反正”为2,“正正”为3,“反反”重来。

如果是不公正的硬币,注意到出现“正反”和“反正”的概率一样,因此令“正反反正”、“反正正反”、“正反正反”分别为

1、

2、3,其余情况重来。另一种更妙的办法是,投掷三次硬币,“正反反”为1,“反正反”为2,“反反正”为3,其余情况重来。

3. 30枚面值不全相同的硬币摆成一排,甲、乙两个人轮流选择这排硬币的其中一端,并取走最外边的那枚硬币。如果你先取硬币,能保证得到的钱不会比对手少吗?

答案:先取者可以让自己总是取奇数位置上的硬币或者总是取偶数位置上的硬币。数一数是奇数位置上的面值总和多还是偶数位置上的面值总和多,然后总是取这些位置上的硬币就可以了。

4. 一个环形轨道上有n个加油站,所有加油站的油量总和正好够车跑一圈。证明,总能找到其中一个加油站,使得初始时油箱为空的汽车从这里出发,能够顺利环行一圈回到起点。

答案:总存在一个加油站,仅用它的油就足够跑到下一个加油站(否则所有加油站的油量加起来将不够全程)。把下一个加油站的所有油都提前搬到这个加油站来,并把油已被搬走的加油站无视掉。在剩下的加油站中继续寻找油量足以到达下个加油站的地方,不断合并加油站,直到只剩一个加油站为止。显然从这里出发就能顺利跑完全程。

另一种证明方法:先让汽车油箱里装好足够多的油,随便从哪个加油站出发试跑一圈。车每到一个加油站时,记录此时油箱里剩下的油量,然后把那个加油站的油全部装上。试跑完一圈后,检查刚才路上到哪个加油站时剩的油量最少,那么空着油箱从那里出发显然一定能跑完全程。

5. 初始时,两个口袋里各有一个球。把后面的n-2个球依次放入口袋,放进哪个口袋其概率与各口袋已有的球数成正比。这样下来,球数较少的那个口袋平均期望有多少个球?

答案:先考虑一个看似无关的问题——怎样产生一个1到n的随机排列。首先,在纸上写下数字1;然后,把2写在1的左边或者右边;然后,把3写在最左边,最右边,或者插进1和2之间……总之,把数字i等概率地放进由前面i-1个数产生的(包括最左端和最右端在内的)共i个空位中的一个。这样生成的显然是一个完全随机的排列。

我们换一个角度来看题目描述的过程:假想用一根绳子把两个球拴在一起,把这根绳子标号为1。接下来,把其中一个小球分裂成两个小球,这两个小球用标号为2的绳子相连。总之,把“放进第i个球”的操作想象成把其中一个球分裂成两个用标有i-1的绳子相连的小球。联想我们前面的讨论,这些绳子的标号事实上是一个随机的全排列,也就是说最开始绳子1的位置最后等可能地出现在每个地方。也就是说,它两边的小球个数(1,n-1)、(2,n-2)、(3,n-3)、……、(n-1,1)这n-1种情况等可能地发生。因此,小袋子里的球数大约为n/4个。准确地说,当n为奇数时,小袋子里的球数为(n+1)/4;当n为偶数时,小袋子里的球数为n^2/(4n-4)。

6. 考虑一个n*n的棋盘,把有公共边的两个格子叫做相邻的格子。初始时,有些格子里有病毒。每一秒钟后,只要一个格子至少有两个相邻格子染上了病毒,那么他自己也会被感染。为了让所有的格子都被感染,初始时最少需要有几个带病毒的格子?给出一种方案并证明最优性。

答案:至少要n个,比如一条对角线上的n个格子。n个格子也是必需的。当一个新的格子被感染后,全体被感染的格子所组成的图形的周长将减少0个、2个或4个单位(具体减少了多少要看它周围被感染的格子有多少个)。又因为当所有格子都被感染后,图形的周长为4n,因此初始时至少要有n个被感染的格子。

7. 在一个m*n的棋盘上,有k个格子里放有棋子。是否总能对所有棋子进行红蓝二染色,使得每行每列的红色棋子和蓝色棋子最多差一个?

答案:可以。建一个二分图G(X,Y),其中X有m个顶点代表了棋盘的m个行,Y有n个顶点代表了棋盘的n个列。第i行第j列有棋子就在X(i)和Y(j)之间连一条边。先找出图G里的所有环(由于是二分图,环的长度一定是偶数),把环里的边红蓝交替染色。剩下的没染色的图一定是一些树。对每棵树递归地进行操作:去掉一个叶子节点和对应边,把剩下的树进行合法的红蓝二染色,再把刚才去掉的顶点和边加回去,给这个边适当的颜色以满足要求。

8. 任意给一个8*8的01矩阵,你每次只能选一个3*3或者4*4的子矩阵并把里面的元素全部取反。是否总有办法把矩阵里的所有数全部变为1?

答案:不能。大矩阵中有36个3*3的小矩阵和25个4*4的小矩阵,因此总共有61种可能的操作。显然,给定一个操作序列,这些操作的先后顺序是无关紧要的;另外,在一个操作序列中使用两种或两种以上相同的操作也是无用的。因此,实质不同的操作序列只有2^61种。但8*8的01矩阵一共有2^64种,因此不是每种情况都有办法达到目的。

9. 五个洞排成一排,其中一个洞里藏有一只狐狸。每个夜晚,狐狸都会跳到一个相邻的洞里;每个白天,你都只允许检查其中一个洞。怎样才能保证狐狸最终会被抓住?

答案:按照2, 3, 4, 2, 3, 4的顺序检查狐狸洞可以保证抓住狐狸。为了说明这个方案是可行的,用集合F表示狐狸可能出现的位置,初始时F = {1, 2, 3, 4, 5}。如果它不在2号洞,则第二天狐狸已经跑到了F = {2, 3, 4, 5}。如果此时它不在3号洞,则第三天狐狸一定跑到了F = {1, 3, 4, 5}。如果此时它不在4号洞,则再过一晚后F = {2, 4}。如果此时它不在2号洞,则再过一天F = {3, 5}。如果此时它不在3号洞,再过一天它就一定跑到4号洞了。

方案不是唯一的,下面这些方案都是可行的:

2, 3, 4, 4, 3, 2

4, 3, 2, 2, 3, 4

4, 3, 2, 4, 3, 2

10. 一个经典老题是说,把一个3*3*3的立方体切成27个单位立方体,若每一刀切完后都允许重新摆放各个小块的位置,最少可以用几刀?答案仍然是6刀,因为正中间那个单位立方体的6个面都是后来才切出来的,因此怎么也需要6刀。考虑这个问题:若把一个n*n*n的立方体切成一个个单位立方体,最少需要几刀?

答案:事实上,从一个更强的命题出发反而能使问题变得更简单。对于一个a*b*c的长方体,我们需要f(a)+f(b)+f(c)刀,其中f(x)=⌈log(x)/log(2)⌉。只需要注意到,在整个过程中的任何一步,切完当前最大的块所需要的刀数也就等于整个过程还需要的刀数,因为其它小块需要的刀数都不会超过最大块所需刀数,它们都可以与最大块一道并行处理。这表明,我们的最优决策即是让当前的最大块尽可能的小,也就是说要把当前的最大块尽可能相等地切成两半。利用数学归纳法,我们可以很快得到本段开头的结论。

第二篇:java程序员面试题

姓名:

年龄:

工作年限:

1.int和Integer有什么区别?

2.抽象类(abstract class)和接口(interface)有什么异同?

3.List、Set、Map的区别?

4.Spring支持的ORM有哪些,哪些是你用过的?

5.使用Spring可以通过什么方式访问Hibernate或你使用过的任一ORM?

6.请你说明Spring路径“user/info/1”的含义?

7.你要求的工资待遇及你对你自己未来5年的职业规划?

第三篇:java程序员面试题

1、 你怎样理解Struts,又那些配置文件,以及作用? 理解:http://ruixin.iteye.com/blog/899289 配置文件:struts.xml 作用:struts 框架mvc 实现低耦合,便于程序的维护~ 配置文件控制流程的转向 很清晰~ 主要负责具体业务的实现和页面的转向~

2、 怎么样来捕获数据库中的异常?

3、 如何处理网页中的验证信息,如何友好的进行处理?

4、 用javaScript实现java中的监听器功能?

5、 你对对日外包的看法?

6、 数据库连接方式由哪几种?

Jdbc、连接池、hibernate

7、 你清楚哪几种设计模式,谈谈各种设计模式的类结构。

8、 谈谈jsp和sevlet的区别,以及它们性能上的区别。

jsp是servlet的一种简化,jsp编译后是"类servlet"。 servlet 主要是用来处理业务层;

jsp 则是主要负责 表现层。

servlet完全是java程序代码构成,擅长于流程控制和事务处理,而通过servlet来生成动态网页很不直观; 对于静态的html标签,servlet都必须使用页面输出流逐行输出。 Servlet中没有内置对象。 Jsp由html代码和jsp标签构成可以方便地编写动态网页,在struts框架中,jsp位于MVC设计模式的视图层,而servlet位于控制层。

总之,使用jsp只需要完成程序员需要输出到客户端的内容,至于jsp中的java脚本如果镶嵌到一个类中,由jsp容器完成,而servlet则是个完整的java类,这个类的service方法用于生成对客户端的响应

9、 如何来编写存储过程,如何优化存储过程,以及存储过程和TSQL的区别。

10、 提供的培训,CMM-5软件开发流程培训、代码编写规范和业务流程培训、对日语的培训。

1、 为什么要选择这个行业,和计算机专业的相比有什么优势?

2、 Servlet是什么,以及生命周期?

Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其destroy方法。

与cgi的区别在于servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于servlet。

3、 怎么理解事务?

4、 怎么理解MVC?

自己做自己的事情,主要强调分层,

5、 同时插入大量数据,使用何种方法优化?Batch

6、 多个有关系得怎么样操作?

7、 你认为你还有什么优点在前面没有提到?

8、 对加班的看法?

9、 与上级意见不一致时怎么样处理?

10、

11、

12、

13、

14、

15、

16、

17、

18、

19、 20、

21、

22、

23、 你如何理解团队精神?

你怎样处理学习新技术和项目开发之间的矛盾? 怎样去学习新技术?

作为一个初级程序员怎么样弥补与有经验程序员之间的差距? 你对索引的理解,索引有几种,什么时候用索引? 对Oracle理解?

怎样优化复杂的查询语句? 你对Jdbc理解?

对Finally块的理解和应用? 游标的理解? ResultSet 重载,重写? 签名

EJB的事务,Hibernate的事务? Struts的标签? 重定向和跳转? A、:效率高,速度快

a.地址栏不改变跳转——服务器端跳转,服务器之间内部转,相同的request,可传参;

b.执行到跳转语句后无条件立刻跳转——之后的代码不再被执行;

注意:如果使用forward跳转,则一定要在跳转之前释放掉全部的资源;

c.使用forward时,request设置的属性依然能保留在下一个页面(setAttribute); d.通过传递参数。

e.地址中的”/”代表是:http://localhost:8080/Test B、response.sendRedirect(“地址”):效率低,速度慢

a.地址栏改变跳转——客户端跳转(其中地址可以是任意的)

b.所有代码执行完毕之后再跳转,跳转语句后面的代码还是会执行,除非在其后面加上return(return)需复杂一些。

<% Response.sendRedirect(“aa.jsp”); boolean b = true;

if(b){ Return; } System.out.println(“aaaaaaaaaa”); %>

c.不能保存request属性——地址改变了,客户端跳转,不同的request d.通过对URL地址的重写传递参数:

response.sendRedirect(“responseDemo04.jsp?id=mldn”);

e.地址中的”/”代表是:http://localhost:8080/

下面是两种比较重要的跳转,我还是与上次的一次,把我做的笔记贴出来:

24、

25、 Hibernate的左联结和右连接,缓存,数据加载? 面向对象如何理解?

26、 EJB中CMP和BMP,SessionBean的机制?

27、

28、

29、 对日外包是否有抵触情绪? 如何减少Servlet的请求? 对设计模式了解多少?作过的项目中用过那些设计模式? 30、

31、

32、

33、

34、

35、

36、

37、

38、

39、 40、

41、

42、

43、

44、

45、 怎样看待团队合作,在团队合作中你扮演什么样的角色,遇到技术难题时怎么解决? Exception的层次结构? EJB对数据库的访问机制? Struts中是否有事务处理? Hibernate的其它功能(除了ORM)? 如何提高数据库中的数据查询效率? 作为项目经理如何对组内成员分工? 描述一下你做过项目的流程。

加班到12点,突然有人来问你技术上的难题,你会如何处理? Oracle的冷备份、热备份 Strurs中怎样实现 Hibernate怎样实现ORM Spring 的事务处理机制

Strurs的验证方式,Javascript的验证的方式

一个是服务器端验证,一个是客户端验证

Struts的工作机制 Delete/trancate的区别

trancate与delete都是删除数据,不同的是trancate是将表的所有数据都删除,而delete可以有选择地删除数据; delete删除数据是记录在日志中的,可以通过其将数据恢复,而trancate则是将整个表截断,其操作是不记录在日志里的。

46、

47、

48、 作为项目组长,你遇到的最大问题是什么?如何解决?

Ajax/内嵌框架实现局部刷新,有什么差别?

Exception/Error的区别,在什么情况下可以抛出RuntimeException 父类不同

知道异常和错误最本质的区别就是异常能被开发人员处理而错误时系统本来自带的,一般无法处理也不需要我们程序员来处理。

在程序运行时候出错而又不是系统原因差生的,一般是由于程序原因产生,比如程序写的不够严谨、完善

典型的RuntimeException

ArithmeticException、ClassCastException、IndexOutOfBoundsException、NullPointerException、UnsupportedOperationException 等.

49、 50、

51、

52、

53、

54、

55、

56、

57、

58、

59、 Orcale 物化视图(MV)

业务处理模块中,是如何处理事务? Sql语句如何优化 数据库右连接

JDBC的连接关闭在哪?

Finally语句块内

错误处理模块是放在哪个层的。 接口能否继承接口。

接口可以继承接口..但是要使用extends~而不是用implements 抽象类能否继承实体类。

抽象类是可以继承实体类,但前提是实体类必须有明确的构造函数 答案很明确,可以继承。

项目中查询时怎么样实现的?

作为项目负责人你是管理这个团队的?

在你做项目过程中遇到些什么问题,是怎么样解决的?

Jquery中的几种选择器:

Javascript如何进行数字和字符串之间的转换?

数字类型转换成String类型用 对象=对象.toString() 方法,字符串转换成数字类型则是对象=Number(对象);

第四篇:Java程序员面试题

1、面向对象的特征有哪些方面? 答:面向对象的特征主要有以下几个方面:1)抽象2)继承3)封装4)多态性

2、作用域public,private,protected,以及不写时的区别 答:区别如下:

作用域 当前类 同包 子类 其他 public √ √√ √ protected√√√ × default √√× × private √×××

类的成员不写访问修饰时默认为default。默认对于同一个包中的其他类相当于公开(public),对于不是同一个包中的其他类相当于私有(private)。受保护(protected)对子类相当于公开,对不是同一包中的没有父子关系的类相当于私有。

3、String 是最基本的数据类型吗? 答:不是。Java中的基本数据类型只有8个:byte、short、int、long、float、double、char、boolean;除了基本类型(primitive type)和枚举类型(enumeration type),剩下的都是引用类型(reference type)。

4、float f=3.4;是否正确? 答:不正确。3.4是双精度数,将双精度型(double)赋值给浮点型(float)属于下转型(down-casting,也称为窄化)会造成精度损失,因此需要强制类型转换float f =(float)3.4; 或者写成float f =3.4F;。

5、int 和Integer 有什么区别? 答:Java是一个近乎纯洁的面向对象编程语言,但是为了编程的方便还是引入不是对象的基本数据类型,但是为了能够将这些基本数据类型当成对象操作,Java为每一个基本数据类型都引入了对应的包装类型(wrapper class),int的封装类就是Integer,从JDK 1.5开始引入了自动封箱/解封箱机制,使得二者可以相互转换。

Java 为每个原始类型提供了封装类:

原始类型: boolean,char,byte,short,int,long,float,double 封装类型:Boolean,Character,Byte,Short,Integer,Long,Float,Double

6、数组有没有length()方法?String 有没有length()方法?

答:数组没有length()方法,有length 的属性。String 有length()方法。

7、在Java 中,如何跳出当前的多重嵌套循环?

答:在最外层循环前加一个标记如A,然后用break A;可以跳出多重循环。

8、是否可以继承String 类? 答:String 类是final类,不可以被继承。

9、当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递? 答:是值传递。Java 编程语言只有值传递参数。当一个对象实例作为一个参数被传递到方法中时,参数的值就是对该对象的引用。对象的属性可以在被调用过程中被改变,但对象的引用是永远不会改变的。C++和C#中可以通过传引用或传输出参数来改变传入的参数的值

10、抽象类(abstract class)和接口(interface)有什么异同? 答:

抽象类和接口都不能够实例化,但可以定义抽象类和接口类型的引用。

一个类如果继承了某个抽象类或者实现了某个接口都需要对其中的抽象方法全部进行实现,否则该类仍然需要被声明为抽象类。 接口比抽象类更加抽象,因为抽象类中可以定义构造器,可以有抽象方法和具体方法,而接口中不能定义构造器而且其中的方法全部都是抽象方法。

抽象类中的成员可以是private、默认、protected、public的,而接口中的成员全都是public的。抽象类中可以定义成员变量,而接口中定义的成员变量实际上都是常量。有抽象方法的类必须被声明为抽象类,而抽象类未必要有抽象方法。

11、静态变量和实例变量的区别?

答:静态变量也称为类变量,属于类,不属于类的任何一个对象,一个类不管创建多少个对象,静态变量在内存中有且仅有一个拷贝;实例变量必须依存于某一实例,需要先创建对象然后通过对象才能访问到它。

12、String s=new String(“xyz”);创建了几个字符串对象?

答:两个对象,一个是静态存储区的"xyx",一个是用new创建在堆上的对象

13、接口是否可继承(extends)接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承具体类(concrete class)? 答:接口可以继承接口。抽象类可以实现(implements)接口,抽象类可继承具体类,但前提是具体类必须有明确的构造函数

14、Java 中的final关键字有哪些用法?

答:(1)修饰类:表示该类不能被继承;(2)修饰方法:表示方法不能被重写;(3)修饰变量:表示变量只能一次赋值以后值不能被修改(常量)

15、Error 和Exception 有什么区别? 答:Error 表示系统级的错误和程序不必处理的异常,是恢复不是不可能但很困难的情况下的一种严重问题;比如内存溢出,不可能指望程序能处理这样的情况;Exception 表示需要捕捉或者需要程序进行处理的异常,是一种设计或实现问题;也就是说,它表示如果程序运行正常,从不会发生的情况。

选择题

1、在Java

Applet程序用户自定义的Applet子类中,一般需要重载父类的(D)方法来完成一些画图操作。

A. start()

B.

stop()

C.

init()D.

paint()

2、Java语言具有许多优点和特点,下列选项中,哪个反映了Java程序并行机制的特点? ( B )

A)安全性

B)多线程

C)跨平台

D)可移植

3、下列哪个类声明是正确的?( D )

A)abstract final class HI{···} B)abstract private move(){···}C)protected private number;

D)public abstract class Car{···

4、在Java语言中,下列哪些语句关于内存回收的说明是正确的? ( B )

A.程序员必须创建一个线程来释放内存;

B.内存回收程序负责释放无用内存

C.内存回收程序允许程序员直接释放内存

D.内存回收程序可以在指定的时间释放内存对象

5、字符串是Java已定义的类型,关于它的构造函数,下面说法不正确的是: B

A.String(char[] value, int offset, int count)

B.String(int[] codePoints,int offset,

int count)

C.String(String original)

D.String(StringBuffer buffer)

6、下列说法中正确的是: C

A.导入包会影响程序的性能 B.包存储在类库中

C.包是类的容器D.上述说法都不对

7、哪个关键字可以对对象加互斥锁? B

A.transient

B.synchronized

C.serialize

D.static

8、下列叙述中,错误的是: D

A、父类不能替代子类

B、子类能够替代父类

C、子类继承父类

D、父类包含子类

9、下列关于Java多线程并发控制机制的叙述中,错误的是:BC

A、Java中对共享数据操作的并发控制是采用加锁技术

B、线程之间的交互,提倡采用suspend()/resume()方法

C、共享数据的访问权限都必须定义为private

D、Java中没有提供检测与避免死锁的专门机制,但应用程序员可以采用某些策略防止死锁的发生

10、下列哪一个方法不是applet程序的组成部分:D

A、init()

B、start()

C、stop()

D、new()

11、下列Applet类的方法中,在Applet的整个生命周期里至多只执行一次的是:A

A、init()

B、start() C、stop()

D、paint()

12、启动一个线程所调用的方法是:C

A、run()

B、init()

C、start()

D、new()

13、编译Java

Application 源程序文件将产生相应的字节码文件,这些字节码文件的扩展名为(

B

)。

A..java

B.

.class

C.

.html

D.

.exe

二、填空题(每空格1分,共20分)

1、开发与运行Java程序需要经过的三个主要步骤为编辑源程序、编译生成字节码和解释运行字节码。

2、如果一个Java

Applet源程序文件只定义有一个类,该类的类名MyApplet,则类MyApplet必须是Applet类的子类并且存储该源程序文件的文件名为MyApplet 。

3、若x=5,y=10,则x=y的逻辑值分别为true和false。

4、抽象(abstract)方法方法是一种仅有方法头,没有具体方法体和操作实现的方法,该方法必须在抽象类之中定义。最终(final)方法方法是不能被当前类的子类重新定义的方法。

5、在Java程序中,通过类的定义只能实现单重继承,但通过接口的定义可以实现多重继承关系

第五篇:Java程序员面试题

北京千渡网讯科技有限公司博宝艺术网http://

Java程序员面试题

1. 下列程序段执行后,t5的结果是_____.

int t1=5,t2=6,t3=7,t4,t5;

t4 = t1

t5 = t4

2.String s = new String("xyz");创建了_____个String Object.

3. 类型转换

 int x=4;

System.out.println(“value is ” +((x>4)?99.9:9)); 输出是______;

4.Boolean类型

boolean a = false;

if (a = true){

System.out.println(true);

} else {

System.out.println(false);结果是______;

5. int i = 5;

Integer iInteger = new Integer(i);

Integer jInteger = new Integer(i);

System.out.println(i == iInteger);

System.out.println(iInteger == jInteger);输出结果是______;

6.

TreeSet map = new TreeSet();

map.add("one");

map.add("two");

map.add("three");

map.add("four");

map.add("one");

Iterator it = map.iterator();

while (it.hasNext() ) {

System.out.print( it.next() + " " );

}

输出结果是 ________________________________________;

7

class Polish {

public static void main(String[] args) {

int x = 4;

StringBuffer sb = new StringBuffer("..fedcba");

sb.delete(3,6);

sb.insert(3, "az");

if(sb.length() > 6)x = sb.indexOf("b");

sb.delete((x-3), (x-2));

System.out.println(sb);

北京千渡网讯科技有限公司博宝艺术网http://

}

}

结果是: ____________

8. class Emu {

static String s = "-";

public static void main(String[] args) {

try {

throw new Exception();

} catch (Exception e) {

try {

try { throw new Exception();

} catch (Exception ex) { s += "ic "; }

throw new Exception();

} catch (Exception x) { s += "mc "; }

finally { s += "mf "; }

} finally { s += "of "; }

System.out.println(s);结果是:______________________

9..抽象类和接口的区别

10.写一个方法,实现字符串的反转,如:输入abc,输出cba

11.short s1 =1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?

12.下列哪些集合能够改变其容量大小,同时能够根据索引访问其元素,并且访问方法是非线形安全的?

A. java.util.HashSet

B. java.util.LinkedHashSet

C. java.util.List

D. java.util.ArrayList

E. java.util.Vector

F. java.util.PriorityQueue

13.下列关于泛型的说法,错误的是()

A、泛型是一种参数化类型

B、可以取代继承机制。

C、避免了运行时进行类型转换可能的潜在性错误

D、增强了程序的灵活性和安全性

14. 下面关于System.out的说法哪些是正确?

A. System.out是1个PrintStream。

B. System.out是1个OutputStream。

C. System.out是1个FilterOutputStream。

D. System.out不是1个PrintStream。

E. System.out在异常时,将抛出IOException

15.String与StringBuffer的区别?

上一篇:从项目管理的角度而言下一篇:创新能力核心能力模型

本站热搜

    相关推荐