Java面试问题集锦

17 篇文章 0 订阅

一.Java基础

   1. String类为什么是final的。

   2. HashMap的源码,实现原理,底层结构。

   3. 说说你知道的几个Java集合类:list、set、queue、map实现类咯。

   4. 描述一下ArrayList和LinkedList各自实现和区别。

   5. Java中的队列都有哪些,有什么区别。

   6. 反射中,Class.forName和classloader的区别。

   7. Java7、Java8的新特性(baidu问的,好BT)。

   8. Java数组和链表两种结构的操作效率,在哪些情况下(从开头开始,从结尾开始,从中间开始),哪些操作(插入,查找,删除)的效率高。

   9. Java内存泄露的问题调查定位:jmap,jstack的使用等等。

   10. string、stringbuilder、stringbuffer区别。

   11. hashtable和hashmap的区别。

   13.异常的结构,运行时异常和非运行时异常,各举个例子。

   14.String a= “abc” String b = “abc” String c = new String(“abc”) String d = “ab” + “c” .他们之间用 == 比较的结果。

   15. String 类的常用方法。

   16. Java 的引用类型有哪几种。

   17. 抽象类和接口的区别?

 接口(interface)可以说成是抽象类的一种特例,接口中的所有方法都必须是抽象的。接口中的方法定义默认为public abstract类型,接口中的成员变量类型默认为public static final。另外,接口和抽象类在方法上有区别: 
    (1) 抽象类可以有构造方法,接口中不能有构造方法。 
    (2) 抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不能有非抽象的普通方法。Java 8里的接口可以有default方法。
    (3) 抽象类中可以有普通成员变量,接口中没有普通成员变量。
    (4) 抽象类中的抽象方法的访问类型可以是public,protected和默认类型。
    (5) 抽象类中可以包含静态方法,接口中不能包含静态方法。
    (6) 抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,但接口中定义的变量只能是public static final类型,并且默认即为public static final类型。
    (7) 一个类可以实现多个接口,但只能继承一个抽象类

    二者在应用方面也有一定的区别:接口更多的是在系统架构设计方法发挥作用,主要用于定义模块之间的通信契约。而抽象类在代码实现方面发挥作用,可以实现代码的重用,例如,模板方法设计模式是抽象类的一个典型应用,假设某个项目的所有Servlet类都要用相同的方式进行权限判断、记录访问日志和处理异常,那么就可以定义一个抽象的基类,让所有的Servlet都继承这个抽象基类,在抽象基类的service方法中完成权限判断、记录访问日志和处理异常的代码,在各个子类中只是完成各自的业务逻辑代码。

    18. java的基础类型和字节大小。

   Java基本类型共有八种,基本类型可以分为三类,字符类型char,布尔类型boolean以及数值类型byte、short、int、long、float、double。数值类型又可以分为整数类型byte、short、int、long和浮点数类型float、double。JAVA中的数值类型不存在无符号的,它们的取值范围是固定的,不会随着机器硬件环境或者操作系统的改变而改变。实际上,JAVA中还存在另外一种基本类型void,它也有对应的包装类 java.lang.Void,不过我们无法直接对它们进行操作。8 中类型表示范围如下:

   byte:8位,最大存储数据量是255,存放的数据范围是-128~127之间。

   short:16位,最大数据存储量是65536,数据范围是-32768~32767之间。

   int:32位,最大数据存储容量是2的32次方减1,数据范围是负的2的31次方到正的2的31次方减1。

   long:64位,最大数据存储容量是2的64次方减1,数据范围为负的2的63次方到正的2的63次方减1。

   float:32位,数据范围在3.4e-45~1.4e38,直接赋值时必须在数字后加上f或F。

   double:64位,数据范围在4.9e-324~1.8e308,赋值时可以加d或D也可以不加。

   boolean:只有true和false两个取值。

   char:16位,存储Unicode码,用单引号赋值。

   Java决定了每种简单类型的大小。这些大小并不随着机器结构的变化而变化。这种大小的不可更改正是Java程序具有很强移植能力的原因之一。下表列出了Java中定义的简单类型、占用二进制位数及对应的封装器类。

   19. Hashtable,HashMap,ConcurrentHashMap底层实现原理与线程安全问题?

