(转)喜马拉雅2018 Java面试题目

背景:将网上的题目整理下。

java基础

1:hashTable hashMap ConcurrentHashMap 的区别、数据结构、线程安全

2:equals和==区别, 重写equals一定要重写hashcode方法吗?为什么?hashcode方法有什么作用?

这个万年不变的面试题,这是何等的卧槽

==说明:

对于基本类型来说 ,==比较两个基本类型的值是否相等,

对于引用类型来说,==比较的是内个引用类型的内存地址

equals说明:

equals用来比较的是两个对象的内容是否相等,由于所有的类都是继承自java.lang.Object类的,所以适用于所有对象,如果没有对该方法       进行覆盖的话,调用的仍然是Object类中的方法,而Object中的equals方法返回的却是==的判断。

重写equals一般是要重写hashcode方法的,首先equals与hashcode间的关系是这样的:

1、如果两个对象相同(即用equals比较返回true),那么它们的hashCode值一定要相同;

2、如果两个对象的hashCode相同,它们并不一定相同(即用equals比较返回false)

比如说两个字符串的hashcode相同,但是这两个字符串可以是不同的字符串,对象也是同理,自己理解的。

至于hashcode有什么用?

为了提高程序的效率才实现了hashcode方法,先进行hashcode的比较,如果不同,那没就不必在进行equals的比较了,这样就大大减少         了equals比较的次数,这对比需要比较的数量很大的效率提高是很明显的,一个很好的例子就是在集合中的使用;
(转)从一道面试题彻底搞懂hashCode与equals的作用与区别及应当注意的细节

3:线程池的工作机制,Java通过Executors工具类创建出来的线程池有什么区别,为什么这样定义?

4:线程池有哪些参数,具体含义是什么?
4:AQS 重入锁 读写锁 countdownlatch 栅栏(cyclicBarrier) 信号量(semaphore)
5:有四个线程A、B、C、D、E,现在需要E线程在ABCD四个线程结束之后再执行

控制线程顺序执行 我知道的

1. join 让主线程等待子线程运行结束后再继续运行

2. 利用并发包里的Excutors的newSingleThreadExecutor产生一个单线程的线程池,而这个线程池的底层原理就是一个先进先出(FIFO)的  队列。代码中executor.submit依次添加了123线程,按照FIFO的特性,执行顺序也就是123的执行结果,从而保证了执行顺序。

3. 使用 CountDownLatch 控制多个线程执行顺序 cutDown()方法和await()方法  参考:https://www.cnblogs.com/flyme/p/4568063.html

6:Java序列化,有ID和没ID会出现问题吗?

(转)java 序列化ID的作用
7:JVM内存模型,为什么survivor需要有2个。

survivor需要2个,主要是为了规避内存碎片化

8:GC算法,回收器
9:类加载机制

10. synchronized和lock的区别
11 手写生产者消费者

mysql
1:索引都有什么类型
2:聚集索引和非聚集索引,主键删掉之后还有聚集索引吗?
3:建了索引,什么时候会不命中索引
4:innodb与myisam存储引擎的区别
5:分库分表,主从复制的延迟
6:查询优化,

redis
淘汰机制
失效策略
持久化rdb、aof
pipeline
主从、集群

数据结构
1:链表,链表倒置、节点交换
2:Btree B+tree 红黑树

协议
tcp
http

喜马拉雅2018 Java面试题目

原文地址:https://www.cnblogs.com/lixuwu/p/10662412.html

时间: 2024-12-27 08:30:33

(转)喜马拉雅2018 Java面试题目的相关文章

【Java基础】Java面试题目整理与解说(二)

1.Collection 和 Collections 的差别. Collection 是集合类的上级接口,继承于他的接口主要有 Set 和 List. Collections 是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索.排序.线程安全化等操作. 2.HashMap 和 Hashtable 的差别. HashMap 是 Hashtable 的轻量级实现(非线程安全的实现),他们都完毕了 Map 接口,HashMap是非线程安全,效率上可能高于 Hashtable.在多个线程

【Java基础】Java面试题目整理与讲解(二)

