Java面试题(亲身经历)

  • abstract class和interface的区别
1.interface需要实现,用implements,而abstract class需要继承,用extends
2.一个类可以实现多个接口,但只能实现一个抽象类
3.interface强调特定功能的实现,而abstract class强调所属关系。
4.尽管interface实现类及abstrct class的子类都必须要实现相应的抽象方法,但实现的形式不同。interface中的每一个方法都是抽象方法,都只是声明的(declaration,没有方法体),实现类必须要实现。而abstract class的子类可以有选择地实现。
  • 写一个singleton(单例模式)
public class Singleton {
private Singleton(){}
//注意这是private 只供内部调用
private static Singleton instance = new Singleton();
//这里提供了一个供外部访问本class的静态方法,可以直接访问
public static Singleton getInstance() {
return instance;
}
}
  • Vector与ArrayList区别 :
Vector是线程安全的,从而性能没有ArrayList好
Vector或ArrayList中的元素超过它的初始大小时,Vector会将它的容量翻倍,而ArrayList只增加50%的大小,这样,ArrayList就有利于节约内存空间。
  • Hashtable & HashMap 区别:
Hashtable和HashMap它们的性能方面的比较类似 Vector和ArrayList,比如Hashtable的方法是同步的,而HashMap的不是。
  • ArrayList & LinkedList区别:
ArrayList的内部实现是基于内部数组Object[],所以从概念上讲,它更象数组,但LinkedList的内部实现是基于一组连接的记录,所以,它更象一个链表结构,所以,它们在性能上有很大的差别。
  • 什么是DI机制?
依赖注入(Dependecy Injection)和控制反转(Inversion of Control)是同一个概念,具体的讲:当某个角色
需要另外一个角色协助的时候,在传统的程序设计过程中,通常由调用者来创建被调用者的实例。但在spring中
创建被调用者的工作不再由调用者来完成,因此称为控制反转。创建被调用者的工作由spring来完成,然后注入调用者
因此也称为依赖注入。
spring以动态灵活的方式来管理对象 , 注入的两种方式,设置注入和构造注入。
设置注入的优点:直观,自然
构造注入的优点:可以在构造器中决定依赖关系的顺序。 
  • Servlet生命周期分为三个阶段:
1,初始化阶段  调用init()方法
2,响应客户请求阶段  调用service()方法
3,终止阶段  调用destroy()方法
  • 数据库知识
desc是降序排列,ASC是升序排列.
比如:有学生信息表{学号,班级,姓名,学科,成绩},请写出每班语文成绩在前10名并且数学成绩不在倒数10名的学生的个人信息
select 学号,班级,姓名,学科,成绩
from 学生
where 学号 in
( select top 10 学号
from 学生
where 学科='语文'
order by 成绩 desc )
and 学号 not in
( select top 10 学号
from 学生
where 学科='数学'
order by 成绩 asc )
mysql不支持top,用select * from table_name limit 起始位置,显示行数;
  • doGet()hedoPost()区别
这两种方法有本质的区别,get只有一个流,参数附加在url后,大小个数有严格限制且只能是字符串。post的参数是通过另外的流传递的,不通过url,所以可以很大,也可以传递二进制数据,如文件的上传。 
  • json知识
字符串: {"name":"jobs"}
空:  {"object":null}
JSON对象:
{
"starcraft": {
"INC": "Blizzard",
"price": 60
}
}
JSON对象数组:
{
"array": [
{
"name": "jobs"
},
{
"name": "bill",
"age": 60
},
{
"product": "war3",
"type": "game",
"popular": true,
"price": 60
}
]
}
  • final finally finalize区别
final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。
finally是异常处理语句结构的一部分,表示总是执行。
finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。
  • 线程的四种状态
1.新状态 2.可执行状态 3.死亡状态 4. 阻塞状态
  • 下面哪些是Thread类的方法():
A start()       B run()       C exit()       D getPriority()
答案:ABD
  • 下列说法正确的有():
