作为字节跳动面试官,linux 菜鸟教程 pdf 下载,深度集成!
蚂蚁金服一面:
下午杭州的电话,问有没有空,果断有空,虽然感觉略显紧张,有点懵逼。
面试的题目:
HashMap 和 Hashtable 的区别
实现一个保证迭代顺序的 HashMap
说一说排序算法,稳定性,复杂度
说一说 GC
可以保证的实习时长
职业规划
整体来说,一面的基础性问题比较多,所以博主基本都答出来了,准备过还是有些用处的。所以一面完了感觉还不错,接着第二天下午就二面了。
蚂蚁金服二面
二面是我最慌的面试,因为二面是最关键的,是最大的主管面试,所以非常关键,整体来说,二面的节奏非常快,和一面完全不同,面试官很希望我言简意赅的说完答案,所以面的不算很好,当时完了又以为 GG 了,好在最后还是幸运的过了,面试问题如下:
自我介绍。
JVM 如何加载一个类的过程,双亲委派模型中有哪些方法?
HashMap 如何实现的?
HashMap 和 Concurrent HashMap 区别, Concurrent HashMap 线程安全吗, Concurrent HashMap 如何保证 线程安全?
HashMap 和 HashTable 区别,HashTable 线程安全吗?
进程间通信有哪几种方式?
JVM 分为哪些区,每一个区干吗的?
JVM 如何 GC,新生代,老年代,持久代,都存储哪些东西?
GC 用的引用可达性分析算法中,哪些对象可作为 GC Roots 对象?
快速排序,过程,复杂度?
什么是二叉平衡树,如何插入节点,删除节点,说出关键步骤。
TCP 如何保证可靠传输?三次握手过程?
TCP 和 UDP 区别?
滑动窗口算法?
Linux 下如何进行进程调度的?
Linux 下你常用的命令有哪些?
操作系统什么情况下会死锁?
常用的 hash 算法有哪些?
什么是一致性哈希?
如何理解分布式锁?
数据库中的范式有哪些?
数据库中的索引的结构?什么情况下适合建索引?
Java 中的 NIO,BIO,AIO 分别是什么?
用什么工具调试程序?JConsole,用过吗?
现在 JVM 中有一个线程挂起了,如何用工具查出原因?
线程同步与阻塞的关系?同步一定阻塞吗?阻塞一定同步吗?
同步和异步有什么区别?
线程池用过吗?
如何创建单例模式?说了双重检查,他说不是线程安全的。如何高效的创建一个线程安全的单例?
concurrent 包下面,都用过什么?
常用的数据库有哪些?redis 用过吗?
了解 hadoop 吗?说说 hadoop 的组件有哪些?hdfs,hive,hbase,zookeeper。说下 mapreduce 编程模型。
你知道的开源协议有哪些?
你知道的开源软件有哪些?
你最近在看的书有哪些?
你有什么问题要问我吗?
了解哪些设计模式?说说都用过哪些设计模式
如何判断一个单链表是否有环?
操作系统如何进行分页调度?
匿名内部类是什么?如何访问在其外面定义的变量?
二面面试官问的很急,我答的也快,所以有两个问题答的不好,但是面试官让我觉得有一种肃然起敬的感觉,因为他说话比较快,但是都能说到点子上,最关键的说的话非常让人容易接受。
二面过了,当天晚上我就接到了三面的电话(阿里的效率真的让我瞠目结舌)
蚂蚁金服三面
三面已经是交叉面试了,基本都围绕我的项目展开,我经过前面几次的面试之后,这个时候已经拥有了很高的面试经验值了,所以三面的时候我一点不慌了,回答问题非常稳重,三面的问题如下:
自我介绍,做过什么项目。
java 虚拟机的区域如何划分,每一个区的动能,这一块自由发挥。
双亲委派模型中,从顶层到底层,都是哪些类加载器,分别加载哪些类?
有没有可能父类加载器和子类加载器,加载同一个类?如果加载同一个类,该使用哪一个类?
HashMap 的结构,get(),put()是如何实现的?HashMap 有哪些问题?
ConcurrentHashMap 的 get(),put(),又是如何实现的?ConcurrentHashMap 有哪些问题? ConcurrentHashMap 的锁是读锁还是写锁?
HashMap 与 HashTable 的区别
sleep()和 wait()分别是哪个类的方法,有什么区别?synchronized 底层如何实现的?用在代码块和方法上有什么区别?
什么是线程池?如果让你设计一个动态大小的线程池,如何设计,应该有哪些方法?
什么是死锁?JVM 线程死锁,你该如何判断是因为什么?如果用 VisualVM,dump 线程信息出来,会有哪些信息?这一块问的很多....问的我懵了. 因为并没有实际操作过 = =
查看 jvm 虚拟机里面堆、线程的信息,你用过什么命令?我只用过图形界面 VisualVM。。。
垃圾回收算法有哪些?CMS 知道吗?如何工作的?
数据库中什么是事务?事务的隔离级别?事务的四个特性?什么是脏读,幻读,不可重复读?
数据库索引的结构有哪些?我说 B 树和 B+树,他说只有这两个吗。我又说全文倒排索引。然后介绍 B+树的结构。
数据库中的分页查询语句怎么写?
什么是一致性哈希?用来解决什么问题?
Redis 的存储结构,或者说如何工作的,与 mysql 的区别?有哪些数据类型?
项目中用到 redis,为什么选用 redis,了解其他 NoSQL 数据库吗?在你的项目中是如何运用 redis 的?key 是什么,value 是什么?
归并排序的过程?时间复杂度?空间复杂度?
你平常用什么排序?快速排序。说说在那些场景下适用,哪些场景下不适用。
你在项目中做什么?因为我用到 Solr,他就问我 Solr 是如何工作的?
最后
关于面试刷题也是有方法可言的,建议最好是按照专题来进行,然后由基础到高级,由浅入深来,效果会更好。当然,这些内容我也全部整理在一份 pdf 文档内,分成了以下几大专题:
Java 基础部分
算法与编程
数据库部分
流行的框架与新技术(Spring+SpringCloud+SpringCloudAlibaba)
这份面试文档当然不止这些内容,实际上像 JVM、设计模式、ZK、MQ、数据结构等其他部分的面试内容均有涉及,因为文章篇幅,就不全部在这里阐述了。
作为一名程序员,阶段性的学习是必不可少的,而且需要保持一定的持续性,这次在这个阶段内,我对一些重点的知识点进行了系统的复习,一方面巩固了自己的基础,另一方面也提升了自己的知识广度和深度。
评论