后端面试题
文章平均质量分 80
19年,重新开始写
求学之路,泛结良师,广交益友
展开
-
搜狗2015java工程师笔试题总结
1.下列关于Java并发的说法中正确的是()A.CopyOnWriteArrayList适用于写多读少的并发场景B.ReadWriteLock适用于读多写少的并发场景C.ConcurrentHashMap的写操作不需要加锁,读操作需要加锁D.只要在定义int类型的成员变量i的时候加上volatile关键字,那么多线程并发执行i++这样的操作的时候就是线程安全的了正确答案为B。A,CopyOnW原创 2017-07-30 09:11:18 · 474 阅读 · 0 评论 -
java高并发程序设计总结二:java并行程序基础
进程和线程的关系进程的概念:进程是计算机中的程序关于某数据集合的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。进程和线程的关系:简单的来说,进程就是线程的容器,而线程就是轻量级进程,是程序执行的最小单位;使用多线程而不是多进程来进行并发程序的设计,是因为线程间的切换和调度的成本要远远小于进程线程的创建两种基本方式:继承Thread类和实现Runnable接口,下面通过代码来翻译 2017-10-22 00:23:39 · 657 阅读 · 0 评论 -
java高并发程序设计总结三:JDK并发包之ReentrantLock重入锁
为了更好的支持并发程序,jdk内部提供了大量实用的API和框架,重入锁就是一种对同步的扩展ReentrantLock起源在1.5的时候,synchronized关键的性能不是很好,这也是concurrent并发包出现的一种潜在原因,而新出现的ReentrantLock重入锁的性能那时比synchronized好太多,也提供了更加灵活、细粒度的同步操作。(在jdk1.6开始,jdk在synchroni翻译 2017-10-22 13:19:10 · 1024 阅读 · 0 评论 -
java高并发程序设计总结四:JDK并发包之信号量Semaphore
概念信号量是对锁的一种扩展。不管是对于synchronized还是对于ReentrantLock锁来说,一次都只允许一个线程获取锁资源,其余的线程都只能处于等待状态。而信号量可以指定多个线程同时访问某一个资源,包括锁资源Semaphore主要提供了一下两个构造函数public Semaphore(int permits);初始化信号量并指定能同时访问的线程数量public Semaphore(int翻译 2017-10-23 10:41:27 · 805 阅读 · 0 评论 -
java高并发程序设计总结五:jdk并发包其他同步控制工具类:ReadWriteLock/CountDownLatch/CyclicBarrier/LockSupport
读写锁ReadWriteLock之前的博客介绍了synchronized和重入锁ReentrantLock都可以实现线程同步,这两种方式确实实现了线程同步,保证了同时只能有一个线程能获得锁资源。不过他们有一个缺点:多个线程对数据进行读取操作也是需要进行等待的。而这实际上是没必要的,因为读操作不会对数据造成污染。ReadWriteLock的出现优化了这一个缺点:多个线程读不会阻塞,而读写和写写会进行阻翻译 2017-10-23 13:40:27 · 342 阅读 · 0 评论 -
java设计模式总结四:原型模式
原型模式定义用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。它属于创建型模式。原型模式主要用于实现对象的复制原型模式简单的说就是:通过一个原型对象来表明要创建的对象类型,然后通过复制这个原型对象的方法来创建同类型的对象原型模式的使用场景假设对于一个产品的再生产,每次都生产同样的产品,可以使用如下代码实现://产品类public class Product{ private i原创 2017-11-01 09:59:28 · 591 阅读 · 0 评论 -
java设计模式总结五:创建者模式
创建者模式定义创建者模式就是将一个对象的创建和表示分离,使得同样的构建过程可以有不同的表示,而且客户端不需要知道对象的构建细节在书中第二条提到:遇到多个构造器参数时考虑使用构建器,其实这里的构建器说的就是创建者模式创建者模式组成角色1.Builder:为创建一个产品对象的各个部件指定抽象接口public interface HTMLBuilder{ void buildHead();原创 2017-11-01 11:32:08 · 635 阅读 · 0 评论 -
java设计模式总结七:门面模式
门面模式定义门面模式也称外观模式,门面模式实现了子模块和客户端之间的松耦合关系,从而屏蔽了子模块内部的实现细节。只是将客户端需要的接口提供给客户,这样一来子模块组件如果发生变化,修改接口就可以了,不会影响到客户端的使用。简单来说就是把一系列复杂的流程封装成一个接口供给客户端更简单的使用门面模式三种角色子系统角色,客户角色和门面角色, 其中门面角色可以看成是一个中间件,用于实现客户端间接调用子系统提供原创 2017-11-01 18:29:43 · 715 阅读 · 0 评论 -
java设计模式总结八:代理模式
代理模式定义代理模式就是给一个对象提供一个代理对象,由这个代理对象控制对原对象的引用,使代理类在客户端和原对象之间起到一个代理的作用在不适用代理模式的情况下我们将两个类进行关联时,就需要在一个类的代码中直接调用另一个类,后续如果需要进行特殊的处理,就需要直接在该类中修改代码,这违背了设计模式的开闭原则,并且当很多类需要进行相同的特殊处理的时候,每一个类都必须编写相同的处理代码,无法实现代码的复用而在原创 2017-11-02 13:29:44 · 476 阅读 · 0 评论 -
java序列化与反序列化
概念java序列化是将对象转换成字节序列的过程;而java反序列化是将字节序列转换成对象的过程;由来我们都知道,当两个进程进行远程通信时,可以相互发送各种类型的数据,比如文本、图片、音频、视频等,而这些数据都是以二进制的形式进行发送的,那么能否实现进程间的对象传送吗?这个时候就需要对象的序列化和反序列化了:发送方需要使用序列化将对象转换成字节序列进行发送,而接收方需要使用反序列化将接收到的字节序列转原创 2017-10-16 21:42:46 · 352 阅读 · 0 评论 -
java设计模式总结三:单例模式
单例模式定义 单例模式,是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中一个类只有一个实例。即一个类只有一个对象实例 单例模式的实现方式:懒汉式实现,不过多线程下不安全 public class Singleton { private static Singleton instance;原创 2017-10-06 14:29:09 · 365 阅读 · 0 评论 -
java设计模式总结二:工厂模式
工厂模式定义 工厂模式用于实现工厂方法代替new来创建实例化对象,简单的说就是由一个工厂类根据传入的参数来选择创建哪一种的产品类 在任何需要使用多态的原理根据不同的信息生成不同的对象的场景下都可以使用工厂模式工厂模式四个角色: 工厂类角色:是具体产品类角色直接调用者。 抽象产品角色:接口或抽象类,负责具体产品角色的定义,及与客户端的交互。 具体产品角色:原创 2017-10-06 14:32:45 · 417 阅读 · 0 评论 -
java设计模式总结一:简介和原则
设计模式分类设计模式分为三大类:创建型模式、结构型模式和行为型模式创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。其实还有两类转载 2017-10-28 00:06:19 · 353 阅读 · 0 评论 -
java基础部分面试题汇总1(十题一章)
1.一个Java源文件中 是否可以包括多个类(内部类除外)?有什么限制?一个java文件中可以包括多个类,但是必须有且只能有一个类被public修饰,且该类名必须与文件名相同2.&和&&的异同相同点:他们都可以用作逻辑与的运算符不同点:&还可以做位运算符,进行按位与;&&具有短路逻辑与的特点3.switch语句能否作用在byte/long/Sytinh上?在switch(condition)中,co原创 2017-08-03 13:51:43 · 304 阅读 · 0 评论 -
java基础面试题汇总2(十题一章)
1.写clone()方法时,通常都会有一行代码,是什么?clone缺省行为:super.clone();因为首先要把父类中的成员先复制,然后再复制自己的成员2.java中的多态机制是什么?父类或者接口定义的引用变量时可以指向子类或具体实现类的实例对象,而程序调用的方法在运行时才会进行动态绑定,就是引用变量所指向的具体实例对象的方法,也就是内存里正在运行的那个对象的方法,而不是引用变量的类型中定义的方原创 2017-08-03 17:47:14 · 451 阅读 · 1 评论 -
牛客网日常刷题错题汇总2017-09-05
JSP九大内置对象 分别为:request/response/session/out/page/application/exception/config/pageContext;具体看博客:http://blog.csdn.net/qq_27905183/article/details/52820244对于Integer对象来说,当一个int类型的变量直接赋给一个Integer对象,会调用Int原创 2017-09-05 02:00:44 · 905 阅读 · 0 评论 -
牛客网日常刷题错题汇总2017-09-06
<经典>关于ArrayList扩容的讲解: ArrayList的构造器总共有三个:ArrayList()无参构造器构造一个初始容量为10的空列表,每次扩容大小为1.5倍; ArrayList(Collection ArrayList(int initialCapacity)构造一个具有指定初始容量的空容量;这种方式是指定了创建的容量大小,没有扩充;<经典>关于HashMap和HashTa原创 2017-09-06 02:06:42 · 532 阅读 · 0 评论 -
牛客网日常刷题错题汇总2017-09-08
<方法重载> 同一个类中的方法的重载:方向名相同,参数列表不同;而方法的返回值类型和修饰符都是没有关系的;如下程序的输出结果:public class IfTest{ public static void main(string[]args){ int x=3; int y=1; if(x=y) System.out.p原创 2017-09-09 02:00:24 · 403 阅读 · 0 评论 -
java的override和overload详解
在详解override和overload前需要对多态做一个详细的了解什么是多态?多态的教科书标准定义:允许不同类的对象对同一消息做出响应。即同一消息可以根据发送对象的不同而采用多种不同的行为方式。其实可以借助于生活中的常见的一种多态现象来解释多态:比方说按下 F1 键这个动作,如果当前在 Flash 界面下弹出的就是 AS 3 的帮助文档;如果当前在 Word 下弹出的就是 Word 帮助;在 Wi原创 2017-10-18 01:02:42 · 1181 阅读 · 0 评论 -
java高并发程序设计总结一:走进并行世界
2014年底,就在大家都认为并行计算必然成为未来的大趋势时,在Avoiding ping pong论坛上,Linus Torvalds提出了一个截然不同的观点:“忘掉那该死的并行吧!”(原文:Give it up. The whole”parallel computing is the futrue” is a bunch of crock)忘掉那该死的并行对于并行计算,Linus提出两个特例,那就翻译 2017-10-19 14:49:31 · 445 阅读 · 0 评论 -
java并发程序设计总结六:线程池
多线程的软件设计方法确实可以最大限度的发挥现代多核处理器的计算能力,但是如果不加控制和管理的随意使用创建线程,对系统的性能反而会产生不利的影响。不适用线程池的线程优化可以使用如下方式来创建线程,他会在run结束之后,自动回收线程资源:new Thread(new Runnable(){ public void run(){ // do something... }}翻译 2017-10-23 20:28:23 · 344 阅读 · 0 评论 -
java并发程序设计总结七:jdk的并发容器
线程安全的HashMap:Collections.synchronizedMap()Collections工具类中提供了一系列synchronizedXxx方法用于包装对应的集合对象成线程安全的。这里就介绍下HashMap:public static <K,V>Map<K,V> synchronizedMap(Map<K,V> m);该方法会生成一个名为synchronizedMap的Map,它使用翻译 2017-10-27 19:46:29 · 476 阅读 · 0 评论 -
《Java深入解析-渗透java本质的36个话题》总结
浮点类型的种种悬疑浮点类型只是近似的存储,这很显而易见,因为在计算机内部是使用二进制来存储数值的,而对于0.3333之类的奇数小数就没办法存储,因此采用的是一种近似值的方式进行存储的,所以就会造成一个误差:下面代码将输出false,因为对于浮点数运算会存在误差:double x = 0.1, y = 0.2, z = 0.3;System.out.println(x+y==z);//真...原创 2018-05-19 12:42:59 · 1074 阅读 · 0 评论