A. class中的constructor不可省略
B. constructor必须与class同名,但方法不能与class同名
C. constructor在一个对象被new时执行
D.一个class只能定义一个constructor
答案:C 
  • 关于new String
String []a = new String[10];
则:a[0]~a[9] = null
a.length = 10
如果是int []a = new int[10];
则:a[0]~a[9] = 0
a.length = 10
  • 下列说法正确的是()
A LinkedList继承自List
B AbstractSet继承自Set
C HashSet继承自AbstractSet
D WeakMap继承自HashMap
答案:AC
  • 在java中怎样实现多线程?
1.继承 Thread 类,覆盖方法 run(),extends
2.实现 Runnable 接口,implements
  • 下面哪个流类属于面向字符的输入流(  )
A  BufferedWriter           B  FileInputStream          C  ObjectInputStream          D  InputStreamReader
答案:D
总结:以InputStream(输入)/OutputStream(输出)为后缀的是字节流;
以Reader(输入)/Writer(输出)为后缀的是字符流。
  • Collection和Collections的区别?
Collection是集合类(List,Set)的上级接口,Collections是针对集合类的一个帮助类,它提供一系列静态方法来实现对各种集合的搜索,排序,线程安全化操作。
  • 利用递归方法求5!
public class Test {
public static void main(String args[]) {
int x = 5;
int rs = Fac(x);
System.out.println("" + x + "! = " + rs);
}
 
public static long Fac(int x) { /*阶乘算法*/
if (x > 1)
return (x * Fac(x - 1)); /*递归*/
else
return 1;
}
}
  • JSP四种范围是什么,有什么区别
page、     request、    session、   application
当前页面    一次请求       一次会话       服务器打开
  • JSP有哪些内置对象?作用分别是什么?
request
客户端请求,此请求会包含来自GET/POST请求的参数通过它才能了解到客户的需求,然后做出响应。
2、response对象 响应客户请求的有关信息
response响应客户请求的有关信息
session它指的是客户端与服务器的一次会话,从客户端连到服务器的一个      WebApplication开始,直到客户端与服务器断开连接为止
out它是JspWriter类的实例,是向客户端输出内容常用的对象
page它是指向当前JSP页面本身,有点象类中的this指针,它是 java.lang.Object类的实例
application它实现了用户间数据的共享,可存放全局变量。它开始于服务器的启动,直到服务器的关闭
exception它是一个例外对象,当一个页面在运行过程中发生了例外,就产生这个对象
pageContext它提供了对JSP页面内所有的对象及名字空间的访问
config它是在一个Servlet初始化时,JSP引擎向它传递信息用的
  • 数据库知识
学生成绩表(stuscore):
姓名 : name  课程 : subject 分数 : score  学号 : stuid
张三     数学     89     1
张三     语文     80     1
张三     英语     70     1
李四     数学     90     2
李四     语文     70     2
李四     英语     80     2
1.计算每个人的总成绩并排名(要求显示字段:姓名,总成绩)
答案:select name,sum(score) as allscore from stuscore group by name order by allscore
2.计算每个人的平均成绩(要求显示字段: 学号,姓名,平均成绩)
答案:select distinct t1.stuid,t1.name,t2.avgscore from stuscore t1,(select stuid,avg(score) as avgscore from stuscore group by stuid) t2where t1.stuid=t2.stuid
3.列出各门课程成绩最好的学生(要求显示字段: 学号,姓名,科目,成绩)
答案:select  t1.stuid,t1.name,t1.subject,t2.maxscore from stuscore t1,(select subject,max(score) as maxscore from stuscore group by subject) t2where t1.subject=t2.subject and t1.score=t2.maxscore
4.列出各门课程成绩最好的两位学生(要求显示字段: 学号,姓名,科目,成绩)
答案:select distinct t1.* from stuscore t1 where t1.id in (select top 2 stuscore.id from stuscore where subject = t1.subject order by score desc) order by t1.subject