可参考的文章:Hashmap实现原理浅析:http://www.cnblogs.com/lzrabbit/p/3721067.html

                        ConcurrentHashMap原理分析:http://www.cnblogs.com/ITtangtang/p/3948786.html

   20.如果不让你用Java Jdk提供的工具,你自己实现一个Map,你怎么做。说了好久,说了HashMap源代码,如果我做,就会借鉴HashMap的原理,说了一通HashMap实现。

   21.Hash冲突怎么办?哪些解决散列冲突的方法?

   22.HashMap冲突很厉害,最差性能,你会怎么解决? 从O(n)提升到log(n),用二叉排序树的思路说了一通。
   23.rehash。
   24.hashCode() 与 equals() 生成算法、方法怎么重写。

二.Java IO

  1.讲讲IO里面的常见类,字节流、字符流、接口、实现类、方法阻塞。
  2.讲讲NIO。
  3.String 编码UTF-8 和GBK的区别?
  4.什么时候使用字节流、什么时候使用字符流?
  5.递归读取文件夹下的文件,代码怎么实现。

三.Java Web

  1.session和cookie的区别和联系,session的生命周期,多个服务部署时session管理。
  2.servlet的一些相关问题。
  3.webservice相关问题。
  4.jdbc连接,forName方式的步骤,怎么声明使用一个事务。举例并具体代码。

参考文章:http://www.cnblogs.com/hongten/archive/2011/03/29/1998311.html 

  5.无框架下配置web.xml的主要配置内容。

 web.xml配置详解1: https://my.oschina.net/u/1383439/blog/224448

 web.xml配置详解2: http://www.cnblogs.com/chinafine/archive/2010/09/02/1815980.html

  6.jsp和servlet的区别。

(1) jsp经编译后就变成了Servlet.(JSP的本质就是Servlet,JVM只能识别java的类,不能识别JSP的代码, Web容器将JSP的代码编译成JVM能够识别的java类) 

(2) jsp更擅长表现于页面显示, servlet更擅长于逻辑控制. 
(3) Servlet中没有内置对象,Jsp中的内置对象都是必须通过HttpServletRequest对象,HttpServletResponse对象以及HttpServlet对象得到. 
  Jsp是Servlet的一种简化,使用Jsp只需要完成程序员需要输出到客户端的内容,Jsp中的Java脚本如何镶嵌到一个类中,由Jsp容器完成。而Servlet则是个完整的Java类,这个类的Service方法用于生成对客户端的响应。

 参考答案:http://blog.chinaunix.net/uid-26284395-id-3038122.html

 四.JVM

   1.Java的内存模型以及GC算法。

参考答案:http://blog.csdn.net/kingofworld/article/details/17718587

   2.jvm性能调优都做了什么。

 JVM性能调优:  http://www.cnblogs.com/chen77716/archive/2010/06/26/2130807.html

 深入理解JVM性能调优:  http://www.open-open.com/lib/view/open1334729637702.html

   3.介绍JVM中7个区域,然后把每个区域可能造成内存的溢出的情况说明。

 深入理解JVM之内存区域与内存溢出: http://www.codeceo.com/article/jvm-memory-overflow.html

   4.介绍GC 和GC Root不正常引用。

 没有找到很好的答案,只找到了关于GC Root的介绍:http://blog.csdn.net/fenglibing/article/details/8928927

   5.自己从classload加载方式,加载机制说开去,从程序运行时数据区,讲到内存分配,讲到String常量池,讲到JVM垃圾回收机制,算法,hotspot。反正就是各种扩展。
   6.jvm 如何分配直接内存, new 对象如何不分配在堆而是栈上,常量池解析.

(2) JAVA NEW关键字分配的对象只能在堆上。

   7.数组多大放在 JVM 老年代。(不只是设置 PretenureSizeThreshold ,问通常多大,没做过一问便知)

大对象直接进入老年代: http://book.51cto.com/art/201107/278927.htm

Java整型数组的最大长度到底有多长: http://blog.csdn.net/mayumin/article/details/5904974

   8.老年代中数组的访问方式

JVM的内存分配及运行机制: http://www.cnblogs.com/200911/p/3922704.html

