Java-最近面试笔试总结

1. WebLogicTomcat的区别?

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

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

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

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

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

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

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

 

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

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代码,由于是已经编译好的代码,所以执行的时候不必再次进行编译,从而提高了程序的运行效率

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

 

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、物联网是干什么的?

 

posted @ 2016-09-25 13:38  -Hunter-  阅读(225)  评论(0编辑  收藏  举报