2.有如下表:
日期(rstime)   结果(result)
2005-05-09       胜
2005-05-09       胜
2005-05-09       负
2005-05-09       负
2005-05-10       胜
2005-05-10       负
2005-05-10       负 
如果要生成下列结果,该如何写sql语句?
日期                胜      负
2005-05-09     2       2
2005-05-10     1       2 
select rstime,sum(case result when '胜' then 1 else 0 end)as 胜,sum(case result when '负' then 1 else 0 end)as from result group by rstime;
为了方便阅读,查询此表后的显示结果如下(及格分数为60分)?
select *,case when score>=60 then 'pass' else 'fail' end as 'mark' from temp;





本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/553835.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ie浏览器收藏夹位置更改步骤

ie浏览器收藏夹位置更改步骤 ie浏览器收藏夹位置怎么更改?我们知道,系统盘空间的大小对于系统的运行速度有很大的影响,所以我们应该尽量减少系统盘的压力,而由于IE浏览器的收藏夹默认在系统盘,下面浏览器家园小编就教你如何更改收…

毕业论文经验

以前总听学长学姐们抱怨论文烦答辩烦,想想不就写一个字多的作文嘛有啥难的。最近轮到自己写论文了,才知此中痛苦,特此总结经验,告诫后人。 模板 论文的模板每个学校基本都有,字体、间距、参考文献格式基本都有&#…

QQ浏览器书签栏不见了怎么办 找回QQ浏览器书签栏方法

QQ浏览器是腾讯旗下的一款高速浏览器,基于腾讯庞大的用户量,QQ浏览器也是有不少用户使用。在使用QQ浏览器时,我们注意地址栏下方书签栏的存在,书签栏给我们提供极为便利的网页收藏功能,基于它是腾讯系软件,…

MyEclipse 2015优化技巧

MyEclipse 2015优化速度方案仍然主要有这么几个方面:去除无需加载的模块、取消冗余的配置、去除不必要的检查、关闭更新。第一步: 去除不需要加载的模块 一个系统20%的功能往往能够满足80%的需求,MyEclipse也不例外,我们在大多数时候只需要20…

谷歌浏览器怎么打开flash Chrome启用flash插件技巧分享

或许是由于flash多次曝出安全问题,苹果和谷歌先后对其进行限制,谷歌更是在新版Chrome浏览器中直接禁用了flash插件。而在访问某些必须使用flash插件的网站时,则需要手动开启相关的权限!那么,谷歌浏览器要怎么打开flash呢?让我们来…

MyBatis传入参数与parameterType

1. 传入简单类型 JAVA代码: Java代码 public User get(Long id) { return (User) getSqlSession().selectOne("com.liulanghan.get" , id); } MAPPER : Xml代码 <select id"findUserListByIdList" parameterType"java.lang.Long&q…

Mybatis的xml配置实例

主表&#xff1a; <?xml version"1.0" encoding"UTF-8"?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.1//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><!-- 软件信息数据查询相关 yangxuefe…

火狐浏览器Firefox怎样设置中文

火狐浏览器Firefox怎样设置中文&#xff1f;很多用户从官网下载火狐浏览器后&#xff0c;会发现他默认的是英文版&#xff0c;不知道如何更改为中文版&#xff0c;下面小编就为大家介绍下Firefox设置中文方法。 如果下载的是官方版的火狐浏览器&#xff0c;默认的预言可能会是…

qq浏览器如何进入私密 qq浏览器怎样进入私密

随着移动互联网的发展&#xff0c;越来越多人使用QQ浏览器浏览新闻&#xff0c;有时想开启文件私密空间&#xff0c;那么QQ浏览器如何开启文件私密空间呢?下面让小编告诉一下详细操作步骤。 打开手机&#xff0c;找到“QQ浏览器”图标并点击它。 <a styleqq浏览器如何进入…

win7系统屏保时间设置更改教程