没有被GC回收,在不在老年代都通过数组引用访问.

   9.GC算法,永久代对象如何GC,GC有环怎么处理。

  1) Java的GC机制及算法: http://blog.chinaunix.net/uid-7374279-id-4489100.html

   Java GC基本算法: http://www.blogjava.net/showsun/archive/2011/07/21/354745.html

  2) Java内存区域和GC机制: http://www.cnblogs.com/hnrainll/archive/2013/11/06/3410042.html

  永久代的回收有两种:常量池中的常量,无用的类信息,常量的回收很简单,没有引用了就可以被回收。对于无用的类进行回收,必须保证3点:
    (1) 类的所有实例都已经被回收;
    (2) 加载类的ClassLoader已经被回收;
    (3) 类对象的Class对象没有被引用(即没有通过反射引用该类的地方).

  3) 基于引用对象遍历的垃圾回收器可以处理循环引用,只要是涉及到的对象不能从GC Roots强引用可到达,垃圾回收器都会进行清理来释放内存。

   10.谁会被GC,什么时候 GC。

(1) 超出了作用域或引用计数为空的对象;从gc root开始搜索找不到的对象,而且经过一次标记、清理,仍然没有复活的对象。 
(2) 程序员不能具体控制时间,系统在不可预测的时间调用System.gc()函数的时候;当然可以通过调优,用NewRatio控制newObject和oldObject的比例,用MaxTenuringThreshold 控制进入oldObject的次数,使得oldObject 存储空间延迟达到full gc,从而使得计时器引发gc时间延迟OOM的时间延迟,以延长对象生存期。

   11.如果想不被GC怎么办。

只要存在某对象的 强引用,就不会被GC回收.

   12.如果想在GC中生存1次怎么办。

想在对象生命周期中至少被GC一次后存活,最简单的方法是 重写Object的finalize()

五.开源框架

  1.Hibernate和ibatis的区别.

参考答案: http://www.cnblogs.com/mingyongcheng/p/3588100.html

  2.讲讲mybatis的连接池。

《深入理解mybatis原理》Mybatis数据源与连接池:  http://blog.csdn.net/luanlouis/article/details/37671851

  3.Spring框架中需要引用哪些jar包,以及这些jar包的用途.

 Spring—jar包详解:  http://www.cnblogs.com/yanjunwu/archive/2013/04/06/3001927.html

  4.SpringMVC的原理.

(1) SpringMVC 的工作原理: http://www.cnblogs.com/zbf1214/p/5265117.html

(2) Spring框架和MVC原理: http://www.cnblogs.com/jingmoxukong/p/4506493.html

  5.SpringMVC注解的意思.

SpringMVC常用的注解和含义:  http://blog.csdn.net/dandandeshangni/article/details/47974461

  6.Spring中beanFactory和ApplicationContext的联系和区别.

BeanFactory 和 ApplicationContext 的区别: http://www.cnblogs.com/lihuiyy/archive/2012/05/22/2512712.html

Spring中ApplicationContext和beanfactory区别: http://blog.csdn.net/hi_kevin/article/details/7325554

  7.Spring注入的几种方式(循环注入).

 Spring四种依赖注入方式: http://blessht.iteye.com/blog/1162131

  (1)Set注入;
  (2)构造器注入;
  (3)静态工厂的方法注入;
  (4)实例工厂的方法注入.

  8.Spring如何实现事物管理的.

 Spring事务管理:  http://www.cnblogs.com/newsouls/p/3988216.html

  9.SpringIOC.

谈谈对Spring IOC的理解:   http://www.cnblogs.com/xdp-gacl/p/4249939.html

  10.Spring AOP的原理.

 (1) 代理类的生成与载入;

 (2) 拦截链的理解与阐述.

  官方参考文档:http://docs.spring.io/spring-framework/docs/current/spring-framework-reference/html/beans.html#beans-introduction

  Spring的AOP原理: https://my.oschina.net/elain/blog/382494

  11.Hibernate中的1级和2级缓存的使用方式以及区别原理(Lazy-Load的理解).

Hibernate缓存:一级缓存和二级缓存: http://www.cnblogs.com/200911/archive/2012/10/09/2716873.html

1)延迟加载 : 当程序执行getter方法获取时,才发送sql语句加载数据.
   延迟加载给程序带来好处,但是要避免session过早关闭问题.
   (1)load()和get()两个方法区别:
      load()采用延迟加载机制,返回的是一个proxy代理对象
      get()没有采用延迟加载,返回的是一个对象实例
   (2)Hibernate.initialize(user): 可以强制user对象实例化
   (3)hbm映射描述文件中,<class>,<property>,<set>等元素, 都可以使用lazy属性,默认lazy="true",启用延迟加载.
