20171116Java面试题

1.== 和 equals的区别?
== 比较的是两个变量的值是否相等,也就是用于比较变量所对应的内存中
所存储的数值是否相等. 要比较两个基本类型的数据或两个引用变量是否
相等,只能用==操作符。
equals方法是用于比较两个独立对象的内容是否相同,就好比去比较两个
人的长相是否相同,它比较的两个对象是独立的。
2.Array和ArrayList之间的区别?
1. Array类型的变量在声明的同时必须进行实例化(至少得初始化数组的
大小),而ArrayList可以只是先声明。
2. Array只能存储同构的对象,而ArrayList可以存储异构的对象。
同构的对象是指类型相同的对象.而ArrayList可以存放任何不同类型的数据
3 在CLR托管对中的存放方式:Array是始终是连续存放的,而ArrayList的
存放不一定连续。
4 初始化大小
Array对象的初始化必须只定指定大小,且创建后的数组大小是固定的,
而ArrayList的大小可以动态指定,其大小可以在初始化时指定,也可以不指
定,也就是说该对象的空间可以任意增加。

Array和ArrayList的相似点
1 都具有索引(index),即可以通过index来直接获取和修改任意项。
2 他们所创建的对象都放在托管堆中。
3 都能够对自身进行枚举(因为都实现了IEnumerable接口)。
ArrayList的一些特性
3. Redis 常见的性能问题和解决方法
性能问题:
1.Master写内存快照,save命令调度rdbSave函数,会阻塞主线程的工作,
当快照比较大时对性能影响是非常大的,会间断性暂停服务,所以Master最
好不要写内存快照。
2.Master AOF持久化,如果不重写AOF文件,这个持久化方式对性能的影响
是最小的,但是AOF文件会不断增大,AOF文件过大会影响Master重启的恢复
速度
3.Master调用BGREWRITEAOF重写AOF文件,AOF在重写的时候会占大量的C
PU和内存资源,导致服务load过高,出现短暂服务暂停现象。
4.Redis主从复制的性能问题,Redis的主从复制是建立在内存快照的持久化
基础上,只要有Slave就一定会有内存快照发生。虽然Redis宣称主从复制无
阻塞,但由于磁盘io的限制,如果Master快照文件比较大,那么dump会耗费
比较长的时间,这个过程中Master可能无法响应请求,也就是说服务会中断,
对于关键服务,这个后果也是很可怕的。
5.单点故障问题,由于目前Redis的主从复制还不够成熟,所以存在明显的单
点故障问题,这个目前只能自己做方案解决,如:主动复制

解决方法:
1.Master最好不要做任何持久化工作,包括内存快照和AOF日志文件,特别是
不要启用内存快照做持久化。
2.如果数据比较关键,某个Slave开启AOF备份数据,策略为每秒同步一次。
3.为了主从复制的速度和连接的稳定性,Slave和Master最好在同一个局域网
内。
4.尽量避免在压力较大的主库上增加从库
5.为了Master的稳定性,主从复制不要用图状结构,用单向链表结构更稳定,
即主从关系为:Master<--Slave1<--Slave2<--Slave3.......,这样的
结构也方便解决单点故障问题,实现Slave
4.GC是什么,为什么会有GC?显示调用GC会立即进行垃圾回收吗?为什么?
- GC: GC是垃圾收集的意思.特指java中jvm的垃圾回收机制.
- GC存在的原因:及时的清理内存,让程序执行更流畅,避免内存泄漏和浪费资源.
java的垃圾回收不需要程序员手动去处理,而是jvm自动的进行.让程序员更注重
业务开发.
- 但是gc本身是一个单独的线程,而且是一个优先级很低的线程.不可预知的情况
下对内存堆中已经死亡的或者长时间没有使用的对象进行清除和回收,程序员不能
实时的调用垃圾回收器对某个对象或所有对象进行垃圾回收。
- 垃圾回收主要是对jvm的堆进行操作.
- 显示调用GC不会立即进行垃圾回收,因为他是一个优先级比较低的线程,所以当
时如果有其他线程在运行就不会立即执行垃圾回收.

