• EverythingAboutJava


    1 GC gabage collection 垃圾回收

    Java垃圾回收机制

    2 Reader 和 InputStream的区别
    Reader用于读取Unicode编码的字符
    InputStream的区别用于读取ASCII字符和二进制数据

    3 == 和 equals的区别
    equals用于比较内容是否相等
    == 如果比较基本类型,是比较值是否相等,比较对象的变量类型,引用是否指向同一引用

    4 String s = "aa" + "bb"编译器会做什么优化?
    String s = "aabb";
    如果是String s = "aa" + bb; //bb也是一个字符串
    jdk1.4 new StringBuffer().append("aa").append(bb).toString();
    jdk1.5 new StringBuilder().append("aa").append(bb).toString();

    5 String、StringBuffer与StringBuilder之间区别
    http://www.cnblogs.com/A_ming/archive/2010/04/13/1711395.html

    6 Java有哪些基本数据类型?String是不是基本数据类型?
    Java有8种基本数据类型
    boolean char byte short int long float double 整数长度固定,且没有无符号类型
    String是标准库的类

    7 如果在hashCode中返回常量1,会有什么结果?
    在HashMap中,所有这个类的对象都会出现hash冲突,从而使HashMap的查找性能降低为线性级别

    8 char型变量能不能存储一个中文汉字,为什么?
    可以,因为Java内部使用UTF8

    9 HashMap 和 HashTable的区别
    http://www.cnblogs.com/langtianya/archive/2013/03/19/2970273.html

    10,一个Java对象作为Map的key时需要满足的前提条件是什么?
    该对象需要重载hashCode和equals方法

    11,什么是Java序列化?如何实现Java序列化?
    序列化是一种处理对象流的机制:将对象的内容流化,可以对流化后的对象进行读写操作,
    也可以将流化后的对象传输于网络之间。
    序列化的实现: 实现Serializable接口,该接口没有需要实现的方法,只是为了标注
    该对象是可被序列化的。然后使用一个输出流构造一个 ObjectOutputStream对象,
    接着使用该对象的writeObject(Object obj)方法就可以将参数obj的对象写出。

    12,interface 和 abstract class的区别
    interface 是一种 约定关系
    abstract class 体现一种继承关系

    13,如果A和B对象循环引用,是否可以被GC
    可以

    14,多态的实现

    一,子类重写父类的方法 ,用父类的引用,引用不同的子类,这样调用同样的方法,就会根据子类对象

    的不同而表现出不同的行为。

    二,在同一个类重,重载同一个方法名来实现多态。

    15,多态的例子
    比如微信支付和 支付宝支付,对于通向的支付接口,根据具体对象,可以表现出不同的行为。

    16,面向对象和面向过程的区别?
    面向过程是以事件为中心的编程思想
    面向对象以对象为中心,关注对象的行为。

    17,重载和重写
    重载发生在同一个类中,方法名相同,调用参数的不同。
    重写发生在父类和子类之间, 根据不同的子类确定调用的具体方法。

    18,里氏替换,任何时候都可以用子类型替换掉父类型

    19,面向接口编程,因为抽象类型可以被它的任何一个子类型代替

    20,

    Java堆内存

    http://www.importnew.com/19593.html


    21,

    JVM 优化经验总结

    https://www.ibm.com/developerworks/cn/java/j-lo-jvm-optimize-experience/index.html


    22,

    两种异常  checked exception 和  runtime exception

    https://www.nowcoder.com/test/question/done?tid=7924845&qid=22460#summary
    23,

    跟我学SpringMVC目录汇总贴、PDF下载、源码下载


    24,

    深入浅出 JIT 编译器

    https://www.ibm.com/developerworks/cn/java/j-lo-just-in-time/


    25,

    dubbo学习笔记(一) dubbo入门Hello dubbo

    26,

    mybatis 官方文档

    http://www.mybatis.org/mybatis-3/zh/index.html
    27,

    线上应用故障排查之一:高CPU占用  查看线程
    28,

    转-Tomcat 8 安装和配置、优化


    29,

    完整java开发中JDBC连接数据库代码和步骤
    30,

    MyBatis学习总结(八)——Mybatis3.x与Spring4.x整合


    31,Java NIO

    Java NIO:NIO概述

    Java NIO API详解


    32,字段类型不同,导致索引用不上

    mysql 关联查询 索引不起作用原因记录


    33,

    sql之left join、right join、inner join的区别


    34,CountDownLatch

    浅谈Java中CountDownLatch的用法


    35,

    浅谈Java中CyclicBarrier的用法


    36,Future

    Java并发编程:Callable、Future和FutureTask


    37,Java并发框架

    Java线程池ExecutorService

    ExecutorService线程池

    Java多线程之ExecutorService

    ExecutorService常用方法和newFixedThreadPool创建固定大小的线程池


    38,

    java观察者模式介绍
    39,

    Java 单例模式详解

    java double check lock

    40,ES的特点

    强大的横向扩展能力

    自动发现

    天生分布式

    集成语义分析

    41,

    Linux中TCP连接过程状态简介

    http://www.cnblogs.com/ggzss/archive/2011/09/25/2190404.html

    42,

    osi 模型 tcpip网络模型

    43,Linux命令的理解

    可执行的二进制文件,脚本

    44,查看CPU的使用状态

    top或者 cat /proc/stat

    45,   类的静态语句块,仅在类被加载时执行一次

    46,加载驱动方法

    一,Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
    二,DriverManager.registerDriver(new com.mysql.jdbc.Driver());

    三,添加系统属性

    System.setProperty("jdbc.drivers", "com.MySQL.jdbc.Driver");

    47,

    Web Service 的工作原理

    关键词 xml, soap WSDL

    48,ResultSet跟普通数组不同,索引从1开始,而不是0

    49,volatile 只保证可见性, 不保证原子性

    50,线程调度算法是平台独立的

    51,前台线程结束,程序就会终止,不会管后台线程。

    52, class的方法可以与class同名,有返回值方法,没有返回值就是构造函数

    53,

    &在逻辑运算中是非短路逻辑与,在位运算中是按位与

    54,

    java中可以有多个重载的main方法,只有public static void main(String[] args){}是函数入口

    55,

    子类实例化时,总要先调用父类的构造函数,如果没有显示调用,系统就会 隐式调用父类的无参构造函数 ,而如果父类没有无参构造函数,就会编译报错。

    56,HashMap使用 链表法解决冲突

    57,Statement -> PreparedStatement -> CallableStatement

    58,final变量必须初始化,或者以某种方式初始化。

    59, == 高于 三目用算符, 三目用算符从右到左计算。

    boolean b=true?false:true==true?false:true;

    b的结果是false

    60,静态块,在类加载时执行一次,

    构造块,每次创建对象都执行一次。

    静态块》main》构造块》构造方法

    61,

    A,Vector相当于一个线程安全的List
    B,HashMap是非线程安全的,其对应的线程安全类是HashTable
    C,Arraylist是非线程安全的,其对应的线程安全类是Vector
    D,StringBuffer是线程安全的,相当于一个线程安全的StringBuilder
    E,Properties实现了Map接口,是线程安全的

    62,内部类,在声明时需要 Outer.inter a,

    对于非静态内部类,需要有外部类的对象才能new, 静态内部类则不需要。

    63,

    接口(interface)可以说成是抽象类的一种特例,接口中的所有方法都必须是抽象的。接口中的方法定义默认为public abstract类型,接口中的成员变量类型默认为public static final。另外,接口和抽象类在方法上有区别:    
    1.抽象类可以有构造方法,接口中不能有构造方法。  
    2.抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不能有非抽象的普通方法。
    3.抽象类中可以有普通成员变量,接口中没有普通成员变量 
    4. 抽象类中的抽象方法的访问类型可以是public,protected和默认类型
    5. 抽象类中可以包含静态方法,接口中不能包含静态方法
    6. 抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,但接口中定义的变量只能是public static final类型,并且默认即为public static final类型
    7. 一个类可以实现多个接口,但只能继承一个抽象类。二者在应用方面也有一定的区别:接口更多的是在系统架构设计方法发挥作用,主要用于定义模块之间的通信契约。而抽象类在代码实现方面发挥作用,可以实现代码的重用,例如,模板方法设计模式是抽象类的一个典型应用,假设某个项目的所有Servlet类都要用相同的方式进行权限判断、记录访问日志和处理异常,那么就可以定义一个抽象的基类,让所有的Servlet都继承这个抽象基类,在抽象基类的service方法中完成权限判断、记录访问日志和处理异常的代码,在各个子类中只是完成各自的业务逻辑代码。

    64,

    JAVA语言的下面几种数组复制方法中,哪个效率最高? System.arraycopy

    65,

    floor : 意为地板,指向下取整,返回不大于它的最大整数 ceil : 意为天花板,指向上取整,返回不小于它的最小整数 round : 意为大约,表示“四舍五入”,而四舍五入是往大数方向入。Math.round(11.5)的结果为12,Math.round(-11.5)的结果为-11而不是-12。

    66,

    Swing 比 AWT 速度慢

    67,方法区所有线程共享

    68,

    鲁棒性 robust 健壮性

    69,

    对象序列化为何要定义serialVersionUID的来龙去脉

    70,

    Java transient关键字使用小记

    71,

    java序列化java.io.Externalizable (也是转过来的)

    Externalizable也是序列化接口,继承了Serializable

    72,Copy-On-Write

    http://ifeve.com/java-copy-on-write/

    73, 数据库面试题

    https://zhuanlan.zhihu.com/p/23713529

    74

    Spring事务配置的五种方式 巨全!不看后悔,一看必懂!

    Spring 事务机制详解

    https://my.oschina.net/xianggao/blog/84237

     

    http://opiece.me/2016/03/18/spring-transactional-introduce/(Spring事务配置及事务的传播性与隔离级别详解

    75 查看SQL执行效率 explain

    http://blog.csdn.net/mengxianhua/article/details/8771993

    数据库查询优化技术

    76,Java对象实例化过程。

    1,如果类没有加载,先加载类到内存中,HotspotJVM采用双亲委托模型。在类加载时,会给(1)静态变量分配内存空间并初始化,然后(2)执行静态方法块。

    2,在堆内存中,给对象分配空间,并对实例变量做默认初始化null。

    3,执行 非静态方法块,也叫构造块, 在构造块中可以初始化实例变量。

    4,执行对应的构造函数。

    5,将堆内存地址返回给引用变量,结束。

    http://blog.csdn.net/piaojun_pj/article/details/5888104 (java实例化对象的过程

    http://www.cnblogs.com/SkyGood/p/3941942.html (一个对象的实例化过程【重点】

    注:非静态构造块可以看成是构造函数的一部分,是在所有构造函数最前面执行的。 这样实例的初始化就简化为:首先 默认初始化实例变量,再调用构造函数。

    77,类加载-双亲委托模型

    JDK默认的三种classloader:bootstrap loader -> ext class loader -> app class loader

    1,看该类是否已经加载过,如果加载过直接返回。

    2,如果没有加载过 就调用父类加载器去加载,如果没有父类,那就调用 bootstrap 类加载器去加载, 如果者两者都失败了, 最后才调用自身的加载器。

    http://www.tuicool.com/articles/rqaQJj (深入JVM系列(三)之类加载、类加载器、双亲委派机制与常见问题)

     java ClassLoader类解析-双亲委托机制

    78, 用redis实现 分布式可重入锁

    http://12131896.blog.51cto.com/12121896/1858517 (Java 实现基于Redis的分布式可重入锁)

    79,LRU(最近最少使用)

    LRU java实现

    80,

    Java监控工具、调优、调试辅助函数

    81,动态代理

    http://www.cnblogs.com/flyoung2008/archive/2013/08/11/3251148.html (彻底理解JAVA动态代理

    http://www.jianshu.com/p/6f6bb2f0ece9 (代理模式及Java实现动态代理)

    82,日志收集系统

    几十条业务线日志系统如何收集处理? (flume)

    83,redis连接池 用到了  commons-pool 

    Jedis连接池的使用

    84,

    Apache commons-pool对象池原理分析

    85,

    Reactor模式详解

      

  • 相关阅读:
    IBM项目(项目管理)
    MSN附加照片问题解决
    国家图书馆新馆
    『Python Kivy』Kivy and PyDev on Eclipse
    『C#基础』C#导出Excel
    『Python Kivy』什么是Kivy,以及Hello world
    『创建型』简单工厂SimpleFactory、工厂方法FactoryMethod、抽象工厂AbstractFactory
    『C#基础』多线程笔记「三」计时器
    『C#基础』多线程笔记「二」线程同步
    『创建型』单例模式Singleton学习笔记
  • 原文地址:https://www.cnblogs.com/fupeng/p/6664441.html
Copyright © 2020-2023  润新知