2)缓存机制
   Hibernate每次查询先去缓存中查找,没有才去数据库查询.
   (1)一级缓存:
     Session级别的缓存,缓存load,get出来的单个对象.默认开启.
     使用同一个Session对象多次查询同一个User对象,只会发送一次SQL取数据库获取.
   (2)二级缓存
     SessionFactory级别的缓存.默认情况是关闭.
      ①首先在hibernate.cfg.xml中指定EhCache缓存策略.
      ②在src下添加ehcache.xml配置文件.
      ③在User.hbm.xml中添加<cache/>定义.
     <cache usage="read-only"/>,如果涉及更新,使用read-write.

  12.Hibernate的原理体系架构,五大核心接口,Hibernate对象的三种状态转换,事务管理。

参考答案: http://blog.csdn.net/martinmateng/article/details/50879436

  Hibernate的工作原理和体系结构: http://hong0104.iteye.com/blog/760813

  Hibernate事务管理: http://xmllong.iteye.com/blog/1436769

六.网络通信

  1.Http是无状态通信,http的请求方式有哪些,可以自己定义新的请求方式么。
  2.Socket通信,以及长连接,分包,连接异常断开的处理。

Socket通信原理简介: http://www.jianshu.com/p/90348ef3f41e

Socket通信原理探讨: http://www.cnblogs.com/fuchongjundream/p/3914696.html

  3.Socket通信模型的使用,AIO和NIO。

也谈BIO | NIO | AIO:  https://my.oschina.net/bluesky0leon/blog/132361

  4.Socket框架netty的使用,以及NIO的实现原理,为什么是异步非阻塞。

Netty原理和使用:  http://www.jdon.com/concurrent/netty.html

  5.同步和异步,阻塞和非阻塞。

同步与异步的概念: http://blog.chinaunix.net/uid-21411227-id-1826898.html

Socket阻塞与非阻塞,同步与异步、I/O模型: http://blog.csdn.net/hguisu/article/details/7453390

  6.OSI七层模型,包括TCP,IP的一些基本知识.

TCP IP基础知识的复习:  http://www.cnblogs.com/rollenholt/archive/2012/04/25/2469592.html

  7.Http中,get post的区别.

GET和POST有什么区别:  http://www.cnblogs.com/nankezhishi/archive/2012/06/09/getandpost.html

  8.说说http,tcp,udp之间关系和区别。

TCP、UDP和HTTP详解: http://blog.sina.com.cn/s/blog_bf9843bf0101j5w8.html

HTTP TCP UDP Socket关系的几个经典图: http://www.cnblogs.com/ghj1976/p/4295346.html

  9.说说浏览器访问www.taobao.com,经历了怎样的过程。

      首先是查找浏览器缓存,浏览器会保存一段时间你之前访问过的一些网址的DNS信息,不同浏览器保存的时常不等。

      如果没有找到对应的记录,这个时候浏览器会尝试调用系统缓存来继续查找这个网址的对应DNS信息。

      如果还是没找到对应的IP,那么接着会发送一个请求到路由器上,然后路由器在自己的路由器缓存上查找记录,路由器一般也存有DNS信息。

      如果还是没有,这个请求就会被发送到ISP(注:Internet Service Provider互联网服务提供商,就是那些拉网线到你家里的运营商,中国电信中国移动什么的),ISP也会有相应的ISP DNS服务器,一听中国电信就知道这个DNS服务器的规模肯定不会小,所以基本上都能在这里找得到。题外话:会跑到这里进行查询是因为你没有改动过"网络中心"的"ipv4"的DNS地址,万恶的电信联通可以改动了这个DNS服务器,换句话说他们可以让你的浏览器跳转到他们设定的页面上,这也就是人尽皆知的DNS和HTTP劫持,ISP们还美名曰“免费推送服务”。强烈鄙视这种霸王行为。我们也可以自行修改DNS服务器来防止DNS被ISP污染。

      如果还是没有的话, 你的ISP的DNS服务器会将请求发向根域名服务器进行搜索。根域名服务器就是面向全球的顶级DNS服务器,共有13台逻辑上的服务器,从A到M命名,真正的实体服务器则有几百台,分布于全球各大洲。所以这些服务器有真正完整的DNS数据库。如果到了这里还是找不到域名的对应信息,那只能说明一个问题:这个域名本来就不存在,它没有在网上正式注册过。或者卖域名的把它回收掉了(通常是因为欠费)。

      这也就是为什么打开一个新页面会有点慢,因为本地没什么缓存,要这样递归地查询下去。

      多说一句,例如"mp3.baidu.com",域名先是解析出这是个.com的域名,然后跑到管理.com域名的服务器上进行进一步查询,然后是.baidu,最后是mp3,

