基础面试题

1.一般在程序碰到问题如何解决?
1、检查错误。
2、单步调试,变量监视,找出出错的根本原因。
3、网上搜索相关的技术或错误信息。
4、寻求身边的高手相助

2.简单介绍一种java的设计模式
java中单例模式是一种常见的设计模式,单例模式的写法有好几种,这里主要介绍两种:懒汉式单例、饿汉式单例。
单例模式有以下特点:
1、单例类只能有一个实例。
2、单例类必须自己创建自己的唯一实例。
3、单例类必须给所有其他对象提供这一实例。
一、懒汉式单例
//懒汉式单例类.在第一次调用的时候实例化自己
public class Singleton {
private Singleton() {}
private static Singleton single=null;
//静态工厂方法
public static Singleton getInstance() {
if (single == null) {
single = new Singleton();
}
return single;
}
}
Singleton通过将构造方法限定为private避免了类在外部被实例化,在同一个虚拟机范围内,Singleton的唯一实例只能通过getInstance()方法访问。但是以上懒汉式单例的实现没有考虑线程安全问题,它是线程不安全的。
二、饿汉式单例
//饿汉式单例类.在类初始化时,已经自行实例化
public class Singleton1 {
private Singleton1() {}
private static final Singleton1 single = new Singleton1();
//静态工厂方法
public static Singleton1 getInstance() {
return single;
}
}
饿汉式在类创建的同时就已经创建好一个静态的对象供系统使用,以后不再改变,所以是线程安全的。

3.为什么使用静态类,静态类有什么好处
1:静态类只用于包含静态成员的类型,不能被实例化,我们可以直接使用它的属性与方法,静态类最大的特点就是共享。静态类的特性是防止继承,防止外部来NEW。
2:静态类和类成员用于创建无需创建类的实例就能够访问的数据和函数。
3:使用静态类来包含不与特定对象关联的方法。
4:总结静态类的主要功能如下:
它们仅包含静态成员。
它们不能被实例化。
它们是密封的。
它们不能包含实例构造函数。
静态类不能指定任何接口实现。

4.float怎么转换成String
String.valueOf();

5.请说一下mvc的架构,以及每一层的使用技术
MVC(Model—View—Controller,模型—视图—控制器模式)用于表示一种软件架构模式。它把软件系统分为三个基本部分:模型(Model),视图(View)和控制器(Controller)。
MVC架构是交互式应用中广泛使用的架构。它将对象按功能进行划分,尽可能地最小化对象之间的耦合度。MVC架构与传统的应用程序架构—输入,处理,输出给用户接口的模型相对应。它们也与基于域的多层企业级WEB应用相对应。
A. 模型存储业务数据和控制访问与修改业务数据的业务逻辑或操作。表现上看,模型与软件中的函数功能有些相似。当模型改变时会通知视图并为视图提供了查询模型状态的能力。它也为控制器提供了访问封装在模型中的应用功能函数的能力。
B. 视图展示模型中的内容。它访问模型中的数据并完成数据的显示工作。当模型改变时它会即时更新数据的展示。视图也完成将用户的输入传递到控制器的功能。
C. 控制器定义了应用程序的行为。它分派用户的请求然后调用相应的视图来展示。它解析用户的输入然后与模型中完成相应功能的事件处理相匹配。在标准的GUI客户端应用中,用户输入包括点击按钮和选择菜单。在WEB应用中,它们则是WEB层中的HTTP GET和POST请求。控制器选择相应的视图来显示是基于用户与模型相互交互的结果。一个典型的应用是所有相关的功能由一个控制器来处理。一些应用针对不同的客户端类型采用不同的控制器来处理,因为视图的交互与选择可能因客户端类型的不同而有所不同。
M:一般使用javaBean或者是EJB
V:一般由一组的jsp组成
C:由Action和ActionServlet构成

6.Marth.round()有什么样的作用?
它表示“四舍五入”,算法为Math.floor(x+0.5),即将原来的数字加上0.5后再向下取整,所以,Math.round(11.5)的结果为12,Math.round(-11.5)的结果为-11。

7.List和Map的区别?Map里是否可以插入null
都是集合接口
list --其中的值允许重复,因为其为有序的数据结构
map--成对的数据结构,健值必须具有唯一性(键不能同,否则值替换)
List 按对象进入的顺序保存对象,不做排序或编辑操作。
Map同样对每个元素保存一份,但这是基于”键”的,Map也有内置的排序,因而不关心元素添加的顺序。如果添加元素的顺序对你很重要,应该使用 LinkedHashSet或者LinkedHashMap.
Collection 是对象集合, Collection 有两个子接口 List 和 Set
List 可以通过下标 (1,2..)来取得值,值可以重复
Map 是键值对集合,Map没有继承Collection接口, Map 提供 key 到 value 的映射,你可以通过“键”查找“值”。一个 Map 中不能包含相同的 key ,每个 key 只能映射一个 value 。 Map 接口提供3 种集合的视图, Map 的内容可以被当作一组 key 集合,一组 value 集合,或者一组 key-value 映射。map的键值对可以为null

