• 2018.7.13 企业面试题练习训练


    智力题

    【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  条。
    
  • 相关阅读:
    css-深入理解margin和padding
    js的自定义事件
    jcFlexible.js的小Demo
    volatile关键字回顾
    threadLocalMap理解
    常用SQL笔记
    MyISAM和innoDB对比,覆盖索引简单回顾
    经典算法回顾:两个队列生成一个栈,两个栈生成一个队列
    Memcached与Redis对比,Redis基础笔记回顾
    ES(ElasticSearch)学习总结
  • 原文地址:https://www.cnblogs.com/qichunlin/p/9303008.html
Copyright © 2020-2023  润新知