Java逻辑思维面试
【7】五个大小相同的一元人民币硬币。要求两两相接触,应该怎么摆?
【8】猜牌问题
S 先生、P先生、Q先生他们知道桌子的抽屉里有16张扑克牌:红桃A、Q、4 黑桃J、8、4、2、7、3 草花K、Q、5、4、6 方块A、5。约翰教授从这16张牌中挑出一张牌来,并把这张牌的点数告诉 P先生,把这张牌的花色告诉Q先生。这时,约翰教授问P先生和Q 先生:你们能从已知的点数或花色中推知这张牌是什么牌吗? 于是,S先生听到如下的对话:P先生:我不知道这张牌。
Q先生:我知道你不知道这张牌。
P先生:现在我知道这张牌了。
Q先生:我也知道了。
听罢以上的对话,S先生想了一想之后,就正确地推出这张牌是什么牌。
请问:这张牌是什么牌?
【9】一个教授逻辑学的教授,有三个学生,而且三个学生均非常聪明!
一天教授给他们出了一个题,教授在每个人脑门上贴了一张纸条并告诉他们,每个人的纸条上都写了一个正整数,且某两个数的和等于第三个!(每个人可以看见另两个数,但看不见自己的)
教授问第一个学生:你能猜出自己的数吗?回答:不能,问第二个,不能,第三个,不能,再问第一个,不能,第二个,不能,第三个:我猜出来了,是144!教授很满意的笑了。请问您能猜出另外两个人的数吗?
面试题真题
填空题
1.OOP的特征:(封装、继承、多态、抽象);
2.Oracle触发器从执行时间顺序上可分为:(before触发器、after触发器);从响应范围上可分为:();
3.Java的访问控制修饰符包括(default、public、private、protected);
4.数据库中事务(Transaction)的4个属性:(原子性、一致性、隔离性、持续性/永久性);
5.Oracle数据库的备份命令是(exp);数据库的恢复命令是(imp);
6.使用显示游标有4个步骤:(声明游标,打开游标,从游标中获取结果集 ,关闭游标);声明游标
判断题
1.Java类是可以实现多继承。( 错 )
2.String类是不可以被继承的。( 对 )
3.&&是位运算符,表示按位与运算;&是逻辑运算符,表示逻辑与(and)。( 错 )
4.String是Java的一个基本数据类型。( 错 )
5.Java中多线程有两种实现方法,分别是继承Thread类和实现Runnable接口。( 对 )
6.执行“TRUNCATE TABLE DB_TRAIN;”语句后,必须使用“COMMIT”进行提交。( 对 )
7.Oracle数据库中实例和数据库是一一对应的。( 对 )
8.“北京西站”,可以通过like‘%北京_’查询出来。( 错 )
9.Oracle数据库中“SELECT SYSDATE FROM DUAL;”查询结果返回当前数据库服务器的时间。( 对 )
10.Insert,delete,update,select是DCL语句。( 错 )
选择题
1.下列不是继承Collection接口的是(C)
A.List B.Set C.Map
2.数组(B)length这个方法?String( A )length这个方法?
A 有 B 无
3.String s=new String(”xyz”);创建了(B)个String Object?
A 1 B 2 C 3 D 4
4.构造器Constructor( B )可被override?(A)可以被Overloading?
`A 是 B 否
5.当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里是(A)
A 值传递 B 引用传递
6.在ORACLE中,一个用户拥有的所有数据库对象统称为(B)
A: 数据库 B: 模式 C: 表空间 D: 实例
7.下面哪个语句是错误的 ( D )
A: create synonym dept_synon for user.db_dept ;
B: create sequence dept_seque increment by 1;
C: alter sequence dept_seque increment by 2;
D: drop dept_synon;
8.下面哪个不是ORACLE数据库程序设计中的循环语句 ( A)
A: for...next B: loop...end loop C: while...end loop D: for...end loop
9.若tnsnames.ora文件中部分配置如下:
KMISSVR=
(DESCRIPTION=
(ADDRESS=(PROTOCOL=TCP)(HOST=HELLO)(PORT=1521))
(CONNECT_DATA=
(SERVER=DEDICATED)
(SERVICE_NAME=KMIS)
)
)
则表明:( C )
A: Oracle服务器所在的主机名为DEDICATED
B: Oracle服务器所在的主机名为KMIS
C: 对应数据库的SID名为KMIS
D: 对应数据库的SID名为KMISSVR
10.现在要启动数据库,那么下面哪一个语句是错误的 (A)
A: STARTUP NORMAL
B: STARTUP FORCE
C: STARTUP NOMOUNT
D: STARTUP MOUNT
11.在Oracle中,用下面语句定义了一个存储过程:(B)
CREATE PROCEDURE TRAIN_REPAIR(VALUE1 IN VARCHAR2,VALUE2 OUT NUMBER,VALUE3 IN OUT VARCHAR2) AS
BEGIN
....
END;
假定使用的变量都已经定义,下面对过程TRAIN_REPAIR的调用语法正确的是( B )
A: TRAIN_REPAIR(‘YZ’,10,V3)
B: TRAIN_REPAIR(‘YZ’,V2,V3)
C: TRAIN_REPAIR(V1,V2, ‘RZ’)
D: TRAIN_REPAIR(‘YZ’,10,‘RZ’)
12.在Oracle中,select语句中用来连接字符串的符号是( C )
A: “+” B: “&” C: “||” D: “|”
解释
1.oracle数据库中的连接符为||,例如连接字符串AB、CD可以使用“AB”||“CD”;
2、SQL SERVER 数据库连接符为+,例如连接字符串AB、CD可以使用“AB”+“CD”;
3、MYSQL数据库中连接符为+,例如连接字符串AB、CD可以使用“AB”+“CD”;
13.在SQLPLUS中,执行外部脚本使用的命令是( B )
A: / B: @脚本 C: EXE 脚本 D: 不能在SQLPLUS中直接运行脚本
14.下面说法正确的有 (A )
A: 在Oracle中运行“select rtrim(‘abcdef’,‘bc’) from dual;”的结果是:def
B: 在Oracle中运行“select replace(‘a&a&b’, ‘&’,‘-’) from dual;”的结果是:a-a-b
C: 在Oracle中运行“select instr(‘abcdef’,‘e’) from dual;”的结果是:4
D: 在Oracle中运行“select nvl( null , 3 ) from dual;”的结果是:3
15.假设TRAINSTATUS中有10行数据,如果想查出此表中第5行数据,可以使用下列选项哪个查询语句( B )
A: SELECT * FROM TRAINSTATUS WHERE ROWID=5 ;
B: SELECT * FROM TRAINSTATUS WHERE ROWNUM=5 ;
C: SELECT * FROM TRAINSTATUS WHERE ROW=5 ;
D: SELECT * FROM TRAINSTATUS WHERE ROWNO=5 ;
简答题
1.OOP的3个基本特征是什么,并简述其中的一个特征。
拓展:OOP:Object Oriented Programming 面向对象的程序设计
OOD:Object - Oriented Design,面向对象设计
Object-Oriented Analysis:面向对象分析方法
基本特征是:继承、多态、封装
米一个的特征具体解释:
封装 :就是将一个类的使用和实现分开,只保留部分接口和方法与外部联系
继承:子类自动继承其父级类中的属性和方法,并可以添加新的属性和方法或者对部分属性和方法进行重写。继承增加了代码的可重用性。
多态:多个子类中虽然都具有同一个方法,但是这些子类实例化的对象调用这些相同的方法后却可以获得完全不同的结果,多态性增强了软件的灵活性。
2.简述String、StringBuffer、StringBuilder的区别。
String是个不可变长度的字符串,而StringBuffer是个可变长度的字符串;
在对String类进行操作的时候(例如增加字符),实际上是在内存中产生了一个新的String对象;而StringBuffer是给原对象增加字符,不是新创建一个对象
StringBuilder是线程非安全的,StringBuffer是线程安全的,二者的方法都是一样的
3.简述&和&&的区别。
&和&& 都可以作为逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一个为false,则结果为false。
&& 还具有短路的功能,即如果第一个表达式为false则不再计算第二个表达式。
&还有可以用作位运算符,当&操作符两边的表达式不是boolean类型时,&表示按位与操作
4.简述HashMap和Hashtable的区别。
他们都是Map接口的具体实现,HashMap是Hashtable的轻量级实现(非线程安全的具体实现),主要的区别在于HashMap允许空(null)键值(key),由于非线程安全,在只有一个线程访问的情况下,效率高于Hashtable
HashMap允许将null一个entry的key或者value,而Hashtable不允许。
HashMap把Hashtable的contains方法去掉,改成containsvalue和containskey。
Hashtable继承自Directory类,而HashMap是Java1.2引进的Map interface 的一个实现
Hashtable是synchronize的而HashMap不是,在多个线程访问Hashtable时,不需要自己为他的方法实现通过不,而HashM啊就必须为之提供外同步
5.Java实现多态的机制是什么?
靠的是父类或接口定义的引用变量可以执行子类或具体实现类的实例对象,二程序调用的方法在运行期才动态绑定,就是应用变量所指向的具体实例对象方法,也就是内存李政宰运行的那个对象的方法,而不是引用变量的类型中定义的方法。
6.==与equals()的区别。
== 操符专门用来比较两个变量的值是否相等,也就是用于比较变量所对应的内存中所存储的数值是否相同,要比较两个基本类型的数据或两个引用变量是否相等,只能用 == 操作符
如果一个变量所指向的数据是对象类型额,那么这时候设计了两块内存,对象本身占用一块内存(堆内存),变量也占用一块内存,例如Object obj = new Object(); 变量obj是一个内存 new Object() 是另外一块内存,此时,变量obj锁碎影的内存中存储的数值就是对象占用的那块内存的首地址。
equals方法是用于比较两个独立对象的内容是否相同,
简单的说就是 == 这个用于比较两个对象的地址是否相同,记住,通过new 出来的对象一定是不同的,equals用于比较对象的内容是否相同
7.Try{}里有一个return语句,那么紧跟在这个try后面的finally{}里的code会不会执行,什么时候执行,在return之前还是之后?
会执行,finally语句总会执行的除非遇到一些特殊情况如Systemexit(0)
return语句并不一定就结束一段程序,当它和finally一起使用但是finally语句中无return时会先等finally语句执行完成后再返回值,
当finally语句中有return语句时会直接返回finally中return的语句。
8.Int和Integer各是什么数据类型,这2种数据类型存储的内容各是什么?(6分)
9.final和finally,finalize的区别(6分)
final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。
内部类要访问局部变量,局部变量必须定义成final类型
finally 是一场处理语句结构的一部分,表示总是执行。
finalize 是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收。
10.abstract class和interface的区别(6分)
含有abstract修饰符的class即为抽象类,abstract类不能创建的实例对象,含有abstract方法的类必须定义为abstract class,abstract class 类中的法国法不必是抽象的,abstract class 类中定义抽象方法必须在具体子类中实现,所以不能有抽象构造方法或静态方法。如果子类没有实现父类中的所有抽象方法,呢么子类必须定义为抽象类型
接口interface可以说是抽象类的一种特殊实例,解耦中的所有方法都必须是抽象的。接口中的方法定义默认为public abstract类型,接口中的成员变量类型默认是public static final
下面比较一下两者的区别:
1.抽象类可以有构造方法,接口中不能有构造方法
2.抽象类中可以有普通成员变量,接口中没有普通成员变量
3.抽象类中可以包含非抽象的普通方法,接口中的所有方法必须是抽象的不能有非抽象的普通方法
4.抽象类中的抽象方法访问的类型可以是public protected 和默认类型
11.UML里包含哪些图,请绘制简单工厂模式的类图?(10分)
用例图、静态图、(包括类图、对象图、包图),行为图、交互图(顺序图、合作图),实现图
12.说出数据连接池的工作机制是什么?
数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而再不是重新建立一个;释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。这项技术能明显提高对数据库操作的性能。
具体工作机制如下:
数据库连接池在初始化时将创建一定数量的数据库连接放到连接池中,这些数据库连接的数量是由最小数据库连接数来设定的。无论这些数据库连接是否被使用,连接池都将一直保证至少拥有这么多的连接数量。连接池的最大数据库连接数量限定了这个连接池能占有的最大连接数,当应用程序向连接池请求的连接数超过最大连接数量时,这些请求将被加入到等待队列中。
数据库连接池的最小连接数和最大连接数的设置要考虑到下列几个因素:
1) 最小连接数是连接池一直保持的数据库连接,所以如果应用程序对数据库连接的使用量不大,将会有大量的数据库连接资源被浪费;
2) 最大连接数是连接池能申请的最大连接数,如果数据库连接请求超过此数,后面的数据库连接请求将被加入到等待队列中,这会影响之后的数据库操作。
3) 如果最小连接数与最大连接数相差太大,那么最先的连接请求将会获利,之后超过最小连接数量的连接请求等价于建立一个新的数据库连接。不过,这些大于最小连接数的数据库连接在使用完不会马上被释放,它将被放到连接池中等待重复使用或是空闲超时后被释放。
13.例举5种j2ee常用的设计模式。
适配器模式
工厂模式
建造者模式
单例模式
策略模式
14.Oracle中,请写出两种方式把数值类型COLUMN列的空值(NULL)输出为0。
nvl函数
select nvl(null,0) from dual;
还有一个decode函数
如果所在列是空,就用0代替,如果不是null就是相应的字段信息
select decode(cloum_name,null,0,cloum_name) from dual;
还可以用‘_’来代替空
select decode(cloum_name,null,‘_‘,cloum_name) from dual;
数据库题
表1:TRAININFO(TRAINID,TRAINKIND,TRAINTYPE)
111111 YZ 25T
222222 YZ 25T
333333 YW 25T
444444 YW 25T
555555 RW 25T
表2:TRAINREPAIR(TRAINID,REPAIRDATE,REPAIRSTATION)
111111 2010-10-31 唐山厂
222222 2011-11-30 四方厂
333333 2012-12-31 厂客厂
444444 2013-12-31 西安厂
555555 2014-5-31 铺镇厂
其中表1和表2的唯一主键都是TRAINID,并且可以利用TRAINID列建立两张表数据的一一对应关系,要求使用SQL语言的隐性链接和显示链接两种编写方式,查询出如下数据:
111111 YZ 25T 2010-10-31 唐山厂
222222 YZ 25T 2011-11-30 四方厂
333333 YW 25T 2012-12-31 厂客厂
444444 YW 25T 2013-12-31 西安厂
555555 RW 25T 2014-5-31 铺镇厂
原文地址:https://www.cnblogs.com/qichunlin/p/9338375.html
时间: 2024-11-14 12:27:37