(面的初级到中级之间的,却有很多高级的问题)

总结一些常见的遇见的面试题(来自各方面收集)

1.开发中Java用了比较多的数据结构有哪些?

2.谈谈你对HashMap的理解,底层原理的基本实现,HashMap怎么解决碰撞问题的?

这些数据结构中是线程安全的吗?假如你回答HashMap是线程安全的,接着问你有没有线程安全的map,接下来问conurren包。

3.对JVM熟不熟悉?简单说说类加载过程,里面执行了哪些操作?问了GC和内存管理,平时在tomcat里面有没有进行相关配置

4.然后问了http协议,get和post的基本区别,接着tcp/ip协议,三次握手,窗口滑动机制。

5.开发中用了哪些数据库?回答mysql,存储引擎有哪些?然后问了我悲观锁和乐观锁问题使用场景、分布式集群实现的原理。

6.然后问了我springmvc和mybatis的工作原理,有没有看过底层源码?

1.如何保障请求执行顺序?

2.分布式事务与分布式锁(扣款不要出现负数)

3.分布式session设置,分布式session一致性

4.执行某操作,前50次成功,第51次失败a全部回滚b前50次提交51次抛异常,ab场景分别如何设置Spring(传播性)

5.Zookeeper有哪些用?

6.JVM的内存模型?

7.数据库垂直和水平拆分

8.Mybatis如何分页;如何设置缓存;Mysql分页

9.IO与NIO的区别,阻塞与非阻塞的区别

10.分布式接口的幂等性设计(不能重复扣款)

1.最近做的比较熟悉的项目是哪个?画一下项目技术架构图

2.JVM老年代和新生代的比例?

3.YGC和FGC的发生的具体场景

4.线程池的构造类的方法的5个参数的具体意义?

5.单机上一个线程池正在处理服务,如果突然断电怎么办?(正在处理和阻塞队列里的请求怎么处理?)

6.使用无界阻塞队列会出现什么问题?

7.接口如何处理重复请求

8.具体处理方案是什么?

9.如何保证共享变量修改是的原子性?

10.设计一个对外服务的接口实现类,在1,2,3这三个主机(对应不同ip)上实现负载均衡和顺序轮询机制(考虑并发)

1.jvm,jre以及jdk三者之间的关系

2.Dubbo的底层原理,Zookeeper是什么?

3.快速排序;广度优先搜索?

4.缓存的雪崩以及穿透的理解?

5.HashMap的key可以重复吗?

6.synchronized和lock的区别?

7.开发一个大型网站你会考虑哪些问题?

面试时,综合准备java Core,数据库,框架,分布式,算法等方面的题目。

初级开发:

1.熟悉SSM架构,至少在项目中做过。用一个业务流程来说明springmvc如何实现的。

2.知道spring mvc的细节,如@Autowired的用法,如何把url映射到Controller上,ModelAndView对象返回的方式等。

3.结合项目的,如何使用AOP,拦截器的,如可以通过拦截器拦截非法请求,怎么用AOP输出日志等。

4.ORM的一对一,一对多,多对多等的用法,以及cascade和inverse的用法

5.声明式事务的做法。

1.spring bean的周期

2.spring 的源代码,IOC、AOP、Springmvc的工作流程

3.结合反射,说下IOC的实现原理

4.Spring Boot和Spring Cloud的知识(如spring cloud组件的用法)

数据库

1.索引怎么建,怎么用,在哪些场景,什么情况下不该建索引,哪些语句不会使用索引?如在where语句中name like '123%' 会不会使用索引。

2.SQL的优化方案,如分库分表,或通过执行计划查看SQL的优化点。

集合

1.hashcode有没有重写过?在什么场景下需要重写。如果可以,结合hash表的算法,说下hashmap的实现原理。ConcurrentHashMap在并发的底层实现代码。

2.ArrayList/LinkedList的差别,比如一个基于数组,一个基于链表,它们均是线程不安全的,ArrayList的扩容做法等。

3.Set如何实现防重,如TreeSet和HashSet等

4.Collection的一些方法,如比较方法、包装成线程安全的方法等。

