Java必备面试指南
文章平均质量分 61
针对各大公司提出的面试问题,个人做了个归纳,方便各位查询,还望多多提意义,共同完善它
奔跑着的国风
为了梦想,一切都是值得的!!!加油吧,小伙伴们!!!
展开
-
http,https区别
HTTPS(Secure Hypertext TransferProtocol)安全超文本传输协议 . 它基于HTTP开发,使用安全套接字层(SSL)在客户计算机和服务器之间进行交换信息。会对数据进行压缩和解压操作,HTTPS使用端口443,而不是象HTTP那样使用端口80来和TCP/IP进行通信。1.https协议需要到ca申请证书,一般免费证书很少,需要交费。 2.http是超文本传输原创 2016-08-24 17:21:47 · 787 阅读 · 1 评论 -
get和post的区别
PUT,DELETE,POST,GET对应增,删,改,查1.get是从服务器上获取数据,post是向服务器传送数据2.get安全性非常低,post安全性较高。但是执行效率却比Post方法好3.GET请求的数据会附在URL之后(就是把数据放置在HTTP协议头中),以?分割URL和传输数据,参数之间以&相连;POST把提交的数据则放置在是HTTP包的HEADER,用户看不到这个过程4.原创 2016-08-24 17:19:14 · 574 阅读 · 1 评论 -
java对象与json对象间的相互转换
1.解析json字符串将json字符串转换为json对象,然后再解析json对象:。JSONObjectjsonObject = JSONObject.fromObject(jsonStr); 根据json中的键得到它的值Stringname = jsonObject.getString("name");int age = jsonObject.getInt("age");原创 2016-07-30 22:56:42 · 18411 阅读 · 1 评论 -
java中volatile关键字的含义
在java线程并发处理中,有一个关键字volatile的使用目前存在很大的混淆,以为使用这个关键字,在进行多线程并发处理的时候就可以万事大吉。Java语言是支持多线程的,为了解决线程并发的问题,在语言内部引入了 同步块 和 volatile 关键字机制。 synchronized 同步块大家都比较熟悉,通过 synchronized 关键字来实现,所有加上synch转载 2016-07-22 13:35:38 · 800 阅读 · 1 评论 -
JAVA中重写equals()方法为什么要重写hashcode()方法?
object对象中的 public boolean equals(Object obj),对于任何非空引用值 x 和 y,当且仅当 x 和 y 引用同一个对象时,此方法才返回 true;注意:当此方法被重写时,通常有必要重写 hashCode 方法,以维护 hashCode 方法的常规协定,该协定声明相等对象必须具有相等的哈希码。如下:(1)当obj1.equals(obj2)为true时转载 2016-07-21 14:10:47 · 836 阅读 · 1 评论 -
ConcurrentHashMap原理分析
集合是编程中最常用的数据结构。而谈到并发,几乎总是离不开集合这类高级数据结构的支持。比如两个线程需要同时访问一个中间临界区(Queue),比如常会用缓存作为外部文件的副本(HashMap)。这篇文章主要分析jdk1.5的3种并发集合类型(concurrent,copyonright,queue)中的ConcurrentHashMap,让我们从原理上细致的了解它们,能够让我们在深度项目开发中获益非浅转载 2016-07-20 20:22:51 · 1330 阅读 · 1 评论 -
《Spring设计思想》AOP设计基本原理
0、前言Spring 提供了AOP(Aspect Oriented Programming) 的支持, 那么,什么是AOP呢?本文将通过一个另外一个角度来诠释AOP的概念,帮助你更好地理解和使用Spring AOP。读完本文,你将了解到:1. Java程序运行在JVM中的特征2. Java程序的执行流【了解AOP、连接点(Join Point)、切入转载 2016-07-09 14:35:11 · 1491 阅读 · 2 评论 -
用ALTER TABLE语句来创建索引
7.2.3 用ALTER TABLE语句来创建索引在已经存在的表上,可以通过ALTER TABLE语句直接为表上的一个或几个字段创建索引。基本形式如下:1. ALTER TABLE 表名 ADD [ UNIQUE | FULLTEXT | SPATIAL ] INDEX 2. 索引名(属性名 [ (长度) ] [转载 2016-07-08 17:47:12 · 34903 阅读 · 0 评论 -
mysql索引总结----mysql 索引类型以及创建
关于MySQL索引的好处,如果正确合理设计并且使用索引的MySQL是一辆兰博基尼的话,那么没有设计和使用索引的MySQL就是一个人力三轮车。对于没有索引的表,单表查询可能几十万数据就是瓶颈,而通常大型网站单日就可能会产生几十万甚至几百万的数据,没有索引查询会变的非常缓慢。还是以WordPress来说,其多个数据表都会对经常被查询的字段添加索引,比如wp_comments表中针对5个字段设计了BTR转载 2016-07-08 16:49:34 · 1777 阅读 · 1 评论 -
Git的相关用法
1.克隆远程项目 git clone git clone http://XXX.XXX/sq-group/XXX.git2.查看远程分支git branch –r 3. 查看所有的分支git branch –a 4. 创建分支git branch name5. 切换分支git checkout name git checkout的主要功能就是迁出一个分支的原创 2016-07-07 23:09:41 · 3306 阅读 · 0 评论 -
分布式设计与开发(一)------宏观概述
在IDF05(Intel Developer Forum 2005)上,Intel首席执行官Craig Barrett就取消4GHz芯片计划一事,半开玩笑当众单膝下跪致歉,给广大软件开发者一个明显的信号,单纯依靠垂直提升硬件性能来提高系统性能的时代已结束,分布式开发的时代实际上早已悄悄地成为了时代的主流,吵得很热的云计算实际上只是包装在分布式之外的商业概念,很多开发者(包括我)都想加入研究云计算这转载 2016-06-21 17:54:17 · 3316 阅读 · 0 评论 -
Bean的生命周期
这Spring框架中,一旦把一个bean纳入到Spring IoC容器之中,这个bean的生命周期就会交由容器进行管理,一般担当管理者角色的是BeanFactory或ApplicationContext。认识一下Bean的生命周期活动,对更好的利用它有很大的帮助。 下面以BeanFactory为例,说明一个Bean的生命周期活动:Bean的建立 由BeanF转载 2016-06-20 22:36:01 · 5457 阅读 · 0 评论 -
HTTP状态码
1xx(临时响应)表示临时响应并需要请求者继续执行操作的状态代码。代码说明100 (继续)请求者应当继续提出请求。服务器返回此代码表示已收到请求的第一部分,正在等待其余部分。101 (切换协议)请求者已要求服务器切换协议,服务器已确认并准备切换。2xx (成功)表示成功处理了请求的状态代码。代码说明200 (成功)服务器已成功处理了请求。通常,这表示服务器提供了请求转载 2016-06-20 18:30:52 · 3321 阅读 · 0 评论 -
hibernate4.0+版本和3.0+版本的区别总结
1.数据库方言设置org.hibernate.dialect.MySQL5Dialect在3.3版本中连接MySQL数据库只需要指明MySQLDialect即可。在4.1版本中可以指出MySQL5Dialect2.buildSessionFactory4.1版本中buildSessionFactory()已经被buildSessionFactory(ServiceR转载 2016-06-18 11:04:53 · 3548 阅读 · 0 评论 -
@Autowired与@Resource的区别
1、@Autowired与@Resource都可以用来装配bean. 都可以写在字段上,或写在setter方法上。 2、@Autowired默认按类型装配(这个注解是属业spring的),默认情况下必须要求依赖对象必须存在,如果要允许null 值,可以设置它的required属性为false,如:@Autowired(required=false) ,如果我们想使用名称装配可以结合@Quali转载 2016-06-18 10:19:38 · 4837 阅读 · 0 评论 -
strutr2运行流程
strutr2运行流程原创 2016-04-15 08:29:46 · 646 阅读 · 2 评论 -
了解Spring AOP
1.概念AOP(Aspect-OrientedProgramming,面向切面编程),可以说是OOP(Object-Oriented Programing,面向对象编程)的补充和完善。 AOP(Aspect Oriented Programming)书面解释是面向切面编程。是Spring核心之一。经常被用来处理事务,日志和其他一些不是主要业务逻辑的需求中。 2.AOP相关概念1.切原创 2016-06-13 15:36:08 · 3118 阅读 · 2 评论 -
快速排序算法(Java)
1.算法介绍: 快速排序(Quicksort)是对冒泡排序的一种改进。快速排序由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。 设要排序的数组是A[0]……A[N-1]原创 2016-06-12 17:32:00 · 1700 阅读 · 0 评论 -
任务调度
任务调度的使用 crontab1、设置任务调度文件 crontab -e2、每隔一定时间去执行任务希望每天凌晨两点半去执行date >>/temp.txt,如下crontab -e ,加入如下代码:0 2 * * * date >>/home/mydata2* * * * * 表示分钟,小时,几号,月,星期如果希望每分钟执行* * * * *原创 2016-06-12 15:13:54 · 1206 阅读 · 0 评论 -
Linux分区
LINUX 分区硬盘分区:基本分区和扩展分区 数目之和不大于四个.一块硬盘上:主分区+扩展分区扩展分区不能直接使用,需要分成逻辑分区才能使用逻辑分区数量不限扩展分区:不能马上使用,只能分成逻辑分区才能用,一个扩展分区可以分成N多逻辑分区假设有一块硬盘 ,先分一个主分区,然后是扩展分区,LINUX中,设备也是文件 ,要使用分区,直接“挂载”都可以了!所有的东原创 2016-06-12 14:32:39 · 1876 阅读 · 0 评论 -
Linux常用命令及重要的文件目录
重要的文件目录(系统分配的目录);ROOT:存放ROOT用户的相关文件HOME :存放普通用户的相关文件(新建的用户)BIN:存放常用命令的目录 cd 切换目录 ls dirSBIN:存放要具有一定权限才可以使用的命令MNT:默认挂载光驱和软驱的目录ETC:存放配置相关的文件,mysql,tomcat,USR:文件默认安装的文件夹,类似XP的program fil原创 2016-06-12 14:16:16 · 2431 阅读 · 0 评论 -
Hibernate阶段性总结(一)
hibernate它是一个实现对JDBC轻量级封装的ORM(对象关系映射)的框架。处于项目的持久层。主要学习它的hibernate api和hibernate.cfg.xml,对象关系映射文件这边介绍下项目的组成部分:WEB层 业务逻辑层(调用HQL语句去操纵持久层,这样就不用去关心到底使用哪种数据库,持久层会自己去判断) DAO层 持久层(对JDBC进行轻量级封装,原创 2016-06-12 10:40:54 · 3272 阅读 · 0 评论 -
Java泛型
一. 泛型概念的提出(为什么需要泛型)?首先,我们看下下面这段简短的代码: 1 public class GenericTest { 2 3 public static void main(String[] args) { 4 List list = new ArrayList(); 5 list.add("qqyumidi")原创 2016-06-08 09:30:17 · 1382 阅读 · 2 评论 -
Java多线程(三)
本文主要接着前面多线程的两篇文章总结Java多线程中的线程安全问题。一.一个典型的Java线程安全例子 1 public class ThreadTest { 2 3 public static void main(String[] args) { 4 Account account = new Account("123456", 1000);转载 2016-06-07 10:37:06 · 923 阅读 · 0 评论 -
Java多线程(二)
本文承接上一篇文章《Java多线程(一)》。四.Java多线程的阻塞状态与线程控制上文已经提到Java阻塞的几种具体类型。下面分别看下引起Java线程阻塞的主要方法。1.join()join —— 让一个线程等待另一个线程完成才继续执行。如A线程线程执行体中调用B线程的join()方法,则A线程被阻塞,知道B线程执行完为止,A才能得以继续执行。 1 pu转载 2016-06-07 08:56:43 · 1237 阅读 · 0 评论 -
Java多线程(一)
一.线程的生命周期及五种基本状态Java线程具有五中基本状态新建状态(New):当线程对象对创建后,即进入了新建状态,如:Thread t = new MyThread();就绪状态(Runnable):当调用线程对象的start()方法(t.start();),线程即进入就绪状态。处于就绪状态的线程,只是说明此线程已经做好了准备,随时等待CPU调度执行,并不是说执行了转载 2016-06-05 10:31:46 · 1894 阅读 · 0 评论 -
java I/O库中设计模式的应用
在java语言 I/O库的设计中,使用了两个结构模式,即装饰模式和适配器模式。 在任何一种计算机语言中,输入/输出都是一个很重要的部分。与一般的计算机语言相比,java将输入/输出的功能和使用范畴做了很大的扩充。因此输入输出在java语言中占有极为重要的位置。 java语言采用流的机制来实现输入/输出。所谓流,就是数据的有序排列,流可以是从某个源(称为流源,或者 Sou转载 2016-06-04 22:02:50 · 7682 阅读 · 0 评论 -
HTTP请求报文和响应报文
HTTP(Hypertext Transfer Protocol, 超文本传输协议)是目前最常用的应用层协议之一。基于HTTP协议的客户/服务器模式的信息交换过程,它分四个过程:建立连接、发送请求信息、发送响应信息、关闭连接。1.HTTP请求报文这是一段实际的请求报文截图①是请求方法,GET和POST是最常见的HTTP方法,除此以外还包括DELETE、HEAD、OPTIONS、原创 2016-06-03 21:50:17 · 4083 阅读 · 0 评论 -
Java多线程中join方法的理解
Example1:Java代码 public class JoinTest implements Runnable{ public static int a = 0; public void run() { for (int k = 0; k 5; k++) { a转载 2016-05-03 22:19:56 · 1715 阅读 · 0 评论 -
JSP中静态包含和动态包含的区别?
主要从以下5方面进行分析:1.语法: 静态包含:<%@ include file=""%> 动态包含:<jsp: include page=""%>2.静态包含时,包含页面和被包含页面中的html.head,body等标签总共只有出现一次,否则会报错;而动态包含不会。3.静态包含不会检查所包含文件中的变化;但是动态包含,可以检查所含文件中的变化,并且可以带参数4.静态包含是先将文件中内容导入被包含的文件中,再一起编译,最后再展现给用户(先包含再编译)5.动态包含可以自动区分被包含文件是静态的还原创 2016-04-23 16:01:43 · 7232 阅读 · 0 评论 -
Servlet 生命周期、工作原理
Servlet 生命周期:Servlet 加载--->实例化--->服务--->销毁。init():在Servlet的生命周期中,仅执行一次init()方法。它是在服务器装入Servlet时执行的,负责初始化Servlet对象。可以配置服务器,以在启动服务器或客户机首次访问Servlet时装入Servlet。无论有多少客户机访问Servlet,都不会重复执行init()。service():它是S转载 2016-04-22 11:35:36 · 421 阅读 · 0 评论 -
String.valueOf() 方法的使用
1.由基本数据型态转换成 String String 类别中已经提供了将基本数据型态转换成 String 的 static 方法 也就是 String.valueOf() 这个参数多载的方法 有下列几种 String.valueOf(boolean b) : 将 boolean 变量 b 转换成字符串 String.valueOf(char c) : 将 char 变量 c 转转载 2016-04-21 19:34:00 · 1616 阅读 · 0 评论 -
servlet/filter/listener/interceptor区别与联系
一、概念: 1、servlet:servlet是一种运行服务器端的java应用程序,具有独立于平台和协议的特性,并且可以动态的生成web页面,它工作在客户端请求与服务器响应的中间层。最早支持 Servlet 技术的是 JavaSoft 的 Java Web Server。此后,一些其它的基于 Java 的 Web Server 开始支持标准的 Servlet API。S转载 2016-04-21 10:55:07 · 504 阅读 · 0 评论 -
TCP,UDP,三次握手
1.TCP(Transmission Control Protocol,传输控制协议)是基于连接的协议,也就是说,在正式收发数据前,必须和对方建立可靠的连接。一个TCP连接必须要经过三次“对话”才能建立起来.2.UDP(User Data Protocol,用户数据报协议)是与TCP相对应的协议。它是面向非连接的协议,它不与对方建立连接,而是直接就把数据包发送过去!3.TCP与原创 2016-04-21 10:41:22 · 3117 阅读 · 0 评论 -
synchronized与static synchronized 的区别
1.synchronized与static synchronized 的区别 synchronized是对类的当前实例进行加锁,防止其他线程同时访问该类的该实例的所有synchronized块,注意这里是“类的当前实例”, 类的两个不同实例就没有这种约束了。 static synchronized恰好就是要控制类的所有实例的访问了,static synchroniz转载 2016-04-20 11:51:10 · 641 阅读 · 0 评论 -
Hashmap的内部机制
1.Hashmap是数据结构中哈希表的实现,可以把它看成是一个线性数组Entry[],每一个数组元素中存储的都是一个链表的头结点,Hashmap中的内容都放在数组中,数组的默认长度为16,每个数组元素都有key,value,next三个属性2.每当调用Hashmap的put()方法的时候:int hash=hash(key.hashcode());int index=hash%Entr原创 2016-04-14 12:58:17 · 744 阅读 · 0 评论 -
JAVA四种引用方式
1.1、强引用当我们使用new 这个关键字创建对象时被创建的对象就是强引用,如Object object = new Object() 这个Object()就是一个强引用了,如果一个对象具有强引用。垃圾回收器就不会去回收有强引用的对象。如当jvm内存不足时,具备强引用的对象,虚拟机宁可会报内存空间不足的异常来终止程序,也不会靠垃圾回收器去回收该对象来解决内存。1.2、软引用如果一个对象具备软引用,如果内存空间足够,那么垃圾回收器就不会回收它,如果内存空间不足了,就会回收该对象。当然没有被回收之前,该对转载 2016-04-25 13:05:39 · 967 阅读 · 0 评论 -
sleep()与wait()有什么区别
1.wait()方法属于object类中的,sleep()是属于Thread类中的2.sleep()方法导致程序暂停执行指定的时间,让出CPU给其他线程,但是线程不会释放对象锁,并且到指定的时间又会自动恢复运行状态3.当调用wait()方法的时候,线程会放弃对象锁,并且进入等待池等待,当针对此对象调用notity(),notifyall()方法后,线程才进入对象锁定池准备,获取对象锁进入运行状态。原创 2016-04-25 12:53:45 · 522 阅读 · 0 评论 -
Servlet生命周期与工作原理
Servlet生命周期分为三个阶段: 1,初始化阶段 调用init()方法 2,响应客户请求阶段 调用service()方法 3,终止阶段 调用destroy()方法Servlet初始化阶段: 在下列时刻Servlet容器装载Servlet: 1,Servlet容器启动时自动装载某些Servlet,实现它只需要在web.X转载 2016-04-22 11:36:40 · 420 阅读 · 0 评论 -
JAVA对象的序列化和反序列化
一、序列化和反序列化的概念 把对象转换为字节序列的过程称为对象的序列化。 把字节序列恢复为对象的过程称为对象的反序列化。 对象的序列化主要有两种用途: 1) 把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中; 2) 在网络上传送对象的字节序列。 在很多应用中,需要对某些对象进行序列化,让它们离开内存空间,入住物理硬盘,以便长期保存。比如最常见的是转载 2016-04-19 23:39:11 · 438 阅读 · 1 评论