5.Java 中会存在内存泄漏吗,请简单描述。
理论上Java因为有垃圾回收机制(GC)不会存在内存泄露问题(这也是Java被广泛使用于服务
器端编程的一个重要原因);然而在实际开发中,可能会存在无用但可达的对象,这些对象不能
被GC回收也会发生内存泄露。一个例子就是Hibernate的Session(一级缓存)中的对象属于持
久态,垃圾回收器是不会回收这些对象的,然而这些对象中可能存在无用的垃圾对象。
6.MQ(消息队列)是什么,应用场景有哪些?
MQ是系统之间进行通信。使用Activemq的话可以对系统之间的调用进行解耦,实现系统间的异
步通信。原理就是生产者生产消息,把消息发送给activemq。Activemq接收到消息,然后查
看有多少个消费者,然后把消息转发给消费者,此过程中生产者无需参与。消费者接收到消息后
做相应的处理和生产者没有任何关系。

应用场景:在项目中主要是完成系统之间通信,并且将系统之间的调用进行解耦。例如在添加、
修改商品信息后,需要将商品信息同步到索引库、同步缓存中的数据以及生成静态页面一系列
操作。在此场景下就可以使用activemq。一旦后台对商品信息进行修改后,就向activemq发
送一条消息,然后通过activemq将消息发送给消息的消费端,消费端接收到消息可以进行相
应的业务处理

Activemq有两种通信方式,点到点形式和发布订阅模式。如果是点到点模式的话,如果消息发
送不成功此消息默认会保存到activemq服务端知道有消费者将其消费,所以此时消息是不会丢
失的

如果是发布订阅模式的通信方式,默认情况下只通知一次,如果接收不到此消息就没有了。这种场
景只适用于对消息送达率要求不高的情况。如果要求消息必须送达不可以丢失的话,需要配置持
久订阅。每个订阅端定义一个id,在订阅是向activemq注册。发布消息和接收消息时需要配置
发送模式为持久化。此时如果客户端接收不到消息,消息会持久化到服务端,直到客户端正常接
收后为止
7.抽象类和接口的区别?
含有abstract修饰符的class即为抽象类
1.抽象类可以有构造方法,接口中不能有构造方法。
2.抽象类中可以有普通成员变量,接口中没有普通成员变量
3.抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不能有非抽
象的普通方法 。
4. 抽象类中的抽象方法的访问类型可以是public,protected和default,但接口中的
抽象方法只能是 public类型的,并且默认即为public abstract类型。
5. 抽象类中可以包含静态方法,接口中不能包含静态方法
6. 抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,
但接口 中定义的变量只能是public static final类型,并且默认即为public static 
final类型。
7. 一个类可以实现多个接口,但只能继承一个抽象类。
8.递归与迭代的区别?
递归的基本概念:程序调用自身的编程技巧称为递归,是函数自己调用自己.
使用递归要注意的有两点:
1)递归就是在过程或函数里面调用自身;
2)在使用递归时,必须有一个明确的递归结束条件,称为递归出口.
 
递归分为两个阶段:
1)递推:把复杂的问题的求解推到比原问题简单一些的问题的求解;
2)回归:当获得最简单的情况后,逐步返回,依次得到复杂的解.
迭代:利用变量的原值推算出变量的一个新值.如果递归是自己调用自己的话,迭代就是A不
停的调用B.
递归中一定有迭代,但是迭代中不一定有递归,大部分可以相互转换.能用迭代的不用递归,
递归调用函数,浪费空间,并且递归太深容易造成堆栈的溢出.
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 201,924评论 5 474
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,781评论 2 378
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 148,813评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,264评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,273评论 5 363
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,383评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,800评论 3 393
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,482评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,673评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,497评论 2 318
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,545评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,240评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,802评论 3 304
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,866评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,101评论 1 258
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,673评论 2 348
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,245评论 2 341

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,549评论 18 399
  • 基本概念 操作系统中 heap 和 stack 的区别 什么是基于注解的切面实现 什么是 对象/关系 映射集成模块...
    Java红茶阅读 2,202评论 3 79
  • 刘郎才气几度闻 欢喜冤家俏佳人 生逢治世才华展 日光悠悠赤子心 快马加鞭行不止 乐游宇内善属文 龙飞凤舞夺天地 腾...
    梦花生阅读 170评论 3 7
  • 大理夏令营结束了,回到广州,睡了两天才缓过来。不得不承认这不是简单的体验,而是真正意义上的一次磨砺身心的自然营地活...
    李玉芳阅读 452评论 0 0
  • 什么是声子 固体材料的热传导主要是由晶格振动的格波(声子)来实现,高温时还可能有光子热传导,而金属材料中由于有大量...
    sanre123阅读 9,595评论 0 1