5.如何通过ArrayList实现队列或堆栈。

多线程

1.synchronized和可重入锁的差别,信号量等防并发机制。

2.在线程里该如何返回值(就是 callable runnable的区别),以及并发机制

3.通过ThreadLocal或volatile关键字,说明线程的内存模型

4.线程池的了解及常用参数的了解

虚拟机

1.虚拟机的结构图和流程

2.针对堆的垃圾回收机制,画个图,说下年轻代和年老代等

3.说下垃圾回收的流程,然后针对性地说下如何在代码中优化内存性能。

4.如果出现OOM异常,该怎么排查,如何看Dump文件?

算法和设计模式

特别搜集多线程和并发的面试题

1.现在有线程T1、T2和T3。你如何确保T2线程在T1之后执行,并且T3线程在T2之后执行?

  可以使用Thread 的join方法实现这一效果

2.Java中新的Lock接口相对于同步代码块(synchronized block)有什么优势?如何让你实现一个高性能缓存,支持并发读取和单一写入,你如何保障数据完整性。

  多线程和并发编程中使用lock接口的最大优势是它为读和写提供两个单独的锁,可以让你构建高性能数据结构,比如ConcurrentHashMap和条件阻塞。

3.Java中wait和sleep方法有什么区别?

  两者主要区别就是等待释放锁和监视器。sleep方法在等待时不会释放任何锁或监视器。wait方法多用于线程间通信,而sleep只是在执行时暂停。

4.如何在Java中实现一个阻塞队列?

5.如何在Java中编写代码解决生产者和消费者问题?

6.写一段死锁代码。你在Java中如何解决死锁?

7.什么是原子操作?java中有哪些原子操作?你需要同步原子操作吗

8.Java中volatile关键字是什么?你如何使用它,它和Java中的同步方法有什么区别?

9.什么是竞态条件?你如何发现并解决竞态条件?

10.在Java中你如何转储线程(thread dump)?如何分析它?

  在UNIX中,你可以使用kill -3 然后线程转储日志会打印在屏幕上,可以使用CTRL+Break查看。

11.既然start()方法会调用run()方法,为什么我们调用start()方法,而不直接调用run() 方法?

  当你调用start()方法时,它会新建一个线程然后执行run() 方法中的代码。如果直接调用run()方法,并不会创建线程,方法中的代码会在当前调用者的线程中执行。

12.Java中你如何唤醒阻塞线程?

可以中断线程,抛出InterruptedException异常来唤醒。

13.Java中CyclicBarriar和CountDownLatch有什么区别?

14.什么是不可变类?它对于编写并发应用有何帮助?

15.你在多线程环境中遇到的最多的问题是什么?你是如何解决的?

  内存干扰、竞态条件、死锁、活锁、线程饥饿时多线程和并发编程中比较有代表性的问题。这类问题无休无止,而且难于定位和调试。

1.Java中绿色线程和本地线程的区别?

2.线程和进程的区别?

3.多线程的上下文切换是什么?

4.死锁和活锁的区别?死锁和饥饿的区别?

5.java中使用什么线程调度算法?

6.Java中线程调度室什么

7.线程中如何处理某个未处理异常?

8.什么是线程组?为什么Java中不建议使用线程组?

9.为什么使用Executor框架比直接创建线程要好?

10.Java中Executor和Executors的区别?

11.在windows和Linux系统上分别入额找到占用CPU最多的线程?

