Java-最近面试笔试总结

1. WebLogicTomcat的区别?java

相同点:WebLogicTomcat都是基于java的基础架构来知足实时处理需求.mysql

不一样的版本与jdk版本兼容和有所不一样;由于都是要和前台交互,因此他们都基于sun公司的servlet来实现的。linux

不一样点:WebLogicj2ee的应用服务器(application server),包括ejb ,jsp,servlet,jms等等web

Tomcat只能算Web Container,是官方指定的JSP&Servlet容器面试

  ②  WebLogic Server既实现了网页群集,也实现了EJB组件 群集,并且不须要任何专门的硬件或操做系统支持。ajax

   网页群集能够实现透明的复制、负载平衡以及表示内容容错,在扩展性方面WebLogic远远超越了Tomcat算法

  ③ Tomcat开源免费,WebLogic不开源难免费spring

 

2. GB2312GBKGB18030 这几种字符集的主要区别是什么?sql

GB2312数据库

GB 2312 GB 2312-80 是简体中文字符集,共收录 6763个汉字,对于人名、古汉语等方面出现的罕用字,

GB 2312不能处理,这致使了后来GBKGB 18030汉字字符集的出现。

GBK:即汉字内码扩展规范

GBK共收入21886个汉字和图形符号,GBK 采用双字节表示。

GB18030

是如今使用的最新内码子集,共收录汉字70244个。

 

3. 说说你知道的几种数据库,以及它们之间的区别。

MySQL:体积小、速度快、免费开源;支持多种操做系统。

MySQL最大的缺点是其安全系统,主要是复杂而不标准;没有一种存储过程(Stored Procedure)语言

Oracle:能在全部主流操做系统上运行(包括 windows);得到最高认证级别的ISO标准认证

对硬件的要求很高;价格比较昂贵;管理维护麻烦一些;操做比较复杂,须要技术含量较高;

SQL Server: 易用性、适合分布式组织的可伸缩性;与许多其余服务器软件紧密关联的集成性

SQL Server只能在Windows上运行;没有得到任何安全证书

 

4. 前台与后台的数据交换方式以及优缺点。

 

5. 小球落地再次弹起一半的问题:第n次跳多高,总共通过多少米。

 

6. 二叉搜索树的遍历以及算法实现;二叉树的层数和节点问题。

 

7. 什么是视图,视图的做用?

视图是一种虚表,视图创建在已有表的基础上。

做用:控制数据访问;简化查询;避免重复访问相同的数据

 

1、视图可以简化用户的操做

2、视图使用户能以多钟角度看待同一数据

3、视图对重构数据库提供了必定程度的逻辑独立性

4、视图可以对机密数据提供安全保护

5、适当的利用视图能够更清晰的表达查询,

视图的优势:
提升数据安全性,能够不让用户看到表中的某个字段.好比password,你只给他们执行视图的权限,不给执行表的权限,他们就没法查看所有数据.
还有能够创建一个视图,内容包括两个表,更新的时候只须要指定ID,而不用管它来自哪一个表,对应表中的数据就会自动更新.

8. 对事务的理解,事务的特性。

事务是为了保证对同一数据表操做的一致性。   
 即多条语句放在事务中执行的时候,要么一块儿成功,要么全不成功
具有 4大特性: 原子性  一致性 隔离性 和持久性
A是原子性(atomic):事务中包含的各项操做必须所有成功执行或者所有不执行。任何一项操做失败,将致使整个事务失败,其余已经执行的任务所做的数据操做都将被撤销,只有全部的操做所有成功,整个事务才算是成功完成。     
B是一致性(consistent):保证了当事务结束后,系统状态是一致的。那么什么是一致的系统状态?例如,若是银行始终遵循着"银行帐号必须保持正态平衡"的原则,那么银行系统的状态就是一致的。上面的转帐例子中,在取钱的过程当中,帐户会出现负态平衡,在事务结束以后,系统又回到一致的状态。这样,系统的状态对于客户来讲,始终是一致的。     
c是隔离性(isolated):使得并发执行的事务,彼此没法看到对方的中间状态。保证了并发执行的事务顺序执行,而不会致使系统状态不一致。     
D是持久性(durable):保证了事务完成后所做的改动都会被持久化,即便是发生灾难性的失败。可恢复性资源保存了一份事务日志,若是资源发生故障,能够经过日志来将数据重建起来

 

9. 请说出三种数据结构和查询算法,并各挑出两种说明其优缺点。

 

10. SQL多表查询问题(手写即选择给出的SQL的查询结果)

 

11. 编程题

① 给出一种定义的语言,求1--1000(包括1000)之间偶数之和----考察快速学习的能力

② 给出三边,如何判断是等腰/等边/通常的三角形?

③ 编写一个方法,传入一个1-100的数组,这个数组存储班上100我的的成绩,对成绩进行排序,并返回数组。

④ 给出n,打印出一个给定的图形

12 .Java8新特性

 

昨天技术面我只记得这么多了
1、数据库中是怎么获取时间

