zoukankan      html  css  js  c++  java
  • java中级面试题 之基础篇

    一、Java基础

    1. 实例方法和静态方法有什么不一样?

    1、在外部调用静态方法时,可以使用"类名.方法名"的方式,也可以使用"对象名.方法名"的方式。而实例方法只有后面这种方式。也就是说,调用静态方法可以无需创建对象。

    2、静态方法在访问本类的成员时,只允许访问静态成员(即静态成员变量和静态方法),而不允许访问实例成员变量和实例方法;实例方法则无此限制。

    2. Java中的异常有哪几类?分别怎么使用?

    编译时异常,运行时异常。编译时异常需要try...catch才能编译通过。运行时异常不用try...catch也能编译通过。

    RuntimeException是非检出异常,不需要try...catch也能编译通过。

    IoException,SQLException等等其他所有异常都是检出异常,必须要try...catach才能编译通过。

    3. 常用的集合类有哪些?比如List如何排序?

    分两种,一种实现Set接口,一种是实现List接口的。

    Set:TreeSet,HashSet.

    List:ArrayList,LinkedList,Vector(线程安全)。

    JDK7以前用collections.sort(list,Comparator).

    JDK8直接用List.sort(Comparator).

    4. ArrayList和LinkedList内部的实现大致是怎样的?他们之间的区别和各自适应的场景是什么?

    ArrayList,是数组结构:查询快,增删慢

    LinkedList,是链表结构:查询慢,增删快

    6. ClassLoader有什么用?

    类加载器:所有类都需要Classloader来加载。

    7. ==和equals的区别?

    ==判断对象物理地址。

    equals判断对象Value是否相等。

    8. hashCode方法的作用?

    在hashMap中使用,把一个对象变成一个整型。hashCode规范,如果两个对象的equals返回true,那他们的hashCode必须相等,但是hashCode相等,不一定equals不一定相等。

    9. Object类中有哪些方法?列举3个以上。

    构造方法,toString(),equals,hashCode,getClass,finalize,clone,三个wait(),notify,notifyAll.

    10. NIO是什么?适用于何种场景?

      NIO是newIO,接口都是异步的,非阻塞的。

    16. Java中一个字符占多少个字节,扩展再问int, long, double占多少字节

    一个字符两个字节,int 4 , long double 8 

    17. 创建一个类的实例都有哪些办法?

    new ,反射。

    19. LinkingBlockingQueue与ArrayBlockingQueue的区别,他们的适用场景?

    LinkingBlockQueue 链表实现的阻塞队列,适合一个一个放,一个一个取。

    ArrayBlocakingQueue数组实现的阻塞队列,适合三个放,多个放,只适合多个取,不适合单个取。

    20. Session/Cookie的区别?

    Session存在服务器端。

    Cookie存在客户端(浏览器上)。

    21. String/StringBuffer/StringBuilder的区别,扩展再问他们的实现?

    String 值不可变

    StringBuffer 值可变,线程安全

    StringBuilder 值可变,线程不安全

    二、JVM

    1、JVM的基本结构

    堆 栈 方法区

    几乎所有的对象都存放在堆上,并且java堆是完全自动化管理的,通过垃圾回收机制;

    每次函数调用的数据都是通过java栈传递的。

    2、JVM有哪些常用启动参数可以调整?

    -Xms:设置jvm内存的初始大小
    -Xmx:设置jvm内存的最大值

    我们会遇到内存溢出,java.lang.OutOfMemoryError 就是需要配置jvm

    3、如何查看JVM的内存使用情况?

    有一些工具 JMap JMap是JDK中自带的一个用于分析JVM内存状况的工具,

    也可以通过代码去查看

    Runtime run = Runtime.getRuntime(); 
    
    long max = run.maxMemory()/(1024*1024); 
    
    long total = run.totalMemory()/(1024*1024); 
    
    long free = run.freeMemory()/(1024*1024); 
    
    long usable = max - total + free; 
    
    System.out.println("最大内存 = " + max); 
    System.out.println("已分配内存 = " + total); 
    System.out.println("已分配内存中的剩余空间 = " + free); 
    System.out.println("最大可用内存 = " + usable); 

    https://www.cnblogs.com/tietazhan/articles/5771886.html

    https://blog.csdn.net/yy251066394/article/details/78469270

  • 相关阅读:
    软件测试方法
    激情是人生中最可宝贵的
    比较有意思的一篇文章
    基于LNMP的Zabbbix之Zabbix Agent源码详细安装,但不给图
    Mysql导入zabbix的sql语句时报错:ERROR 1045 (28000)
    502 Bad Gateway(Nginx) 查看nginx日志有如下内容
    jcaptcha进阶
    MFC 程序的运行流程
    Selenium API 介绍
    java.util.ComparableTimSort中的sort()方法简单分析
  • 原文地址:https://www.cnblogs.com/lyon91/p/9040760.html
Copyright © 2011-2022 走看看