面试题

一.基本的数据类型有哪些?

   1.数值型:byte,short,int,long(整数类型)

                      float,double(浮点类型)

   2.字符型:char

   3.布尔型:boolean

注:String不是基本数据类型

二.抽象类和接口的区别

   1.抽象类中的方法可以有方法体,就是能实现具体的功能,而接口中的方法不行。

   2.抽象类中的成员变量能是各种类型的,而接口中的成员变量只能是  public static  final类型的

   3.接口中不能含有静态方法和静态代码块,而抽象类是可以的。

   4.一个类只可以继承一个抽象类,一个类可以实现多个接口

5.抽象类里面可以有抽象方法,也可以有普通方法。接口里面的都是抽象方法。

6.抽象类可以有构造函数,接口没有构造函数,不可以实例化。

三.五种最常见的runtime  exception

   1.NullPointerException(空指针异常)

   2.IndexOutOfBoundsException(数组越界异常)

   3.IllegalArgumentException(参数无效异常)

   4.ClassCastException(类型转换异常)

   5.NumberFormatException(数据格式异常)

四.MyBatis和Hibernate的优缺点

   1.MyBatis的优点

    mybatis的优点在于,它可以进行更为细致的sql优化,可以按需求编写sql语句,以便减少不必要的字段查询。而且自己写的sql可以很方便的调整

    mybatis 的另一个优点在于,它的门槛较低,容易掌握

  2.MyBatis的缺点

    mybatis的缺点在于数据库移植性不好,因为MyBatis 项目是依赖所用的数据库的,所以对不同类型的数据库支持不好

  3.Hibernate的优点


   4..Hibernate的缺点


五.说说对Spring 的理解,工作原理

六.aop,ioc



七.说说对SpringMVC的理解,工作原理

a.客户端请求提交到dispatcherServlet

b.由DispatcherServlet控制器查询一个或多个HandlerMapping,找到处理请求的Controller。

c.DispatcherServlet将请求提交到Controller。

d.Controller调用业务逻辑处理后,返回ModelAndView。 

e.DispatcherServlet查询一个或多个ViewResoler视图解析器,找到ModelAndView指定的视图。

f.视图负责将结果显示到客户端

八.Struts的理解,优点缺点

1.struts的核心是一个过滤器。struts是一个按MVC模式设计的web层框架,当浏览器发送请求时,核心控制器(ActionServlet/Dispatcher)根据struts的配置文件将各个请求分配给不同的action去处理,action处理完成返回一个视图。

2.struts的优点

a.实现MVC模式,结构清晰。

b.有丰富的标签库可以使用,大大提高了开发效率

c.页面导航,使系统的脉络更加清晰,通过一个配置文件,把握各部分之间的联系,更有利于后期的维护

d.提供Exception处理机制

e.数据库连接池管理

f.支持I18n

3.struts的缺点

a.测试不方便

b.对servlet依赖过强

c.对action的执行顺序难以控制

九.关于Servlert

   1.什么是servlet

     servlet是一个java程序,它是运行在服务器上,处理客户端发送过来的请求,并做出响应的程序。servlet有良好的生命周期,包括加载和实例化、初始化、处理请求以及服务结束。

   2.servlet的生命周期

   web容器加载servlet是生命周期的开始,通过调用servlet的init()进行servlet的初始化,调用servlet的service()实现,根据请求的不同调用doGet()或doPost()。当服务结束,web容器调用servlet的destroy()方法销毁。


十.数据库优化

十一.分布式


十二.static静态变量


十三.http和https的区别

HTTP:是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。

HTTPS:是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。

1、https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。

2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。

3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。

4、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

十四.Map和List



十五.ajax


十六.MySql数据库引擎

1.MySQL数据库默认MyIASM引擎,它的特点是查询速度比较快,但是有很多功能它并不能支持,比如外键和行级锁以及事务。当对数据库表进行插入数据或者更新数据的时候效率比较低。如果对表的读操作多于对表的写操作且不需要事务的支持,那么myiasm引擎是不错的选择。
2.Innodb引擎提供了对数据库事务的支持。还支持行级锁和外键。它的目标是处理大容量数据系统,它本身其实就是基于MySQ后台的完整数据库系统,MySQL运行时,innodb会在内存中建立缓冲池,用于缓冲数据和索引。
十七、Struts2和SpringMVC的区别