select now();//输出当前数据库时间
select sysdate();//输出系统时间
select curdate();//输出 2011-11-08
  select curtime();//输出17:18:49

2springmvc有哪些注解

1. @Controller

2. @RequestMapping

3. @PathVariable

4. @RequestParam

5. @RequestBody

6. @ResponseBody


3spring的工做原理,springmvcspring的关系

spring 是是一个开源框架,是为了解决企业应用程序开发,功能以下
◆目的:解决企业应用开发的复杂性
◆功能:使用基本的JavaBean代替EJB,并提供了更多的企业应用功能
◆范围:任何Java应用
简单来讲,Spring是一个轻量级的控制反转IoC)和面向切面(AOP)的容器框架。
◆轻量——从大小与开销两方面而言Spring都是轻量的。完整的Spring框架能够在一个大小只有1MB多的JAR文件里发布。而且Spring所需的处理开销也是微不足道的。此外,Spring是非侵入式的:典型地,Spring应用中的对象不依赖于Spring的特定类。
控制反转——Spring经过一种称做控制反转IoC)的技术促进了松耦合。当应用了IoC,一个对象依赖的其它对象会经过被动的方式传递进来,而不是这个对象本身建立或者查找依赖对象。你能够认为IoCJNDI相反——不是对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它。
◆面向切面——Spring提供了面向切面编程的丰富支持,容许经过分离应用的业务逻辑与系统级服务(例如审计(auditing)和事务(transaction)管理)进行内聚性的开发。应用对象只实现它们应该作的——完成业务逻辑——仅此而已。它们并不负责(甚至是意识)其它的系统级关注点,例如日志或事务支持。
◆容器——Spring包含并管理应用对象的配置和生命周期,在这个意义上它是一种容器,你能够配置你的每一个bean如何被建立——基于一个可配置原型(prototype),你的bean能够建立一个单独的实例或者每次须要时都生成一个新的实例——以及它们是如何相互关联的。然而,Spring不该该被混同于传统的重量级的EJB容器,它们常常是庞大与笨重的,难以使用。
◆框架——Spring能够将简单的组件配置、组合成为复杂的应用。在Spring中,应用对象被声明式地组合,典型地是在一个XML文件里。Spring也提供了不少基础功能(事务管理、持久化框架集成等等),将应用逻辑的开发留给了你。
全部Spring的这些特征使你可以编写更干净、更可管理、而且更易于测试的代码。它们也为Spring中的各类模块提供了基础支持。

 Spring的两大核心AOPIOC,能够单独用于任何应用,包括与StrutsMVC框架HibernateORM框架的集成,目前不少公司所谓的轻量级开发就是用 Spring + Struts(2)+Hibernate

  Spring MVC就是一个MVC框架,我的以为Spring MVC annotation式的开发比Struts2方便,能够直接代替上面的Struts(固然Struts的作为一个很是成熟的MVC,功能上感受仍是比Spring强一点,不过Spring MVC已经足够用了)。固然spring mvc的执行效率比struts高,是由于struts的值栈影响效率
  spring mvc相似于struts的一个MVC开框架,其实都是属于springspring mvc须要有spring的架包做为支撑才能跑起来
  若是有人问你什么事控制反转(spring的核心面试常问道):你就回答,原本程序是由咱们new 出来的嘛,后来交给程序控制进行new出来了嘛,这就是控制反转嘛
5forforeach的区别

1.若是只是遍历集合或者数组,用foreach好些,快些。
2.若是对集合中的值进行修改,就要用for循环了。其实foreach的内部原理其实也是Iterator,但它不能像Iterator同样能够人为的控制,并且也不能调用iterator.remove();更不能使用下标来访问每一个元素,因此不能用于增长,删除等复杂的操做。举个例子:
for(String aid:list){
   if(aid.equals("aa")){
    list.remove(aid);  //这行会报错,不能修改list的长度
   }
  }
因此foreach语句是for语句的特殊简化版本,可是foreach语句并不能彻底取代for语句

6webService的理解

webservice 只就是POST类型的 HTTP请求;以往的HTTP请求都是 浏览器从FORM 里发出的
用于提交 表单,好比 浏览器提交 username=tom&password="123456" 给服务器,服务器验证完 用户名和密码正确后 再返回字符串 "success".
后来 发现 能够把提交的内容作的更复杂, 由于服务器能够接受更多东西以计算。
好比:提交给服务器 <username>tom</username>
    <password>123456</password>
    <bothdata>19800305</bothdate>
    ........ 还有很长就不写了
  而后服务器返回<result>success</result>

可是这种新的提交方法 再叫做POST表单请求就不合适了,起个新的名子吧,就叫WEBSERVICE,这种提交的格式就叫作 XML 。由于这东西 比 原来那个

username=tom&password="123456" 更容易被人读懂,并且能够存储表达更多东西。

至于于那个WDSL 就是一种格式规范,他就像是小学语文规定每一个新段落开头要空两个字没什么区别它规定了 提交WEBSERVICE 时 应该

开头写什么标示,结尾写什么标示

 


7EasyUI的下拉框是传的是什么数据
8ajax的原理与怎么判断是同步仍是异步