win7的屏保可以在我们短暂离开电脑时节省电量&#xff0c;延长屏幕存活时间&#xff0c;还可以保护屏幕信息不泄露出去&#xff0c;但是如果屏保时间设置不好可能就起不到作用&#xff0c;因此我们可以在个性化设置中对屏保时间进行手动设置&#xff0c;下面就一起来看一下win7…

Easyui+Spring+Mybatis完整示例(前台)

典型的EasyuiSpringMybatis例子,方便自己的记忆.JSP:<% page language"java" contentType"text/html; charsetUTF-8"pageEncoding"UTF-8"%> <% String path request.getContextPath(); String basePath request.getScheme()"://…

win7系统管理员权限更改教程

我们在使用win7系统的时候&#xff0c;有时候会发现自己的账户因为没有管理员权限从而无法更改某些设置或者打开一些文件&#xff0c;非常不方便&#xff0c;因此我们可以通过下面的方法让自己获得管理员权限&#xff0c;下面就一起来看一下win7系统管理员权限更改教程吧。 wi…

Highcharts+Spring饼图使用实例

项目上要用到Hightcharts展示平台机器占用情况,使用这类第三方插件很方便就能实现 JSP: <script type"text/javascript" src"<%basePath%>/resources/thirdparty/highcharts/highcharts.js"></script><div id"machineRate"…

win7更改适配器设置没有本地连接解决方法

最近有很多朋友反映遇到了需要更改适配器设置时&#xff0c;发现我们的适配器设置中没有本地连接&#xff0c;这有可能是因为我们的网卡没有插好&#xff0c;也可能是网卡驱动出现了问题&#xff0c;可以使用下面的方法进行排查和解决。下面小编介绍win7更改适配器设置没有本地…

Easyui+Spring+Mybatis完整示例(后台)

Controller: /**软件管理*/ Controller RequestMapping("/deploySoftware") public class DeploySoftwareController extends BaseController {Autowiredprivate DeploySoftwareService deploySoftwareService;/**跳转到软件信息页面 */RequestMapping("/list&q…

猎豹浏览器怎么收藏网页 网页收藏方法简述

在网站上看到了喜欢的内容&#xff0c;许多人都会选择将之收藏起来&#xff0c;以便下一次观看。但不同浏览器产品中的网页收藏方法&#xff0c;也各不相同!那么&#xff0c;猎豹浏览器要怎么收藏网页呢?下面小编就来详细介绍一下猎豹浏览器中网页收藏的具体方法&#xff0c;小…

Highcharts双饼图使用实例

这次实践了Highcharts的双饼图,确实比普通饼图复杂多了,关键相关数据 多不能继续用简单基本数据类型Map,list了,单独建了个VO存放要用到的数据,不多说,贴代码! JS: /**查看机器占比(按产品线) 2015/8*/ function loadMachineRate(){var chart;$(document).ready(function(){ch…

火狐浏览器如何更改字体 火狐浏览器字体更改方法分享

中文俗称“火狐”的Mozilla Firefox&#xff0c;不仅是一款自由及开放源代码的网页浏览器&#xff0c;其在国内也不乏拥趸。当然&#xff0c;想要熟练使用火狐浏览器&#xff0c;还需要一定的经验和技巧!那么&#xff0c;在火狐浏览器中该如何更改字体呢?下面就让我们来了解一…

一个API接口的例子,包括单元测试

功能大体需求是通过平台获取该平台的所有节点(节点按省,运营商分组)以及节点的所有IP信息(地址和层级),表关系比较复杂,搞了两天才好,是自己一开始搞复杂了。 VO:存放所需元素实体类 public class PlatformIpVO implements Serializable {private String province;private Str…

SpringMVC+uploadify文件上传

前言 准备筹划一个自己的个人网站&#xff0c;初步的架构设计采用SSH&#xff08;Spring-MVC&#xff0c;Spring&#xff0c;Hibernate&#xff09;&#xff0c;在这里 顺便记录一下设计和开发过程&#xff0c;以备参考。后续会陆续更新文档&#xff0c;如有任何问题&#xff0…