智力题
【10】某城市发生了一起汽车撞人逃跑事件,该城市只有两种颜色的车,蓝色15% 绿色85%,事发时有一个人在现场看见了,他指证是蓝车,但是根据专家在现场分析,当时那种条件能看正确的可能性是80%那么,肇事的车是蓝车的概率到底是多少?
【11】有一人有240公斤水,他想运往干旱地区赚钱。他每次最多携带60公斤,并且每前进一公里须耗水1公斤(均匀耗水)。假设水的价格在出发地为0,以后,与运输路程成正比,(即在10公里处为10元/公斤,在20公里处为20元/公斤......),又假设他必须安全返回,请问,他最多可赚多少钱?
【12】现在共有100匹马跟100块石头,马分3种,大型马;中型马跟小型马。其中一匹大马一次可以驮3块石头,中型马可以驮2块,而小型马2头可以驮一块石头。问需要多少匹大马,中型马跟小型马?(问题的关键是刚好必须是用完100匹马)
不定项选择题
1.设有一个关系EMP(职工号,姓名,部门名,工种,工资),若需查询不同部门中担任“钳工”的职工的平均工资,则相应的查询语句为:
SELECT 部门名,AVG(工资) AS 平均工资
FROM EMP
GROUP BY ( 1 ) A
HAVING ( 2 ) A
将职工号为“23115”、姓名为“李军”、部门名为“硬件测试部”的元组插入EMP关系中的SQL语句为:
INSERT ( 3 ) A
(1)A: 部门名 B: 姓名 C: 职工号 D: 工种
(2)A:工种=‘钳工’ B: ‘工种=钳工’ C: ‘工种’=钳工 D: 工种=钳工
(3)
A: into EMP values(‘23115’,‘李军’,‘硬件测试部’,,)
B: set to EMP values(‘23115’,‘李军’,‘硬件测试部’,,)
C: into EMP values(23115,李军,硬件测试部,,)
D: set to EMP values(23115,李军,硬件测试部,,)
2.某二叉树的先序遍历序列为ABFCDE,中序遍历序列为BFADCE,则该二叉树根的左孩子和右孩子结点分别是( D )
A: B和C B: F和B C: B和F D: C和B
3.在了解程序内部结构和流程后,通常采用( A )验证程序内部逻辑是否满足设计需求,此时可使用( A )技术设计测试案例
(1)A: 白盒测试 B: 黑盒测试 C: 等价类划分 D: 边界值分析
(2)A: 逻辑覆盖 B: 边界值分析 C: 因果图 D: 等价类划分
函数调用时,基本的参数传递方式有传值和传地址两种 ( D )。
A: 在传值方式下,形参将值传给实参
B: 在传值方式下,实参不能是数组元素
C: 在传地址方式下,实参可以是任意的变量和表达式
D: 在传地址方式下,形参和实参间可以实现数据的双向传递
函数调用时基本的参数传递方式有传值与传地址两种,在传值方式下是将实参的值传递给形参,因此实参可以是表达式(或常量),也可以是变量(或数组元素),这种信息传递是单方向的,形参不能再将值传回给实参。在传地址方式下,需要将实参的地址传递给形参,因此,实参必须是变量(数组名或数组元素),不能是表达式(或常量)。这种方式下,被调用函数中对形式参数的修改实际上就是对实际参数的修改,因此客观上可以实现数据的双向传递。
4.用户访问某WEB网站时,浏览器上显示“HTTP-404”错误,则故障原因是(D)。
A: 默认路由器配置不当 B: 用户无权访问
C: WEB服务器内部出错 D: 所请求当前页面不存在
解释:
当Web服务器内部出错时,浏览器会显示"HTTP-500"错误。
5.折半(二分)查找方法对查找表的要求是 ( D )
A: 链表存储结构,元素有序排列 B: 链表存储结构,元素无序排列
C: 顺序存储结构,元素无序排列 D: 顺序存储结构,元素有序排列
解释:
二分查找的基本思想是:首先将给定值与表中间位置上元素的关键字进行比较,若相等,则查找成功;若给定值大于表中间位置上元素的关键字,则下一次到查找表的后半子表进行二分查找,否则下一步到表的前半子表进行二分查找。这样就可逐步缩小范围,直到查找成功或子表为空时失败为止。显然,查找表的元素若是无序排列的方式,则上述查找过程是没有意义的。另外,由于需要能直接定位表中间位置的元素,即实现随机访问,因此只有顺序存储结构能满足此要求,在链表上只能进行顺序查找。
6.若需将一个栈S中的元素逆置,则以下处理方式中正确的是 ( D )
A: 将栈S中的元素依次出栈并入栈T,然后栈T中元素依次出栈并入栈S 还是原来的顺序
B: 直接交换栈顶元素和栈底元素
C: 直接交换栈顶指针和栈底指针
D: 将栈S中的元素依次出栈并入队,然后使该队列元素依次出队并入栈S
解释:
栈是后进先出,队列是先进先出
7.关于查找运算及查找表的叙述,正确的是( ABD)
A: 哈希表可以动态创建
B: 二叉排序树属于动态查找表
C: 二分查找表要求查找表采用顺序存储结构或循环链表结构
D: 顺序查找方法既适用于顺序存储结构,也适用于链表结构
解释:
链式存储是顺序查找
8.E-R图的三要素是( BCD)
A: 基本表 B: 实体 C: 联系 D: 属性
解释:
E-R方法的三要素是:实体(entity)、属性(attribute)、联系(relationship)。
矩形框代表实体;表示连接两个实体之间的联系用菱形框表示;椭圆表示实体的属性
9.执行下列代码后,String[ ] s = new String[10],哪个结论是正确的(B D)
A: s[10]为“” B: s[9]为null C: s[0]为未定义 D: s.length为10
10.指出下列哪个方法与方法public void add(int a){}为合理的重载方法( B C )
A: public int add(int a) B: public void add(long a)
C: public void add(int a,int b) D: public int add(float a)
解释:
重载就是方法名相同参数列表不相同
11.下列说法正确的是 (A C )
A: 环境变量可在编译source code时指定
B: 在编译程序时,所能指定的环境变量不包括class path
C: javac一次可同时编译数个java源文件
D: javac.exe能指定编译结果要置于哪个目录(directory)
12.若程序中定义了全局变量和局部变量,则下面说法错误的是(ABC )
A: 在函数内只能访问局部变量,但不能访问全局变量
B: 局部变量的名字和全局变量的名字不能相同
C: 一个函数被多次调用的时候,其定义的局部变量必定分配同一个存储单元
D: 函数中定义的局部变量和全局变量同名时,在函数内引用的是局部变量
解释:
变量的作用域是引用变量的代码范围,可以是局部的,也可以是全局的。全局变量的作用域是整个程序或文件,在函数内完全可以访问全局变量。所以,选项A的说法是错误的。 在程序运行过程中,每次调用一个函数,都会为该函数的运行创建活动记录,其中包括函数运行所需要的数据信息以及控制信息,在函数运行结束后,则释放这些活动记录。如果函数多次运行,那么定义的局部变量不一定分配同一个存储单元。所以,选项C的说法错误。 局部变量的作用域是定义该变量的函数。根据最近嵌套原则,如果全局变量与局部变量的名称相同,那么,在局部变量的作用域中,引用的是局部变量。选项D的说法正确,相应,选项B的说法错误。
13.关于栈和队列的叙述,正确的是(ABC )
A: 栈和队列都是操作受限的线性表
B: 队列采用单循环链表存储时,只需设置队尾指针就可使入队和出队操作时间复杂度都为O(1)
C: 若队列的数据规模n可以确定,则采用顺序存储结构比链式存储结构效率更高
D: 利用两个栈可以模拟一个队列的操作,反之亦可
解释:
队列是先进先出栈是后进先出 两者的性质不一样无法模拟
14.下面(BC)是java多态的实现。
A: 继承 B: 重载 C: 覆盖 D: 封装
15.下列说法错误的是( )
A: JAVA面向对象语言容许单独的过程与函数存在
B: JAVA面向对象语言容许单独的方法存在
C: JAVA语言中的方法属于类中的成员(member)
D: JAVA语言中的方法必定隶属于某一类(对象),调用方法与过程或函数相同
16.( ABC )are Data Manipulation Language Commands.
A: INSERT B: DELETE C: UPDATE D: CREATE
解释:
数据操作语言
简答题
1.Linux中列出当前目录下所有文件的命令。 ls -l
2.写出JAVA的基本类型。
数值型
整数型:byte int short long
小数型:float double
布尔型 boolean
字符型 :char
3.在try语句里有return语句,最后写有finally语句,finally语句中的code会不会被执行?何时执行?如果执行,在return前还是后?
会执行,finally语句总会执行的除非遇到一些特殊情况如Systemexit(0)
return语句并不一定就结束一段程序,当它和finally一起使用但是finally语句中无return时会先等finally语句执行完成后再返回值,
当finally语句中有return语句时会直接返回finally中return的语句。
4.==与equals()的区别。
== 操符专门用来比较两个变量的值是否相等,也就是用于比较变量所对应的内存中所存储的数值是否相同,要比较两个基本类型的数据或两个引用变量是否相等,只能用 == 操作符
如果一个变量所指向的数据是对象类型额,那么这时候设计了两块内存,对象本身占用一块内存(堆内存),变量也占用一块内存,例如Object obj = new Object(); 变量obj是一个内存 new Object() 是另外一块内存,此时,变量obj锁碎影的内存中存储的数值就是对象占用的那块内存的首地址。
equals方法是用于比较两个独立对象的内容是否相同,
简单的说就是 == 这个用于比较两个对象的地址是否相同,记住,通过new 出来的对象一定是不同的,equals用于比较对象的内容是否相同
5.Java进程和线程有什么区别?多线程有哪几种方法实现?
定义:
进程:具有一定独立功能的程序关于某个数据集合上的一次性活动,进程是系统进行资源分配和调度的一个独立单位。
线程:进程的一个实体,是CPU调度和分派的基本单位,他是笔记吃那个更小的能独立运行的基本单位,线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是他与同一个进程的其他线程共享进程所拥有的全部资源
2.关系:
一个线程可以创建和撤销另一个线程;同一个金成中的多个线程之间可以并发执行,相对进程而言线程是一个更加接近于执行体的概念,他可以与同进程中的其他线程共享数据,但拥有自己的栈空间,拥有独立的执行序列
3.区别:
一个程序至少有一个进程,一个进程至少有一个线程线程的划分尺度小于进程,使得多线程程序的并发性高
进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。
每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中。
从逻辑角度来看,多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。但操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理以及资源分配。这就是进程和线程的重要区别。
实现方式:
继承Thread和实现Runnable接口
6.说说ArrayList,Vector和LinkedList的存储性能和特性。
ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector由于使用了synchronized方法(线程安全),通常性能上较ArrayList差,而LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。
Vector属于遗留容器(Java早期的版本中提供的容器,除此之外,Hashtable、Dictionary、BitSet、Stack、Properties都是遗留容器),已经不推荐使用,但是由于ArrayList和LinkedListed都是非线程安全的,如果遇到多个线程操作同一个容器的场景,则可以通过工具类Collections中的synchronizedList方法将其转换成线程安全的容器后再使用
7.final,finally,finalize的区别。
final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。
内部类要访问局部变量,局部变量必须定义成final类型
finally 是一场处理语句结构的一部分,表示总是执行。
finalize 是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收。
8.什么是JSP?写出JSP的内置对象。
JSP全名为Java Server Pages,中文名叫java服务器页面,其根本是一个简化的Servlet设计,是一种动态网页技术
内置对象:
request 请求对象
response 响应对象
pageContext 页面上下文对象
session 会话对象
application 应用程序对象
out 输出对象
config 配置对象
page 页面对象
exception 例外对象
9.简述MVC模型和你了解的struts,spring和hibernate。
MVC的全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,是一种软件设计典范。它是用一种业务逻辑、数据与界面显示分离的方法来组织代码,将众多的业务逻辑聚集到一个部件里面,在需要改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑,达到减少编码的时间。
10.谈谈你所了解的java应用服务器。
WEB 服务器
Tomcat 、Bejy Tiger 、Geronimo 、 Jetty 、Jonas 、Jrun 、Orion 、Resin。
Java EE 服务器
TongWeb 、BES Application Server 、 Apusic Application Server 、 IBM Websphere 、Sun Application Server 、Oracle 的 Oracle9i/AS 、Sun Java System Application Server 、Bea Weblogic 、JBoss、开源GlassFish。
11.谈谈你所了解到的javascript框架。
1. jQuery
其功能包括事件处理、动画以及更多其它方向。在构建Web项目时,大家当然不希望把时间浪费在为简单任务编写代码身上。jQuery凭借着其易于使用的API帮助我们解决这项难题。它还能够与全部主流浏览器协作。利用jQuery,大家可以无缝化控制DOM并开发Ajax应用。利用jQuery,开发者无需担心底层交互并能够轻松开发出自己构想中的Web应用。
2. Angular.js
Angular.js的核心设计思路在于单页面应用模式,但其同时亦支持MVC架构。利用Angular.js,开发者能够在前端使用JavaScript代码,从而随意扩展HTML词汇。还采用了数据绑定这一重要概念。用户利用该接口进行交互,当交互完成后,视图即随后利用新值进行更新,从而确保全部内容得到同步。DOM更新则在底层逻辑于模型中执行完毕之后再开始进行。
3. Node.js
其可用于配合真实数据构建高速且极具可扩展性的应用程序。其既非框架亦非库,而是一套基于谷歌Chrome JavaScript V8引擎的运行时环境。大家可以利用Node.js创建多样的应用,包括单页应用、实时Web应用等等。从技术层面讲,Node.js的事件驱动型架构能够支持异步I/O,这使其成为开发高扩展性解决方案的理想选项。
12.区别下来四种修饰符,在相应作用域上打勾。
作用域 当前类 同一package 子孙类 其他package
public 1 1 1 1
protected 1 1 1
friendly 1 1
private 1
不写时默认为____friendly_
数据库题
1.数据库drop,truncate和delete分别有什么作用?
TRUNCATE TABLE 不能用于参与了索引视图的表。
delete是DML语句,不会自动提交。drop/truncate都是DDL语句,执行后会自动提交。
安全性:小心使用 drop 和 truncate,尤其没有备份的时候.
速度,一般来说: drop> truncate > delete
2.触发器的作用。
触发器作用
(1)数据确认
(2)实施复杂的安全性检查
(3)做日志记录,跟踪表上所做的数据操作等
(4)数据的备份和同步;
触发器的类型(常见)
语句级触发器 :在指定的操作语句操作之前或之后执行一次,不管这条语句影响了多少行 。
行级触发器(for each row) :触发语句作用的每一条记录都被触发。在行级触发器中使用old和new伪记录变量, 识别值的状态。
4.什么是主键?什么是外键?
主键是能确定一条记录的唯一标识;
外键用于与另一张表的关联。是能确定另一张表记录的字段,用于保持数据的一致性
5.请简述什么是数据库事务?并写出对应的英文单词?
是指作为单个逻辑工作单元执行的一系列操作,要么完整地执行,要么完全地不执行。 事务处理可以确保除非事务性单元内的所有操作都成功完成,否则不会永久更新面向数据的资源。通过将一组相关操作组合为一个要么全部成功要么全部失败的单元,可以简化错误恢复并使应用程序更加可靠。一个逻辑工作单元要成为事务,必须满足所谓的ACID(原子性、一致性、隔离性和持久性)属性。
transaction
6.谈谈分页查询语句中SQL中的实现。
Orcale数据库
在Oracle中用于分页显示的sql语句关键词:rownum。
select * from student rownum<=4
select * from 表名 limit (pagenum-1)*pagesize, pagesize;
pagenum是当前第几页,pagesize是每页的条数。那么(pagenum-1)*pagesize就表示翻过 这些条数,接着显示 pagesize 条。