1.Collection 和 Collections 的区别. Collection 是集合类的上级接口,继承于他的接口主要有 Set 和 List. Collections 是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索.排序.线程安全化等操作. 2.HashMap 和 Hashtable 的区别. HashMap 是 Hashtable 的轻量级实现(非线程安全的实现),他们都完成了 Map 接口,HashMap是非线程安全,效率上可能高于 Hashtable.在多个线程

Java面试题目整理

一.引言:本文主要整理遇到的面试题目,以及提供自己的见解,将会持续更新,如有问题,可评论交流,一起进步. 二.问题及我的见解: 1. n个结点可以组合成多少棵不同的二叉树? 答:2^n-n棵 2. 什么是bean? 答: bean本质上就是可复用的类,比如在spring中的bean就是表示组件的意思. 3. String.StringBuffer.StringBuilder的有什么区别? 答:String是内容和长度固定的类 StringBuffer是内容和长度可变的类,并且线程安全 Strin

一次Java面试题目记录

记忆得不太清楚了,不过一些基本问过的题目还是记得住的,就写一点吧. maven的使用情况问一点. snapshot和release版本的区别? maven的生命周期有了解过吗? 如何把自己写的架包推送到私服上?maven有一个deployed命令 maven有一个mirrors对吧,配置多个镜像的时候,多个镜像之间是怎么产生作用的?互相之间的作用是怎样的?调用顺序是. 如果有冲突会怎样?mirror本身是排除冲突的,我说的是你使用的哪一个插件的冲突,你配置的都是centre只会取一个. mirr

Java面试题目集合

有链接的都是引用别人的知识点. 1.equals方法用于比较对象的内容是否相等(覆盖以后) 2.hashcode方法只有在集合中用到 3.当覆盖了equals方法时,比较对象是否相等将通过覆盖后的equals方法进行比较(判断对象的内容是否相等). 4.将对象放入到集合中时,首先判断要放入对象的hashcode值与集合中的任意一个元素的hashcode值是否相等, 如果不相等直接将该对象放入集合中.如果hashcode值相等,然后再通过equals方法判断要放入对象与集合中的 任意一个对象是否相

【应聘】阿里巴巴Java面试题目

原文地址:http://blog.csdn.net/free0sky/article/details/7927275   一.String,StringBuffer, StringBuilder 的区别是什么?String为什么是不可变的? 答:   1.String是字符串常量,StringBuffer和StringBuilder都是字符串变量.后两者的字符内容可变,而前者创建后内容不可变. 2.String不可变是因为在JDK中String类被声明为一个final类. 3.StringBuf

java面试题目

1.项目中Spring AOP用在什么地方,为什么这么用,切点,织入,通知,用自己的话描述一下,AOP原理,动态代理2种实现. 主要是事务那方面,采用声明式的事务配置方式,是AOP给你封装好的. 通知: 定义:切面也需要完成工作.在 AOP 术语中,切面的工作被称为通知. 工作内容:通知定义了切面是什么以及何时使用.除了描述切面要完成的工作,通知还解决何时执行这个工作. Spring 切面可应用的 5 种通知类型: Before--在方法调用之前调用通知 After--在方法完成之后调用通知,无

java面试题目偏基础

一.JAVA基础篇-概念 1.简述你所知道的Linux: Linux起源于1991年,1995年流行起来的免费操作系统,目前, Linux是主流的服务器操作系统, 广泛应用于互联网.云计算.智能手机(Android)等领域.由于Java主要用于服务器端的开发,因此Java应用的部署环境有很多为Linux.Windows操作系统的目录结构,是以盘符为单位,C盘.D盘.E盘等等,数据存储在各个盘符之下,而Linux操作系统最顶层只有一个根目录root,所有文件都存储在这一个根目录之下.Linux不像

5个Java面试题目,你一定不怎么了解。

前些日子,阿里妹(妹子出题也这么难)发表了一篇文章<悬赏征集!5 道题征集代码界前 3% 的超级王者>——看到这个标题,我内心非常非常激动,因为终于可以证明自己技术很牛逼了. 但遗憾的是,凭借 8 年的 Java 开发经验,我发现这五道题自己全解错了!惨痛的教训再次证明,我是那被秒杀的 97% 的工程师之一. 不过,好歹我这人脸皮特别厚,虽然全都做错了,但还是敢于坦然地面对自己. 01.原始类型的 float 第一题是这样的,代码如下 public class FloatPrimitiveTe