java面试题知识点总结_第1页
java面试题知识点总结_第2页
java面试题知识点总结_第3页
java面试题知识点总结_第4页
java面试题知识点总结_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1 为何要使用同步 java 允许多线程并发控制 当多个线程同时操作一个可共享的资源变量时 如数据的增 删改查 将会导致数据不准确 相互之间产生冲突 因此加入同步锁以避免在该线程没有 完成操作之前 被其他线程的调用 从而保证了该变量的唯一性和准确性 1 同步方法 即有 synchronized 关键字修饰的方法 由于 java 的每个对象都有一 个内置锁 当用此关键字修饰方法时 内置锁会保护整个方法 在调用该方法前 需要获 得内置锁 否则就处于阻塞状态 代码如 public synchronized void save 注 synchronized 关键字也可以修饰静态方法 此时如果调用该静态方法 将会锁住整 个类 2 同步代码块 即有 synchronized 关键字修饰的语句块 被该关键字修饰的语句 块会自动被加上内置锁 从而实现同步 代码如 synchronized object 注 同步是一种高开销的操作 因此应该尽量减少同步的内容 通常没有必要同步整个方 法 使用 synchronized 代码块同步关键代码即可 2 说好拿到 offer 就来牛客发面经 实现承诺 一面 1 说说 C 语言中 free 和 malloc 区别 不知道 我不是学 C 的 2 你知道基数排序么 忘了 知道计数 这时候心想玩了 连续 2 个问题都不会 还玩个 P 3 说说什么是内存溢出和内存泄露 内存溢出 介绍 JVM 中 7 个区域 然后把每个区域可能造成内存的溢出的情况说明 内存泄露 介绍 GC 和 GC Root 不正常引用 4 看来你对 JVM 蛮熟悉的啊 那你说说 JAVA 怎么分配直接内存 A JAVA 不能直接分配内存吧 Q 我说是分配直接内存不是直接分配内存 A 是 NIO 类的直接内存么 Q 是的 A 有点不记得了 能提示下么 Q sun 的一个包 A 我想起来了 sun misc Unsafe 类 那个要通过反射获取吧 平常没怎么用过 Q 不用反射 A 我咋记得要 Q 不用的 你再回去看看看 面试官记错 后面他自己纠正错误了 A 好吧 5 介绍下 NIO 6 能介绍下 mybatis 的原理么 从 configuration 类说起 然后 MapperStatement 然后 SqlNode 解析 然后连接池 然后 resultMap 映射 balala 说了 10 分钟 7 网络方面熟悉么 A 熟悉 Q 那说说 TCP IP 三次握手 8 说说 http tcp udp 之间关系和区别 9 说说浏览器访问 经历了怎样的过程 二面 1 讲讲 spring IOC 原理以及生命周期 2 讲讲 mybatis 的连接池 3 讲讲 IO 里面的常见类 字节流字符流 4 讲讲 NIO 5 讲讲 tomcat 和你做的 httpServer 6 你是通过哪些途径学习这些技术 7 你是否有想过把 mybatis 实现成分布式吗 8 java 的基础类型和字节大小 3 很不幸 二面面完就结束了今天的面试 预约的时间是下午 4 点 30 分到 5 点 15 分的时间段 天气比较闷热 算好时间 下午 2 点 半从学校出发 3 点 50 到达面试酒店 本想买瓶水 想想阿里这么大个公司 面试应该会 给我们发瓶水的吧 于是我就没买 事实证明我想多了 没有 签完到去一个厅里面等候 左看看右看看 真没有水 人挺少的 没过几分钟 3 点 55 分 叫到我的号去某某位置上 面试 说好的 4 点半呢 人和人之间这么点信任都没有了吗 于是我气还没喘匀就去到面 试的大厅了 到了一个面试官跟前 坐下来 把我的简历给了他 他边看边让我自我介 绍 一面 一面 整整 70 分钟 说好的 45 分钟呢 人和人之间这点信任都没有了吗 1 问 你把 java 内存模型的架构给我画一下吧 我 迟疑了一下 心想 JMM 这玩意儿有架构图吗 这可怎么画 面试官看我迟疑 说 那你不画 先说一说吧 我就跟他说了由于什么指令重排序 处理器缓存什么的 不同的 系统或者平台有不同的内存模型 使得相同的 java 程序在不同的处理器架构下的表现不一 致啊 java 内存模型就是为了在不同的处理器架构和平台下给 java 程序员提供一致性内存 访问的保证的 本以为后面要问到 volatile 的内存语义 内存屏障 happens before 之类 的 没想到面试官来了一句 你完全说错了 你说的这个是 java 的跨平台特性 不是内存 模型 然后说内存模型是什么什么堆 栈之类的 于是我就懵了 我就想到了原来面试官 理解的内存模型就是我理解的 java 运行时数据区域 程序计数器 虚拟机栈 本地方法栈 java 堆 方法区 我也不敢跟面试官多争论 简单地表达了一下我的观点 然后他就接 着问我 那你说说 java 是如何实现跨平台的 2 问 说一下 HashMap 是如何实现的吧 我 就先画了一下结构 再说了一些什么拉链法解决冲突 什么 JDK8 里面冲突达到一定 数量的时候就改用了红黑树的存储等等 然后问我怎么扩容 3 问 说一下 ConcurrentHashMap 吧 我 JDK7 里面采用的是分段锁机制什么的 读的时候不加锁 写的时候分段加锁 先定 位到某个段 然后段里面的操作委托给 HashMap 等等 然后又说 JDK8 里面 ConcurrentHashMap 有很大变化 从 1600 多行代码扩充到了 6000 多行代码 还好没 接着问我 JDK8 里面是怎么实现的 就昨天晚上瞄了一眼 6000 多行代码确实没看下来 4 问 用他的电脑给我看了一段程序 问我输出结果是什么 跟 finally 块相关的 考察 点就是 try 块里面 return 了某个值 finally 里面又对该值进行操作了 问最后的结果是什么 我知道 return 之前会先执行 finally 块里面的操作 但是操作的是引用类型还是值类型的情 况是不一样的 本想把那个代码回忆起来 想想还是算了 应该有人能知道我说的是什么 意思 我在回答这道题的时候面试官还 贱贱地 说这道题是有坑的 然后看我踩坑了还很 鄙视的说一句 看那么多书连引用类型和值类型都搞不清楚 5 synchronized 相关的 为什么同步块太大会影响性能 不同的线程拥有不同的对象锁 它们之间会有影响吗 如果 synchronized 加在静态方法上面那么锁指的是什么 在这个 地方又跟面试官就几个名词纠缠了一会儿 我说锁是 Class 对象 他问是实例还是对象 他说实例是静态的 对象是动态的 我说 Class 是静态的 对象是动态的 然后他说我们 不说类了 用英文 instance 和对象 我说 instance 我理解的就是对象啊 可能他觉得 instance 是指类 对象就是 new 出来的对象 也许是我没看过英文版的书吧 于是我接着 说 指的是对象 是 java 虚拟机将一个类的字节码加载进内存之后生成的一个 java lang Class 对象 然后他可能没听明白我说的 还是在问 到底是类还是对象 我其 实已经明白他的意思了 然后说 按照您的描述 那就是类 然后他好像满意了 就下一 题了 那明明就是一个 Class 对象嘛 Class 对象不也是对象 6 问 基本排序和查找相关的 问我有哪些排序和哪些查找算法 期待让我写个快排 什么的 早就憋在心里了 分分钟搞定的事 然而并没有 他让我描述一下选择排序的过 程 就扯了扯 然后他问 你确定这是选择排序吗 我说 我很确定 强调了 很 字 说的很坚决 他也没说什么 希望别又在理解上面跟我有偏差 我说的那个绝对是纯正的 选择排序 如假包换 7 写代码 给我 5 分钟 让我实现一个 Stack 底层数据结构用数组 我问他需要支持扩 容吗 他说先不用 写完他拿过去一看 可能是我写的太丑了 他又还给我 让我解释一 下代码 然后就解释了一下 8 问我用栈怎么实现队列 我说用 2 个栈来实现 他问我具体怎么操作 我说我可以想 一下吗 他说可以 然后我想了一下 画个图给演示了一下 9 问我有没有登过网页版微信 问我用手机扫二维码登录是怎么实现的 不会 10 问我知道阻塞队列吗 让我自己实现阻塞队列我会怎么做 我说我会用两种方法来实 现 一种是用 wait 和 notify 的方式 一种是用 Condition 条件变量的方式 然后他问怎么 用 wait 和 notify 实现 我就把思路说了一下 最后他还问我是什么时候接触编程的 我说大一 我不知道他最后问了我一个这个问题是 什么意思 就想起来这么些了 整整 70 分钟 我已经说的口干舌燥了 面试完 他说 今天的面试 结束了 我顿时就懵了 按照我了解的 这就代表没通过的意思 但是我觉得我答的很好 百分之九十都答出来了 而且很多都说的很详细 我一脸疑惑 还是很客气的说谢谢 准 备走呢 马上又听到他说 你先到外面等一下 然后我又说好的 谢谢 然后他接着说 准备下一轮吧 我说好的 谢谢 然后就出来了 出来之后到了等候的大厅 整个人都虚脱了 又左看看 右看看 还是没有水 没过几分 钟 元气还没恢复 让我去二面 二面 二面 45 分钟 拖着疲惫的身子 走到二面面试官前 一见其人 明显能感受到这就是大 神 那拖鞋 那发型 那胡子 此时我已经身心俱疲 硬着头皮坐下来 先自我介绍 问 了几个问题 然后说那我们写一个简单的题目吧 他把电脑转过来 让我看其中某个题目 说你做一下这道题吧 用用 java 统计一个文本文件中出现的频率最高的统计一个文本文件中出现的频率最高的 20 个单词 个单词 多经典的题目啊 我问能用 shell 命令来实现吗 他说用 java 于是我用了 HashMap 都弄到 map 里面去了之后 我 发现我不会排序 集合类里面的排序方法确实没怎么用过 于是我就卡在这里了 然后我 跟他说我数据结构选错了 我应该选能排序的 map 比如说 TreeMap 他说那你接着写 我又不想写了 因为我只是知道 TreeMap 是怎么一回事 并没有去用过这个 TreeMap 而 且排序的话它应该是按照 key 来排序的 我这里的 key 是单词 并没有什么用 我也不知 道该怎么按照后面的 value 来排序 我也想到可以调用 map 的 entrySet 方法得到一个集 合 然后我可以对这个集合进行操作 总之我想了很多 但是对一些操作不太熟就没有继 续下去了 我觉得这道题目应该很简单啊 没想到我竟然没写出来 其实方法还是有的 map 都拿到了 排个序岂能难倒我 大不了再倒腾一下 我冒泡也能给它解决了 但是我 实在是不想用这么 low 的方式 然后我就放弃了 没接着写 然后面试官说 好的 那我 们再来写一个简单的题目吧 题目大概意思就是用面向对象的思想实现题目说的那个场景 具体题目就不说了 我并没有太明白题目的意思 感觉可以用一个 HashMap 的数据结构 来实现 然后我就自己照着 HashMap 的代码写了写 写了点我又停下了 因为我并没有 太理解题目的意思 所以我也不知道该怎么写 于是我又放弃了 真要我实现一个 HashMap 我也是可以写出来的 毕竟源码我看过很多遍了 一是想到有点麻烦 二是想到 我可能没正确理解题目的意思 然后我就放弃了 放弃了 弃了 了 两道题目下来 我 心理已经被击溃了 然后他问我有没有研究 java 方面的新技术 问我想从事哪一方面的开 发 问我阿里云 淘宝等等这些有没有对哪个比较有意向 这个时候的我意识已经开始模 糊了 话也说不清楚了 舌头也捋不顺了 这几个开放性的问题答的我都恨不得抽死自己 总之 一面给自己打 90 分 二面给自己打 20 分 经验就不说了 没什么好的经验 教训就说一下吧 面试之前带好水 之前牛客上有篇面经提到过要带水的 我没有听那位 兄弟的话 也可能是有水我没看到吧 对于面经里面的题目没必要太看重 每个人遇到的问题肯定是很大不同的 除了一些太常 见的题目 比如 HashMap ConcurrenthashMap 之类的 就像很多面经里面提到的数据 库 网络方面的问题 我这次面试就提都没提这方面的东西 对于面经我们可以从中看看 哪些大的方面在面试的过程当中会问的比较多 然后可以在这些方面加强学习 大方面比 如说 JVM java 多线程 TCP 数据库等等 面经就好比是给我们划了重点 我们需要把 相关的知识都好好看一下 感谢那些提供面经的同学 指明了我应该学习的方向 所以在 这里也算是反馈一下牛客网 几个月来确实让我学到了很多 希望校招之后能有机会来分 享一下成功的面试经历 虽然失败了 但我觉得该 自己的能力还是有所欠缺的 不管怎么样 这次面试虽然停止 了 但是奋斗是不会停止的 又想起来一些问题 补充一下 1 ArrayList 和 LinkedList 相关的 问分别在什么情况下使用 以及查找一个元素的话这 两个的时间复杂度分别是多少 如果是调用 contains Object o 方法的话复杂度都是 O n 如果是根据下标进行查找的话 ArrayList 的时间复杂度是 O 1 LinkedList 是 O n 2 java 线程有哪些状态 这些状态之间是如何转化的 3 linux 命令相关的 将当前目录下所有以 txt 结尾的文件打印出来 再追问 除了 txt 再加上 abc 结尾的也打印出来 4 有两个线程 A 和 B 如果一个线程要等另一个线程执行完 该怎么做 我说在 ThreadA 中调用 ThreadB join 方法 二面面试官问我入参呢 我说我见过的 join 方法没 有要传入参的啊 可能面试官记错了 他也没说什么 被这么一搞我又虚了 面试官怎么

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论