Java面试题

     此篇面试题会持续更新......      

         面试题1

面试官:HashMap的key存对象时应该注意什么

答:如果自定义对象作为Map的键,那么必须重写hashCode和equals

面试官:HashMap中hashCode作用

答:1、返回对象的哈希吗值(散列嘛),用来支持哈希表,比如HashMap

  2、可以提高哈希表的性能

通俗的解释

  hashCode就类似门牌号,小区非常大但定位你在哪里告诉门牌号就可以,非常快速定位到(非常像数组的下标)

  equals就是找到门牌号需要比较里面具体的房间

面试官:Java异常类具体怎么用到项目中

答:统一自定义异常类+枚举和错误返回码

常用Linux命令之一

pwd:显示当前目录路径

cd ..切换上级目录                

                    面试题2

 面试官:String,StringBuffer,StringBuilder的区别

答:线程安全性:

  线程安全:String,StringBuffer

  线程不安全:StringBuilder

  执行效率:

  StringBuilder > StringBuffer > String

  存储空间:

  String的值是不变的,每次对String的操作都会生成新的String对象,效率低

  会耗费大量的内存空间,从而引起GC

  StringBuffer和StringBUilder都是可变的

  使用场景:

  1、如果操作少量的数据用String

  2、单线程操作字符串缓冲区 下操作大量数据= StringBuilder

  3、多线程操作字符串缓冲区 下操作大量数据= StringBuffer

面试官:HashMap的理解

答:1、内部存储结构:数据+链表+红黑树(JDK1.8)

  2、默认容量16,默认装载因子0.75

  3、key和value对数据类型的要求都是泛型

  4、key可以为null,放在table[0]中

  5、hashCode:计算键的hashCode作为存储信息的数据下标用于查找对象的存储位置

    equals:HashMap使用equals()判断当前的键是否与表中存在的键相同

面试官:为什么设置出迭代器

答:迭代器本事是一种设计模式,为了解决不同的集合类提供统一的遍历操作接口

面试官:Java单机并发控制

答:最基础的:

  1、同步方法synchronized

  2、同步块synchronized

  进阶的:

  重入锁ReentrantLock

面试官:多线程创建的方式

答:1、继承Thread类

  2、实现Runnable接口

  3、实现Callable接口通过FutureTask包装器来创建Thread线程

面试官:怎么防止前端重复提交

答:1、提交按钮后屏蔽提交按钮(前端js控制)

  2、前端生产唯一ID,后端通过唯一索引

  3、利用session防止表单重复提交

面试官:springAop的原理

答:1、通过预编译方式和运行期动态代理的方式实现程序功能的统一维护的一种技术

  2、主要功能:日志记录、性能统计、安全控制、事务处理、异常处理等等

  3、AOP的实现方式

    -预编译:AspectJ

    -运行期动态代理:(jdk动态代理、cglib动态代理):springAOPjBOSSaop

  4、AOP几个相关的概念:

  面向切面的核心思想就是,让核心的业务逻辑代码,不需要去管理一些通用逻辑

  比如说事务,安全等,这方面的给共同逻辑:解耦业务逻辑和通用逻辑

Linux常用命令之二

查看日志:tail -f 日志名   【cd logs】

查看端口是否被占用:netstat -an | grep 端口号

查看端口:netstat -an

原文地址:https://www.cnblogs.com/exce-ben/p/12490395.html