8.String和StringBuffer的区别
就是一个变量和常量的关系。
StringBuffer对象的内容可以修改,StringBuffer在进行字符串处理时,不生成新的对象,在内存使用上要优于String类。
而String对象一旦产生后就不可以被修改,重新赋值其实是两个对象。
StringBuffer是线程安全的,在多线程程序中也可以很方便的进行使用,但是程序的执行效率相对来说就要稍微慢一些。

9.阐述你对构造函数的了解
1.构造方法作用:构造出来一个类的实例,并对其初始化。
2.构造方法的名字必须与定义他的类名完全相同,没有返回类型。
3.类中必定有构造方法,若不写,系统自动添加无参构造方法。接口不允许被实例化,所以接口中没有构造方法。
4.不能被static、final、synchronized、abstract和native修饰。
5.构造方法分为两种:无参构造方法 有参构造方法
6.构造方法可以被重载。

10.阐述你对常量的理解
“常量”在程序运行时,不会被修改的量。当常量被设定后,一般情况下就不允许再进行更改。
常量必须在声明时对其进行初始化。常量和成员变量和局部变量不同。
当在常量定义的 时候初始化过后,在应用程序中就无法再次对这个常量进行赋值。
常量的作用:代表常数,便于程序的修改(例如:圆周率的值); 增强程序的可读性。

11.int和Integer有什么区别
int是基本的数据类型,直接存数值;
Integer是int的封装类;integer 是对象,用一个引用指向这个对象;
Integer 是一个类,是int的扩展,定义了很多的转换方法。

12.数据库左联接和内连接有什么区别
内联接使用比较运算符根据每个表共有的列的值匹配两个表中的行。
左联接的结果集包括 LEFT OUTER 子句中指定的左表的所有行,而不仅仅是联接列所匹配的行。
如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所有选择列表列均为空值。

13.抽象类和接口的区别
一、接口和抽象类的概念不一样。接口是对动作的抽象,抽象类是对根源的抽象。
二、接口是抽象类的变体,接口中所有的方法都是抽象的。而抽象类是声明方法的存在而不去实现它的类。
三、接口可以多继承,抽象类不行。
四、接口定义方法,不能实现,而抽象类可以实现部分方法。
五、接口中基本数据类型为static 而抽类象不是。

14.如果类a继承类b,实现接口c,而类b和接口c中定义了同名变量,请问会出现什么问题?
在调用该变量的时候在变量前写上他们的类名或接口名,就没问题了。
对于父类的变量,可以用super.同名变量名来明确,而接口的属性默认隐含为 public static final.所以可以通过C.同名变量名来明确。

15.线程的状态都有哪些?
1.新建状态(New)
2.就绪状态(Runnable)
3.运行状态(Running)
4. 阻塞状态(Blocked)
5. 死亡状态(Dead)

16.创建一个线程的常用方法有哪些?
Java中创建线程主要有两种方式:
一、继承Thread类创建线程类
(1)定义Thread类的子类,并重写该类的run方法,该run方法的方法体就代表了线程要完成的任务。因此把run()方法称为执行体。
(2)创建Thread子类的实例,即创建了线程对象。
(3)调用线程对象的start()方法来启动该线程。
二、通过Runnable接口创建线程类
(1)定义runnable接口的实现类,并重写该接口的run()方法,该run()方法的方法体同样是该线程的线程执行体。
(2)创建 Runnable实现类的实例,并依此实例作为Thread的target来创建Thread对象,该Thread对象才是真正的线程对象。
(3)调用线程对象的start()方法来启动该线程。
第二种更常用。因为如果继承自Thread类的话,java是单继承机制所以就没有办法再继承其他类了。而实现Runnable接口则还可以再继承其他的类。

框架部分
1.Spring下如何进行ajax访问
一般使用ajax要复杂数据,json格式是常见响应形式
Spring MVC 3.0 返回JSON数据的方法
1. 直接 PrintWriter 输出
2. 使用 JSP 视图
3. 使用Spring内置的支持
使用注解@ResponseBody可以将结果(一个包含字符串和JavaBean的Map),转换成JSON。
使用 @RequestBody 注解前台只需要向 Controller 提交一段符合格式的 JSON,Spring 会自动将其拼装成 bean。
Spring这个转换是靠org.codehaus.jackson这个组件来实现的

2.统计查询的步骤
1、在mybatis的conf.xml文件中的内容如下:






2、定义表所对应的实体类
3、定义操作users表的sql映射文件userMapper.xml

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值