Skip to content

Files

Latest commit

Nov 14, 2017
3495430 · Nov 14, 2017

History

History
492 lines (248 loc) · 15.3 KB

面试题集.md

File metadata and controls

492 lines (248 loc) · 15.3 KB

网易面试题集

java虚拟机方面

  • Java虚拟机运行时数据区域

  • 垃圾回收

    内存布局中的新生代、Survivor区域以及老年代的划分,对象动态年龄判断、分配空间担保。引用计数法,虚拟机中一般都不会用这个垃圾回收算法了,可达性分析。GC Roots的判定,哪些对象可以作为GC Roots、G1垃圾收集器的回收过程.在这里要强烈安利一本关于垃圾回收算法的书,是一个日本作家写的,<垃圾回收的算法与实现>.

  • Full GC和Minor GC区别,及各自的触发条

  • 说说CMS垃圾回收器,及其适用场景

  • JVM的内存模型

  • VM的调优工具(Jconsole、VisualVM等,还有JDK自带的一些)

  • 怎么从新生代到老年代

  • 一个对象在什么情况下就是个老年代

  • java堆模型 垃圾回收

  • OOM 和 Stackoverflow

  • 虚拟机加载类的过程

  • Java虚拟机参数调优用过哪些

  • java运行时内存

  • 类加载器与类加载过程

  • 双亲委托机制

  • 自己定义的String类怎么加载

  • jvm中适合高吞吐量的垃圾回收器

  • cms垃圾回收器的特点

  • 有几种垃圾回收算法

  • 类加载机制是什么,为什么实现双亲委派模型?

  • 缓存怎么保证和内存的数据一致性?

  • jvm垃圾回收的范围,内存模型,垃圾回收机制,怎么判断对象死亡?计数法和可达性分析法的区别?

  • Long和long怎么比较?从jvm层面分析?为什么是Long拆箱而不是long装箱?(装箱比较的是对象地址,拆箱比较的是值,所以必须拆箱而不是装箱)

  • Spring源码方面

  • spring源码阅读(IOC、AOP)

    AOP中要生成代理对象,而由于控制反转的存在,代理对象的生成以及其生命周期的管理工作肯定是需要IoC容器来完成的

  • BeanFactory和FactoryBean有什么区别?

  • AOP中动态代理的实现机制

  • SpringMVC HTTP请求的响应过程

  • SpringMVC bean的加载过程,以及Spring扩展(beanpostprocess等)

  • 介绍一下Spring Boot?

  • Spring Bean的生命周期?

  • Spring MVC的工作流程?

  • Spring项目中如果注解和xml混用,是先加载使用注解的bean还是先加载xml中配置的bean

  • spring中annotation是怎么实现的

  • spring的AOP原理和底层实现

  • Spring中的事务原理讲一下

  • 数据库方面

  • mysql

    包括ACID、隔离等级、mysql默认隔离等级(可重复读)、Myisam和Innodb两种引擎、Innodb索引的底层实现(b+树)、b+树的原理、然后拓展地讲了下b树和b*树,说了它们的优势劣势

  • 介绍一下InnoDB

  • 数据库索引

  • 数据库事务、可重复读如何实现(MVCC-多版本并发控制,其中对select使用快照)

  • 索引的使用原则

  • Mysql的索引的类型?有哪几种索引?怎么优化查询?

  • Mysql的隔离级别?Mysql是如何消除幻读的?

  • Mysql的隔离级别,分别解决什么问题?

  • Redis与MySQL的区别,Redis适用场景

  • 数据库的索引分类

  • hash索引和b树索引的区别

  • MySQL有哪些引擎,有什么区别

  • sql的前缀匹配索引

  • 乐观锁,悲观锁,间隙锁

  • 简历里有MongoDB,问到了MongoDB事务

  • 分布式事务

  • 数据库的乐观锁原理和实现

  • 数据库索引的设计原理以及意义(讲了一下概念和聚集索引,非聚集索引)

  • 给定一个数据库,如何设计索引,有什么要注意的?

  • 微博粉丝和关注者,以及用户信息,请实现数据库表,来关联起这些表

  • 数据库里的事务原理讲一下

  • 模拟一个数据库死锁?如何解决死锁问题

  • mysql如何实现分页功能?

  • 如果有一百万的数据,mysql如何实现高性能分页

  • 数据库三个范式分别是什么?

  • 给你一个sql语句,怎么判断有没有命中索引?

  • Mysql中有几种搜索引擎,讲一下他们的区别?

  • 分布式redis怎么实现?

  • redis的数据类型?

  • 分布式环境下redis怎么保证线程安全?

  • 索引什么时候建立?好处和坏处?

  • 怎么判断索引的效率

  • 索引失效的情况有哪些?范围查询一定会失效么?

  • 算法方面

  • 阐述一下快排基本原理

  • 一个链表,求中间结点

  • 有两个int类型的数a和b,你能写出几种交换它们值的办法?越多越好

    中间变量、异或、用两数和加减运算(这里可能会发生整形溢出)

  • 一个1TB的文件,你有什么最快的办法能够求出重复次数最多的TOP5行数据?

  • 给你1到100万的连续整数,我从中取出一个数然后打乱数组,你给我求出被取出的是什么数?

    用等差数列求和公式求出1到100万的和,然后再一一减去数组中的数字,就可以求出被取出的数了

  • 最短路径的算法?能不能写一下?

  • 堆排序讲一下

  • 平衡树,红黑树,B+树

  • 快排,归并排区别

  • 给一个长字符串,以及一个短字符串的数组,找出其中所有是长字符串子串的字符串。要用到后缀树

  • 最长连续不重复子序列

  • 以面向对象的思想写快速排序

  • o(1)复杂度删除单链表指定节点(这个想到了复制next的值再指向next.next,但是对于需要删除的节点的尾节点的情况,没想出来,面试官说是一个小trick,让回去想想)

  • 10亿个url,黑名单过滤,不允许差错(hash),允许差错(布隆过滤器)

  • 手写一个算法,随便一个整数num,一个代表进制的整数k(小于10),实现num的k进制转换

  • 实现一个算法,数据库有一个按顺序排列的歌单,用户在前台修改了顺序,现要把数据库的歌单修改成同样的顺序,问怎么样操作最少

  • 实现一个算法,一个文档有若干单词(内存放不下),现要求出10个频度最高的单词

  • 堆排序时间复杂度,红黑树时间复杂度

  • 多线程方面

  • ThreadPool,Jdk原生线程池,四个参数详细解释原理,当线程池中poolSize达到corePoolSize且阻塞队列已满,再来一个任务,如何处理

  • 多线程实现同步的方式,互斥同步,非阻塞同步

  • 解释Synchronize关键字的锁优化技术,偏向锁,轻量级锁,重量级锁,这些锁是如何存储的,偏向锁撤销升级为轻量级锁的过程,结合源码解释

  • volatile关键字语义,内存屏障如何实现,JMM对内存屏障做了哪些优化,volatile的语义增强

  • JMM内存模型,如何保证缓存一致性。

  • 指令重排序相关及其happen-before时,数据依赖等

  • 可重入锁和Synchronized的区别

  • ReentrantLock、synchronized的区别和各自特点?

  • Java多线程(Synchronized、ReentrantLock、ConcurrentHashMap、ConcurrentLinkedQueue、CountDownLatch、CyclicBarrier、Semaphore、Exchange)

  • Java的解决多线程冲突的方法,锁的类型?

  • ThreadLocal的作用?

  • 对象锁知道吗?说说wait,notify那几个方法

  • 多线程对共享资源的处理

  • 线程同步类(信号量)

  • newFixed和newcache分别使用场景

  • 线程同步的方法有哪些,线程池的原理和使用方法,线程超时取消??(当时没太理解,好像问的是设置线程执行的最长时间,超时如何取消)

  • 线程的几种状态

  • 线程同步的方法和区别

  • sleep和wait的区别

  • 线程池中从corePoolSize到maximumPoolSize转变过程,然后问反向转变的操作(多线程并发:就是并发量突然降低了,这个过程怎么实现的,参数如何变化)

  • java concurrent包下有哪些类,了解哪些锁

  • hashmap和concurrenthashmap有什么区别?各自的机制是什么样的?hashmap如何解决链表过长?红黑树有哪些特性?

  • 怎么样实现公平锁?实现机制?

  • 不加锁实现生产者消费者(两个思路:1.采用Semaphore 2.参考Lock的实现原理,基于AQS自己实现一个同步器,这样的话就只算是依赖循环CAS了)

  • conCurrentHashMap中的取Size操作的实现原理?如果是你来做,你怎么怎么实现?

  • conCurrentHashMap相对于HashMap在并发方面做了哪些优化?

  • 生产者消费者中消费者怎么来监听事件?有哪些方法?(看用什么了,最原始的办法就是wait/notify,细粒度的控制就是ReentrantLock里的condition,await/signal)

  • 线程互斥的方法?

  • sychnorized知道么?synchronized(静态对象)和synchronized(实例对象)的区别?

  • sychnorized和lock接口的区别?

  • threadLocal的实现?

  • java基础

  • HashMap底层数据结构,如何处理hash冲突,为何HashMap的大小要设置为2的n次幂,为什么IndexFor方法里,需要hash&length-1,为什么HashMap允许null值,resize()过程,多线程下resize为什么会出现死循环,详细解释,结合源码

  • HashMap jdk1.8之后,为何转链式结构为红黑树,为何长度为8的时候,才转成红黑树

  • NIO了解吗?

  • 手写单例模式。分别问了多线程情况如何处理,什么时候可以破坏单例模式,怎么防止单例模式被破坏

  • 如何获取类的私有方法和私有属性

  • 泛型擦除,泛型擦除后的信息保存在哪里?(存放在类信息中)

  • Java如何序列化一个对象,如何自定义序列化?如何在序列化的过程中排除指定的属性?

  • Java如何读写文件(多种方案)?如何进行随机读写?字节流和字符流的区别?

  • 接口与抽象类的区别

  • Java异常体系画一下

  • Http的报文格式是什么样的

  • Http的响应码有哪些

  • Http底层是什么协议,TCP/IP的四层模型画一下

  • TCP四次挥手画一下,TIME_WAIT出现在什么时候

  • HashMap的结构是什么样的,如何扩容的?

  • 序列化机制

  • osi七层模型,服务器端7层框架,4层框架?

  • NIO底层实现

  • java中exception的分类和你接触过的实例

  • java的collection包含哪些数据结构

  • 由于hashmap扯到了红黑树,描述一下红黑树的结构

  • 网络tcp udp http https区别和使用场景

  • tcp传输序列号

  • weakReference

  • 抽象类和接口的区别

  • 抽象类内方法如果全部是抽象的,是不是就是接口?为什么有的类继承一个类后,还要实现多个接口?

  • 一个已知存储了数据的HashMap中如何让所有的键修改成"网易+原来的键",意思是在所有的key中添加"网易"这个前缀。(Java核心技术:我说迭代处理,但是会有fail-fast问题,然后我就瞎扯了同步操作一下)

  • 静态代理和动态代理区别讲一下

  • cglib底层实现

  • 提出海量数据的时候,集合存不下怎么办

  • 手写jdbc连接数据库的代码

  • java引用类型有哪些?各有什么特点?

  • 遇过哪些内存泄漏的问题?什么原因?

  • 怎么样实现list的线程安全?

  • listhashmap的原理

  • class字节码文件格式是什么?

  • jdk的bin目录下有哪些工具?怎么用?

  • java的异常如何分类?

  • 有没有自己定义过异常。

  • Hashmap同时get put会发生什么?

  • java中for中remove对象会发生什么?

  • 解释一下fast-fail机制,怎么实现的,一定会抛异常么?

  • 讲一下反射,反射中私有变量怎么处理?newInstance如果抛异常的话,是什么原因?

  • 了解序列化么?不同序列化方案的有缺?

  • hashmap 并发put引发resize导致死循环(1.8之前的版本rehash的时候,高位链是会反转,所以可能出现循环引用导致死循环,1.8改了实现,高位链不会反转,所以不会有循环引用,主要是jdk1.7是头插数据,而jdk1.8是尾插式数据,一个线程在resize()集合时,头插式会导致两个节点的循环。这就是所谓的infinite loop问题)

  • 消息队列

  • Kafka监听接口如何实现,为何采用Kafka而不是用其他消息队列

  • 实现Kafka监听接口的时候,遇到哪些坑,采取了哪些措施或者解决方案

  • Kafka的基本概念,及特点和优势。offset+zk+持久化分区日志顺序存储之类的

  • 消息中间件了解吗,原理

  • 项目中消息队列可靠性分析

  • 设计模式

  • 项目中使用了哪些设计模式(我说了Spring中的单例模式和代理模式)

  • 设计模式中关于类与类关系的模式有哪些

  • 装饰器模式和代理模式的区别

  • 代理模式的分类

  • ioc的设计模式

  • 设计模式用过什么

  • 策略模式和模板方法区别

  • jdk中涉及的设计模式

  • 静态代理和适配器设计模式的区别

  • 手写线程安全的单例模式。

    WEB方面

  • Tomcat组织结构

  • Servlet是否是线程安全的?

  • HTTP请求中PUT、POST的区别?HEAD请求的作用?(get的幂等性)

  • Spring MVC 的工作流程?

  • Spring MVC 中的常用注解?RequestMapping的常用配置属性,分别有什么作用?

  • Spring的主要特性?

  • jsp的热部署

  • HTTP发送请求和接收响应的整个流程;

  • 403和500状态分别讲解一下,他们之间有什么区别

  • tcp和udp的区别;(计算机网络知识:就从可靠性,通讯方式,数据大小,应用方面说了说,顺便讲了3次握手4次挥手流程

  • 在url进入dispatchServlet之前相对url做一些改变,你有什么办法?

  • 框架方面

  • Mybatis中的SessionFactory的作用

  • hibernate 的$和#有什么区别

  • 用过注解么,自己写过么。

  • 看过那些开源框架的代码

  • 其他方面

  • git的操作指令?

  • Linux你常用到哪些命令,讲一下netstat

  • 为什么用RPC而不是用HTTP,这两者有什么区别

  • 不使用auto_increment,如何在java代码中实现对主键自增,需要考虑多线程以及分布式

  • 全文索引的数据结构

  • 怎么通过关键字找到哪篇文章

  • 负载均衡在第几层

  • 网络层的作用

  • 如何保证高可用(从应用,服务,数据角度说)

  • 排序超大文件,比如只有2GB内存,如何排序10GB的文件

  • MapReduce怎么划分大文件

  • Linux查看内存硬盘大小

  • 如何加载一个非法的类文件。。貌似是验证class文件后,再用CGLIB动态生成字节码。

  • 编译原理包含哪些过程,每部分输出分别是什么

  • 项目中怎么实现的拦截,怎么实现的针对不同角色控制不同权限

  • svn与git的区别

  • svn的checkout与git的checkout的区别

  • des对称加密

  • jdk1.8 ,1.9新特性

  • 淘宝里如果按照1-5星的店面,从五家店里一共推送出10个同一类产品,都是随机推送,但是最后大量的随机测试后,要保证五颗星的店家推送的商品数量大概是一颗星店家推送的商品数量的五倍,且不能破坏其他概率输出

  • 给定淘宝秒杀场景,请设计系统实现秒杀(思维能力:我就说了一下多线程,生产者消费者也扯上去了,他说是多节点实现,其实我没听明白他想让我说啥。。。)

  • 么样实现一个缓存中的LRU算法?

  • tcp如何实现拥塞控制和流量控制?具体算法是什么?

  • http头部格式

  • 实现一个用户登录功能,在不使用https的情况下完成安全传输

  • 有哪些非对称加密算法

  • 分布式的二阶段提交算法

  • 你了解哪些 hash 方法?一致性 hash 是干嘛的?

  • 为什么用 springboot,好在哪?

  • 注解的范围?