1.Struts2是基于类开发的,SpringMVC是基于方法开发的.
2.Struts2的入口是filter,SpringMVC的入口是servlet.
3.SpringMVC的开发效率以及性能高于Struts2.
4.Struts2是一个请求一个action,SpringMVC是单例模式。

十八、单例模式

单例模式是一种设计模式,确保一个类只有一个实例(也就是对象),并提供一个全局的访问点(静态变量)。

public class Singleton{
 private Singleton(){}//将构造函数声明成私有的,这样在类的外部不能实例化该类
 public static Singleton only=new Singleton(){};//声明静态变量,外部可以通过该变量访问类的唯一实例
}

单例模式的一个作用就是使得类的一个对象成为系统中的唯一实例。

十九、Java的几种设计模式

1.单例设计模式

2.简单工厂设计模式

3.适配器设计模式(implement)

4.模板设计模式(extends)

二十、get和post的区别

区别一,get提交方式安全性低,post提交安全性高。

区别二,get传送的数据量小,不能大于2KB,post传送的数据量大,一般默认设上限。

区别三,get是从服务器上获取数据,post是向服务器传送数据。

区别四,get方式,服务器端用Request.QueryString获取变量的值。post方式,服务器端用Request.Form获取提交的数据。

二十一、jdbc和hibernate和mybatis的区别

1.从层次上看,jdbc是较底层的持久化层操作方式,而hibernate和mybatis都是在jdbc的基础上进行封装使程序员更加方便对持久层的操作。
2.从功能上看,jdbc就是简单的数据库连接,创建statement对象,将sql语句交给statement对象执行,如果有返回结果的查询语句,将查询结果放到ResultSet对象,通过resultset的遍历来获取数据。hibernate是将数据库中的数据表映射为持久层的Java对象,实现数据表的完整性控制。mybatis是将sql语句中的输入参数输出参数映射为Java对象,放弃了数据表的完整性控制,但是获得了更灵活和响应性能更快的优势。
3.从使用上看,如果进行底层编程,而且对性能要求极高,应该采用jdbc的方式。如果对数据库的完整性控制建议选择hibernate,如果想要灵活使用sql,建议采用mybatis。

二十二、jdk和jre的区别

JDK:Java Development Kit的缩写,Java开发工具包。是程序员使用Java语言编写Java程序时使用的开发工具包,是提供给程序员使用的。jdk包含了jre,同时还提供了一系列的编译运行工具。

JRE:Java Runtime Environment的缩写,Java运行时环境。包含了Java虚拟机,Java的基本类库。是使用Java语言编写的程序运行所需要的软件环境,是提供给想运行Java程序的用户使用的。

二十三、final修饰类,方法和变量

1.final修饰的类表示这个类不能被继承。也就是说,如果一个类你永远也不想让它被继承,就用final修饰。final修饰的类里面的成员变量可以根据需要设为final,需要注意的是final里面成员方法都会被隐式的指定为final方法。

2.final修饰的方法不能被修改。

3.final修饰的变量,如果是基本数据类型变量,那么数值初始化之后不能更改;如果是引用类型的变量,那么不能让它指向另一个对象。

二十四、如何理解AOP,IOC,DI

AOP:(Aspect oriented Program)面向切面编程。在运行时,动态的将代码切入到类的指定方法,指定位置的编程思想就是面向切面的编程思想。一般来说我们管切入到指定方法,指定方法的代码片称为切面,而切入到哪些类哪些方法叫切入点。有了aop,我们就可以把几个类共有的代码,抽取成一个切片,等到需要时再把这些代码切入到对象中,从而改变原有的行为。

IOC:(Inversion of control)控制反转,不是一种技术,而是一种设计思想。在Java中,IOC意味着你将设计好的对象交给容器控制,不是传统的在你的对象内部直接控制。有了IOC,把创建对象和查找依赖对象的控制权交给了容器。由容器进行注入对象,所以对象和对象之间是松散耦合的,方便测试,利于功能复用。














评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值