异步
9、同步与异步

Java中交互方式分为同步和异步两种:

同步交互:指发送一个请求,须要等待返回,而后才可以发送下一个请求,有个等待过程;

异步交互:指发送一个请求,不须要等待返回,随时能够再发送下一个请求,即不须要等待。 
区别:一个须要等待,一个不须要等待,在部分状况下,咱们的项目开发中都会优先选择不须要等待的异步交互方式。

哪些状况建议使用同步交互呢?好比银行的转帐系统,对数据库的保存操做等等,都会使用同步交互操做,其他状况都优先使用异步交互。
10、数据的持久化

数据持久化就是将内存中的数据模型转换为存储模型,以及将存储模型转换为内存中的数据模型的统称. 数据模型能够是任何数据结构或对象模型,存储模型能够是关系模型、XML、二进制流等。

使用数据持久化有如下好处:

1、程序代码重用性强,即便更换数据库,只须要更改配置文件,没必要重写程序代码。

2、业务逻辑代码可读性强,在代码中不会有大量的SQL语言,提升程序的可读性。

3、持久化技术能够自动优化,以减小对数据库的访问量,提升程序运行效率。

数据持久化对象的基本操做有:保存、更新、删除、查询等。


11、存储过程的理解

存储过程是一组预先编译好的sql代码,因为是已经编译好的代码,因此执行的时候没必要再次进行编译,从而提升了程序的运行效率

十二、数据结构和算法了解多少

 

13linux环境下,你怎么搭建Web环境

 安装JDK

先安装JDK1.6

敲入如下命令

cd /home/liuyan/javaee

tar –zxvf jdk-6u22-linux-i586-rpm.bin

便可解压缩JDK包。

解压缩成功后还不算完,咱们还要手工设定一下环境变量!

VI编辑器编辑一下环境变量文件

vi /etc/profile

在文件的末尾加上如下几句话

JAVA_HOME=/home/liuyan/javaee/ jdk-6u22-linux-i586

PATH=$PATH: /home/liuyan/javaee/ jdk-6u22-linux-i586/bin

CLASSPATH=.:/home/liuyan/javaee/ jdk-6u22-linux-i586/jre/lib/rt.jar

export JAVA_HOME PATH CLASSPATH

保存退出

注意:其中jdk-6u22-linux-i586是解压缩jdk后的包名。

按此配置,从新登陆linux后,jdk命令即生效。

在控制台输入

java –version

便可验证是否安装成功

       安装Tomcat6

运行一下命令

cd /home/liuyan/javaee

tar –zxvf apache-tomcat-6.0.29.tar.gz

直接解压缩tomcat就行,tomcat在这3个文件的安装中算是最简单的。

解压缩后的文件夹应该是apache-tomcat-6.0.29

    安装MySql数据库

运行一下命令

tar –zxvf mysql-5.2.0-falcon-alpha-linux-i686-glibc23.tar.gz

先将MySql的包解压缩,由于安装rpm的文件会涉及到不少依赖包,因此笔者这里偷懒了,用了一个linux解压缩文件。

解压缩完成后,先修改一下解压缩后的包名

cd /home/liuyan/javaee/

mv mysql-5.2.0-falcon-alpha-linux-i686-glibc23 mysql5

将解压缩后的文件夹重命名为mysql5

MySql自带的配置文件拷贝到系统环境变量中,运行如下命令

cp /home/liuyan/javaee/mysql5/support-files/my-medium.cnf /etc/my.cnf

 

下面咱们修改一下Mysql的编码格式

vi /etc/my.cnf

修改内容以下

添加
********************************
* [client]                     *
* default-character-set=utf8   *
********************************

修改数据库编码方式为UTF8
sudo vi /etc/my.cnf
添加
********************************
* [mysqld]                     *
* default-character-set=utf8   *
********************************

这样mysql编码都为utf-8

下面咱们运行如下命令初始化mysql的数据

cd /home/liuyan/javaee/mysql5

scripts/mysql_install_db –user=root

初始化数据,设定mysql的使用用户为root,注意这个root用户和linuxroot用户是两码事。

数据安装成功后运行如下命令便可之后台进程的方式启动mysql服务

cd /home/liuyan/javaee/mysql5

bin/mysqld_safe –user=root

输入如下命令

netstat –anp | more

看看是否有3306的端口被占用了?

固然,咱们也能够修改/etc/profile文件增长mysql的环境变量,方法和jdk差很少。

PATH=$PATH: /home/liuyan/javaee/mysql5/bin

    千万别忘记

要想运行你的Java EE项目,还差一点点,将mysqljar包拷贝到jdk/jre/lib/ext下面,这样jre才能找获得mysql数据库的驱动程序。

运行如下命令

cd /home/liuyan/javaee/apache-tomcat-6.0.29/bin

./startup.sh

便可运行您的项目了。

 

UML是什么,你用它来作什么?

统一建模语言

工程中各个模块、类之间的将架构图,能够清晰地分析出各个模块间的关系!

15、物联网是干什么的?

相关文章
相关标签/搜索