所以域名结构为:三级域名.二级域名.一级域名

      浏览器终于得到了IP以后,浏览器接着给这个IP的服务器发送了一个http请求,方式为get,例如访问nbut.cn

       这个get请求包含了主机(host)、用户代理(User-Agent),用户代理就是自己的浏览器,它是你的"代理人",Connection(连接属性)中的keep-alive表示浏览器告诉对方服务器在传输完现在请求的内容后不要断开连接,不断开的话下次继续连接速度就很快了。其他的顾名思义就行了。还有一个重点是Cookies,Cookies保存了用户的登陆信息,在每次向服务器发送请求的时候会重复发送给服务器。Corome上的F12与Firefox上的firebug(快捷键shift+F5)均可查看这些信息。

        发送完请求接下来就是等待回应了,如下图:

        当然了,服务器收到浏览器的请求以后(其实是WEB服务器接收到了这个请求,WEB服务器有iis、apache等),它会解析这个请求(读请求头),然后生成一个响应头和具体响应内容。接着服务器会传回来一个响应头和一个响应,响应头告诉了浏览器一些必要的信息,例如重要的Status Code,2开头如200表示一切正常,3开头表示重定向,4开头,如404,呵呵。响应就是具体的页面编码,就是那个<html>......</html>,浏览器先读了关于这个响应的说明书(响应头),然后开始解析这个响应并在页面上显示出来。在下一次CF的时候(不是穿越火线,是http://codeforces.com/),由于经常难以承受几千人的同时访问,所以CF页面经常会出现崩溃页面,到时候可以点开火狐的firebug或是Chrome的F12看看状态,不过这时候一般都急着看题和提交代码,似乎根本就没心情理会这个状态吧。

      如果是个静态页面,那么基本上到这一步就没了,但是如今的网站几乎没有静态的了吧,基本全是动态的。所以这时候事情还没完,根据我们的经验,浏览器打开一个网址的时候会慢慢加载这个页面,一部分一部分的显示,直到完全显示,最后标签栏上的圈圈就不转了。

      这是因为,主页(index)页面框架传送过来以后,浏览器还要继续向服务器发送请求,请求的内容是主页里面包含的一些资源,如图片,视频,css样式等等。这些"非静态"的东西要一点点地请求过来,所以标签栏转啊转,内容刷啊刷,最后全部请求并加载好了就终于好了。

      需要说明的是,对于静态的页面内容,浏览器通常会进行缓存,而对于动态的内容,浏览器通常不会进行缓存。缓存的内容通常也不会保存很久,因为难保网站不会被改动。

  10.HTTP协议、 HTTPS协议,SSL协议及完整交互过程.

HTTPS协议, SSL协议及完整交互过程: http://blog.csdn.net/dfsaggsd/article/details/50910999

HTTP协议详解: http://www.cnblogs.com/EricaMIN1987_IT/p/3837436.html

  11.Tcp的拥塞,快回传,ip的报文丢弃.

TCP的拥塞控制: http://blog.csdn.net/sicofield/article/details/9708383

IP报文头详解以及定义: http://www.cnblogs.com/xsiedu/articles/1741584.html

  12.Https处理的一个过程,对称加密和非对称加密.

对称加密与非对称加密:  http://www.cnblogs.com/jfzhu/p/4020928.html

SSH加密原理、RSA非对称加密算法学习与理解: https://my.oschina.net/realfighter/blog/388486

  13.Head各个特点和区别.

七.数据库MySql

   1.MySql的存储引擎的不同.

 MyISAM拥有较高的插入,查询速度,但不支持事务.
 InnoDB5.5版本后Mysql的默认数据库,事务型数据库的首选引擎,支持ACID事务,支持行级锁定.
 BDB:源自Berkeley DB,事务型数据库的另一种选择,支持COMMITROLLBACK等其他事务特性.
 Memory:所有数据置于内存的存储引擎,拥有极高的插入,更新和查询效率。但是会占用和数据量成正比的内存空间。并且其内容会在Mysql重新启动时丢失.
 Merge:将一定数量的MyISAM表联合而成一个整体,在超大规模数据存储时很有用.
 Archive:非常适合存储大量的独立的,作为历史记录的数据。因为它们不经常被读取。Archive拥有高效的插入速度,但其对查询的支持相对较差.
 Federated:将不同的Mysql服务器联合起来,逻辑上组成一个完整的数据库。非常适合分布式应用.
 Cluster/NDB:高冗余的存储引擎,用多台数据机器联合提供服务以提高整体性能和安全性。适合数据量大,安全和性能要求高的应用.
 CSV:逻辑上由逗号分割数据的存储引擎。它会在数据库子目录里为每个数据表创建一个.CSV文件。这是一种普通文本文件,每个数据行占用一个文本行。CSV存储引擎不支持索引。
 BlackHole:黑洞引擎,写入的任何数据都会消失,一般用于记录binlog做复制的中继.

 谈谈MySQL两种存储引擎: http://www.cnblogs.com/kevingrace/p/5685355.html

  2.单个索引、联合索引、主键索引.

 索引:  http://baike.baidu.com/link?url=anMTlZBhAAQVPC8Hw0rvWa8bvSTGpwSBfMBsIfLjIC1WvqaofHarepiTXI_-HPMaOhv8H7-fto3g1OQTNRXqtvFqn0WtsZ0_9odRP5IRODO

  3.Mysql怎么分表,以及分表后如果想按条件分页查询怎么办(如果不是按分表字段来查询的话,几乎效率低下,无解).

参考答案: http://blog.csdn.net/ahjxhy2010/article/details/50540500

MySQL优化分库分表: http://www.4wei.cn/archives/1001958

  4.分表之后想让一个id多个表是自增的,效率实现.

MySQL分表自增ID解决方案: http://www.ttlsa.com/mysql/mysql-table-to-solve-the-increment-id-scheme/

MySQL分库分表环境下全局ID生成方案: https://my.oschina.net/u/142836/blog/174465

  5.MySql的主从实时备份同步的配置,以及原理(从库读主库的binlog),读写分离.

MySql实现主从热备和读写分离:  http://blog.csdn.net/sanjay_f/article/details/48916171

  6.常用SQL语句.
  7.索引的数据结构,B+树.

B+ Tree的由来、数据结构、基本操作以及数据库索引的应用: http://www.cnblogs.com/yanghuahui/p/3483047.html

B-树和B+树的应用:数据搜索和数据库索引: http://blog.csdn.net/hguisu/article/details/7786014

  8.事务的四个特性,以及各自的特点(原子、隔离)等等,项目怎么解决这些问题.
  9.数据库的锁:行锁,表锁;乐观锁,悲观锁.

参考答案: http://blog.itpub.net/11627468/viewspace-1788399/

  10.数据库事务的几种粒度.

数据库事务的4种粒度: 数据库级表级记录级(行级)属性级(字段级)

数据库事务四种隔离级别: http://blog.csdn.net/tolcf/article/details/49283575

  11.关系型和非关系型数据库区别.

1) 非关系型数据库的优势:

    (1) 性能: NOSQL是基于键值对的,可以想象成表中的主键和值的对应关系,而且不需要经过SQL层的解析,所以性能非常高。
    (2) 可扩展性: 同样也是因为基于键值对,数据之间没有耦合性,所以非常容易水平扩展。

 2) 关系型数据库的优势:

    (1) 复杂查询: 可以用SQL语句方便的在一个表以及多个表之间做非常复杂的数据查询。
    (2) 事务支持: 使得对于安全性能很高的数据访问要求得以实现。

