没有合适的资源?快使用搜索试试~ 我知道了~
首页2017年阿里Java基础面试题文档 Java知识分享
资源详情
资源评论
资源推荐
.自我介绍
.讲一件你印象最深刻的事没事怎么解决的
. 垃圾回收机制怎么工作的
. 是怎么实现的
. 的区别是什么
. 讲一下你对 的认识,然后谈一下 的性能,主要谈一下哈希冲撞
.创造线程的几种方式, 和 接口有什么区别
.简单说一下你参加的中兴算法大赛
!.说一下你做的聊天工具,如果遇到服务突然卡顿,怎么解决
". 讲一下你对于 #$ 框架的了解
. %& 数据库,索引是怎么使用的。
. 你对分布式是否有所了解
. 你对数据结构了解么
. 你为什么想转行做软件呢
. '(#$)和 '(#$*+
. 浅析 与 ,-( 的线程安全性
. 堆排序,快速排序
. 数据库的四大特征,数据库的隔离级别,
!. 线程同步机制用的什么?当初为什么选择这个机制?
". 互斥和条件变量区别?互斥是阻塞的吗?当初为什么选择阻塞的机制?
.消息队列
.分布式
/ 中多态性的实现
什么是多态
. 面向对象的三大特性:封装、继承、多态。从一定角度来看,封装和继承几乎都是
为多态而准备的。这是我们最后一个概念,也是最重要的知识点。
. 多态的定义:指允许不同类的对象对同一消息做出响应。即同一消息可以根据发送
对象的不同而采用多种不同的行为方式。(发送消息就是函数调用)
. 实现多态的技术称为:动态绑定(%0#-)##$),是指在执行期间判断所
引用对象的实际类型,根据其实际的类型调用其相应的方法。
. 多态的作用:消除类型之间的耦合关系。
. 现实中,关于多态的例子不胜枚举。比方说按下 1)键这个动作,如果当前在
1)界面下弹出的就是 '))的帮助文档;如果当前在 2,)下弹出的就是
2,)帮助;在 2#,3)下弹出的就是 2#,3)帮助和支持。同一个事件发生
在不同的对象上会产生不同的结果。
下面是多态存在的三个必要条件,要求大家做梦时都能背出来!
多态存在的三个必要条件
一、要有继承;
二、要有重写;
三、父类引用指向子类对象。
/ 中多态的实现方式:接口实现,继承父类进行方法重写,同一个类中进行方法重载。
'(#$ 与 '(#$*+ 的区别
简单地说,就是一个变量和常量的关系。'(#$*+ 对象的内容可以修改;而 '(#$
对象一旦产生后就不可以被修改,重新赋值其实是两个对象。
'(#$*+ 的内部实现方式和 '(#$ 不同,'(#$*+ 在进行字符串处理时,不生
成新的对象,在内存使用上要优于 '(#$ 类。所以在实际使用时,如果经常需要对一个字
符串进行修改,例如插入、删除等操作,使用 '(#$*+ 要更加适合一些。
'(#$4在 '(#$ 类中没有用来改变已有字符串中的某个字符的方法,由于不能改变一个
Java
字符串中的某个单独字符,所以在 5 文档中称 '(#$ 类的对象是不可改变的。然
而,不可改变的字符串具有一个很大的优点4编译器可以把字符串设为共享的。
'(#$*+4'(#$*+ 类属于一种辅助类,可预先分配指定长度的内存块建立一个
字符串缓冲区。这样使用 '(#$*+ 类的 方法追加字符 比 '(#$ 使用 6)操
作符添加字符 到 一个已经存在的字符串后面有效率得多。因为使用 6)操作符每一次将字
符添加到一个字符串中去时,字符串对象都需要寻找一个新的内存空间来容纳更大的字符
串,这无凝是一个非常消耗时间的操作。添加多个字符也就意味着要一次又一次的对字符
串重新分配内存。使用 '(#$*+ 类就避免了这个问题。
'(#$*+ 是线程安全的,在多线程程序中也可以很方便的进行使用,但是程序的执行
效率相对来说就要稍微慢一些。
'(#$*+ 的常用方法
'(#$*+ 类中的方法要偏重于对字符串的变化例如追加、插入和删除等,这个也是
'(#$*+ 和 '(#$ 类的主要区别。
String 字符串常量
StringBuer 字符串变量(线程安全)
StringBuilder 字符串变量(非线程安全)
7简要的说, '(#$)类型和 '(#$*+)类型的主要性能区别其实在于 '(#$)是不可变的对象8)因此在
每次对 '(#$)类型进行改变的时候其实都等同于生成了一个新的 '(#$)对象,然后将指针指向新的
'(#$)对象,所以经常改变内容的字符串最好不要用 '(#$),因为每次生成对象都会对系统性能产生影
响,特别当内存中无引用对象多了以后, )的 9)就会开始工作,那速度是一定会相当慢的。
7而如果是使用 '(#$*+)类则结果就不一样了,每次结果都会对 '(#$*+)对象本身进行操作,
而不是生成新的对象,再改变对象引用。所以在一般情况下我们推荐使用 '(#$*+),特别是字符串
对象经常改变的情况下。而在某些特别情况下, '(#$)对象的字符串拼接其实是被 )解释成了
'(#$*+)对象的拼接,所以这些时候 '(#$)对象的速度并不会比 '(#$*+)对象慢,而特别是
以下的字符串对象生成中, '(#$)效率是远要比 '(#$*+)快的:
7'(#$)'):);#)#),%)<)6);)#0<)6);)((<=
7'(#$*+)'):)3)'(#$*#>;#)#),%)<?.>;)#0<?.>;)((<?=
7你会很惊讶的发现,生成 '(#$)')对象的速度简直太快了,而这个时候 '(#$*+)居然速度上根本
一点都不占优势。其实这是 )的一个把戏,在 )眼里,这个
7'(#$)'):);#)#),%)<)6);)#0<)6);((<=)其实就是:
7'(#$)'):);#)#),%))#0)((<=)所以当然不需要太多的时间了。但大家这里要注意的是,
如果你的字符串是来自另外的 '(#$)对象的话,速度就没那么快了,譬如:
'(#$)'):);#)#),%)<=
'(#$)'):);)#0<=
'(#$)'):);)((<=
'(#$)'):)')6')6)'=
这时候 )会规规矩矩的按照原来的方式去做
在大部分情况下 '(#$*+)@)'(#$
StringBuer
/.$.'(#$*+ 线程安全的可变字符序列。一个类似于 '(#$)的字符串缓冲区,但不能修改。
虽然在任意时间点上它都包含某种特定的字符序列,但通过某些方法调用可以改变该序列的长度和内容。
可将字符串缓冲区安全地用于多个线程。可以在必要时对这些方法进行同步,因此任意特定实例上的所有
操作就好像是以串行顺序发生的,该顺序与所涉及的每个线程进行的方法调用顺序一致。
'(#$*+)上的主要操作是 )和 #()方法,可重载这些方法,以接受任意类型的数据。每
个方法都能有效地将给定的数据转换成字符串,然后将该字符串的字符追加或插入到字符串缓冲区中。
)方法始终将这些字符添加到缓冲区的末端;而 #()方法则在指定的点添加字符。
例如,如果 A)引用一个当前内容是“((<的字符串缓冲区对象,则此方法调用 A.>BB?)会使字
符串缓冲区包含“((<,而 A.#(>8)BB?)将更改字符串缓冲区,使之包含“((<。
在大部分情况下 '(#$*#)@)'(#$*+
java.lang.StringBuilde
C/.$.'(#$*# 一个可变的字符序列是 ." 新增的。此类提供一个与 '(#$*+)兼容的
D,但不保证同步。该类被设计用作 '(#$*+)的一个简易替换,用在字符串缓冲区被单个线程使
用的时候(这种情况很普遍)。如果可能,建议优先采用该类,因为在大多数实现中,它比
'(#$*+)要快。两者的方法基本相同。
在数据结构中有一种称为哈希表的数据结构,它实际上是数组的推广。如果有一个数组,要最有效的查找
某个元素的位置,如果存储空间足够大,那么可以对每个元素和内存中的某个地址对应起来,然后把每个
元素的地址用一个数组(这个数组也称为哈希表)存储起来,然后通过数组下标就可以直接找到某个元素
了。这种方法术语叫做直接寻址法。这种方法的关键是要把每个元素和某个地址对应起来,所以如果当一
组数据的取值范围很大的时候,而地址的空间又有限,那么必然会有多个映射到同一个地址,术语上称为
哈希冲突,这时映射到同一个地址的元素称为同义词。毕竟,存储空间有限,所以冲突是不可避免的,但
是可以尽量做到减少冲突。目前有两种比较有效的方法来解决哈希冲突:
))))链地址法
))))开放地址法
这里简要说明一下开放地址法,顾名思义,就是哈希表中的每个位置要么存储了一个元素要么为 EFF。
当数据比较多的时候,查找一个元素挺费事的,但是可以使用探测的方法进行查找。这个话题与本主题关
系不大,感兴趣的小伙伴可以自行研究。
从 这 段 注 释 中 可 以 发 现 每 次 执 行 ,-( 的 ( 方 法 都 是调 用 .(>? 方 法 的 ,而
'$0( 对象 是 一 个 继 承 了 ((F,-G 锁对象 的 子 类 , 那么 剩 下 的 就 很清 晰 了 , 每 一 个
'$0( 都有一个锁,只有执行完上面 (% 语句块中的代码才会释放锁,从而保证了多线程并发访问的
安全性。
什么是线程同步?
当使用多个线程来访问同一个数据时,非常容易出现线程安全问题>比如多个线程都在操作同一数据导致
数据不一致?8所以我们用同步机制来解决这些问题。
剩余14页未读,继续阅读
小疯子_的博客
- 粉丝: 233
- 资源: 13
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- 27页智慧街道信息化建设综合解决方案.pptx
- 计算机二级Ms-Office选择题汇总.doc
- 单链表的插入和删除实验报告 (2).docx
- 单链表的插入和删除实验报告.pdf
- 物联网智能终端项目设备管理方案.pdf
- 如何打造品牌的模式.doc
- 样式控制与页面布局.pdf
- 武汉理工Java实验报告(二).docx
- 2021线上新品消费趋势报告.pdf
- 第3章 Matlab中的矩阵及其运算.docx
- 基于Web的人力资源管理系统的必要性和可行性.doc
- 基于一阶倒立摆的matlab仿真实验.doc
- 速运公司物流管理模式研究教材
- 大数据与管理.pptx
- 单片机课程设计之步进电机.doc
- 大数据与数据挖掘.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论25