java常见面试题目的更多相关文章

  1. java常见面试题目(一)

    在大四实习阶段,秋招的时候,面试了很多家公司,总结常见的java面试题目:(答案可以自己百度) 1.你所用oracle的版本号是多少? 2.tomcat修改8080端口号的配置文件是哪个? 3.myb ...

  2. java常见面试题目(三)

    1.jsp的内置对象. JSP中一共预先定义了9个这样的对象,分别为:request.response.session.application.out.pagecontext.config.page. ...

  3. java常见面试题目(二)

    部分没有答案可以自行百度. 1.myeclipse与eclipse的区别. 2.说说对maven或者SVN的理解. 3.类的加载过程 (创建对象的过程)  1)子父类里静态属性 赋上默认初始值 如果有 ...

  4. BAT网络运维常见面试题目总结

    BAT常见面试题目总结 Author:Danbo 2015-7-11 TCP/IP详解鸟哥Linux的书网络安全ping的原理make的过程文件有哪些类型各种Linux发行版的区别.有关suid的作用 ...

  5. java程序员常见面试题目

      答:每当程序出现异常之后,如果程序没有进行相应的处理,则程序会出现中断现象.实际上,产生了异常之后,JVM会抛出一个异常类的实例化对象,如果此时使用了try语句捕获的话,则可以进行异常的处理,否则 ...

  6. 一道JAVA经典面试题目的两种解法

    题目要求:String s="-1 2 5 78 129 -65 -23";将字符串进行升序排序后输出. 方法一:使用数组进行排序 思路: 1.获取字符串中的数值:   2.将数组 ...

  7. 【面试笔试】Java常见面试笔试总结

    Java 基础 1.有哪些数据类型 Java定义了8种简单类型:byte.short.int.long.char.float.double和boolean. 2.面向对象的语言特征 封装.继承.多态 ...

  8. JAVA多线程面试题目

    1,java中有几种方法可以实现一个线程? 答:在Java中实现一个线程有两种方法,第一是实现Runnable接口实现它的run()方法,第二种是继承Thread类,覆盖它的run()方法.这两种方法 ...

  9. tomcat常见面试题目问答Top10

    Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,它 ...

随机推荐

  1. DRF之过滤排序分页异常处理

    一.过滤 对于列表数据要通过字段来进行过滤,就需要添加 django-filter 模块 使用方法: # 1.注册,在app中注册 settings.py INSTALLED_APPS = [ 'dj ...

  2. Docker单机网络下

    前言 Docker系列文章: 此篇是Docker系列的第七篇,大家一定要按照我做的Demo都手敲一遍,印象会更加深刻的,加油! 为什么要学习Docker Docker基本概念 Docker镜像基本原理 ...

  3. Acunetix敏感的数据泄露–泄露如何发生

    术语"敏感数据暴露"是指允许未授权方访问存储或传输的敏感信息,例如信用卡号或密码.全球范围内大多数重大安全漏洞都会导致某种敏感的数据泄露. Acunetix利用攻击漏洞(例如Web ...

  4. ftp错误&&详解方案

    一.FTP错误代码列表150 文件状态良好,打开数据连接 200 命令成功 202 命令未实现 211 系统状态或系统帮助响应 212 目录状态 213 文件状态 214 帮助信息,信息仅对人类用户有 ...

  5. Spring cloud中相关的工具和库

    spring:      是一个轻量级控制反转(IoC)和面向切面(AOP)的容器框架. spring mvc:                   spring集成的mvc开发框架. spring ...

  6. 「BZOJ2839」集合计数

    「BZOJ2839」集合计数 题目大意: 一个包含 \(n\) 个数的集合有 \(2^n\) 个子集,从这些子集中取出若干个集合(至少一个),使他们的交集的元素个数恰好为 \(k\),求方案数,答案对 ...

  7. 从零学习SpringSecurity

    一.简介 SpringSecurity是一个功能强大且高度可定制的身份验证和访问控制框架,和spring项目整合更加方便. 二.核心功能 认证(Authentication):指的是验证某个用户能否访 ...

  8. python 06篇 常用模块

    一.模块 什么是模块? 模块实质上就是一个python文件,它是用来组织代码的,意思就是说把python代码写到里面,文件名就是模块的名称,test.py test就是模块名称. 1.1 导入模块 i ...

  9. [刘阳Java]_Java基础面试中的常识问题

    1. anonymous inner class(匿名内部类)是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)? 不行,对于匿名内部类,看到的一句话 ...

  10. [刘阳Java]_Spring常用注解介绍_第6讲

    Spring的注解是在Spring2.5的版本中引入的,目的简化XML配置.在企业开发过程中使用注解的频率非常高,但是学习注解的前提是大家一定要对Spring基于XML配置要熟悉,这是我个人建议,因为 ...