九.设计模式

  1.单例模式:饱汉、饿汉。以及饿汉中的延迟加载,双重检查.

单例模式与双重检测:  http://jiangzhengjun.iteye.com/blog/652440

  2.工厂模式、装饰者模式、观察者模式。

(1) 工厂模式: http://www.cnblogs.com/forlina/archive/2011/06/21/2086114.html

(2) 装饰模式: http://baike.baidu.com/link?url=p0pm9H92tYkZ8ANRGr9njL6-Ysd9uX6LoW-MgplC-PQqjKeJN8bRD_VX7y6OE7O_cxlgB08keCIC0rg272aVqmrtkLrCrxI9GSZ_9JsLIPdeOmJHfTpsCNKNWSqznOXr

(3) 观察者模式: http://www.cnblogs.com/wangjq/archive/2012/07/12/2587966.html

  3.工厂方法模式的优点(低耦合、高内聚,开放封闭原则).

开放封闭原则(Open Closed Principle):   http://www.cnblogs.com/gaochundong/p/open_closed_principle.html

十.并发与性能调优

  1.有个每秒钟5k个请求,查询手机号所属地的笔试题(记得不完整,没列出),如何设计算法?请求再多,比如5w,如何设计整个系统?
  2.高并发情况下,我们系统是如何支撑大量的请求的.

@大量用户访问、高并发请求方面, 基本的解决方案http://f.dataguru.cn/thread-609724-1-1.html

大型高并发高负载网站的系统架构: http://www.cnblogs.com/Safe3/archive/2010/09/07/1820722.html

  3.集群如何同步会话状态.

集群中几种session同步解决方案的比较:  http://blog.csdn.net/shimiso/article/details/8978922

  4.负载均衡的原理.

六大Web负载均衡原理与实现:  http://www.open-open.com/lib/view/open1416924842581.html

  5.如果有一个特别大的访问量,到数据库上,怎么做优化(DB设计,DBIO,SQL优化,Java优化).

 参考答案:  http://wenku.baidu.com/link?url=tbiLiJCuGdmcaDO4iP5BKty7syFZv-9_a5zUqcc39pWNHE8IcMGAIeskE80fHcMSymimvi6XSOMoE0i1QzwPEaeDVIuaeRxJX2a7LrhsKsa

  6.如果出现大面积并发,在不增加服务器的基础上,如何解决服务器响应不及时问题.

如何提高服务器并发处理能力:  http://www.cnblogs.com/zengjin93/p/5569556.html

  7.假如你的项目出现性能瓶颈了,你觉得可能会是哪些方面,怎么解决问题。

 三个方面解决性能问题的基本思路和方法: http://m.2cto.com/kf/201607/527426.html

    http://www.360doc.com/content/15/0727/08/14765814_487648123.shtml

  8.如何查找造成性能瓶颈出现的位置,是哪个位置照成性能瓶颈。

五步定位性能瓶颈: http://www.cnblogs.com/zhangyublogs/p/4965870.html

性能测试如何定位瓶颈: http://blog.csdn.net/zhuff0418/article/details/6906862

  9.你的项目中使用过缓存机制吗?有没用用户非本地缓存.

使用缓存的9大误区: http://kb.cnblogs.com/page/138696/

Java实现redis缓存技术: https://my.oschina.net/Tsher2015/blog/512919

网站缓存技术: http://dcross.iteye.com/blog/721468

十.操作系统

  1.常用的linux下的命令:

Linux中常用操作命令:  http://www.cnblogs.com/laov/p/3541414.html

十一.其他  

    1.Redis: http://baike.baidu.com/link?url=D0fVYBgE32Yzazfy7nELKA98Xvk89gv4EUmRutyxdhRQ2assGxOVNKyVPT3vlWSvhljE3c9wCs1Jl76yjO_1Aa

     在redis使用过程遇到的一些问题的总结:  http://olylakers.iteye.com/blog/2089275

    2.消息中间件:

1) 消息中间件的技术选型心得-RabbitMQ、ActiveMQ和ZeroMQ: http://blog.csdn.net/chszs/article/details/8479072

2) 强大的分布式消息中间件—kafka: http://blog.csdn.net/yangchao228/article/details/40583765

3) kafka与传统的消息中间件对比: http://www.cnblogs.com/duanxz/p/4610827.html

    3.基本Web前端常识:

1) ES6: http://blog.csdn.net/wp1603710463/article/details/51428494

2) CSS3: http://www.ibm.com/developerworks/cn/web/1202_zhouxiang_css3/

    4.红黑树: http://www.cnblogs.com/yangecnu/p/Introduce-Red-Black-Tree.html

   5.如何给100亿个数字排序? http://www.jianshu.com/p/8dc11152f178?hmsr=toutiao.io&utm_medium=toutiao.io&utm_source=toutiao.io

    6.如何快速的解决Maven依赖冲突?  http://www.cnblogs.com/dingyingsi/p/3725340.html

    7.Spring Bean的生命周期.  http://www.cnblogs.com/zrtqsk/p/3735273.html

   8.Java中的深拷贝和浅拷贝: http://www.jb51.net/article/48201.htm

   9.Spring注解原理的详细剖析与实现: http://freewxy.iteye.com/blog/1149128/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值