
面试题
大神,快来碗里
专注于Java相关技术
展开
-
java多线程并发系列--基础知识点(笔试、面试必备)
多线程和并发是求职大小厂面试中必问的知识点,其涉及到点很多,难度很大。有些人面对这些问题有点迷茫,为了解决这情况,总结了一下java多线程并发的基础知识点。而且要想深入研究java多线程并发也必须先掌握基础知识,可为后续各个模块深入研究做好做好准备。现在废话不多说,各位看官请查看基础知识点,后续还有源码解析(synchronize底层原理,线程池原理,Lock,AQS,同步、并发容器等源码解析)。...原创 2019-12-09 23:52:39 · 1112 阅读 · 0 评论 -
《提升能力,涨薪可待》-Java并发之AQS全面详解
一、AQS是什么?有什么用?AQS全称AbstractQueuedSynchronizer,即抽象的队列同步器,是一种用来构建锁和同步器的框架。基于AQS构建同步器:ReentrantLockSemaphoreCountDownLatchReentrantReadWriteLockSynchronusQueueFutureTask优势:AQS 解决了在实现同步器时涉及的大...原创 2019-12-09 23:49:41 · 1021 阅读 · 0 评论 -
《面试知识,工作可待:集合篇》-java集合面试知识大全
一、集合基础1.1 集合框架有哪些优点如下:使用核心集合类降低开发成本,而非实现我们自己的集合类。随着使用经过严格测试的集合框架类,代码质量会得到提高。通过使用 JDK 附带的集合类,可以降低代码维护成本。复用性和可操作性。1.2 Java集合类框架的基本接口有哪些?Java 集合类提供了一套设计良好的支持对一组对象进行操作的接口和类。Java集合类里面最基本的接口有:Col...原创 2019-12-09 23:47:57 · 855 阅读 · 0 评论 -
MyBatis常见面试题【面试官之你说我听】-
精讲#{}和${}的区别是什么?mybatis在处理#{}时,会将sql中的#{}替换为?号,调用PreparedStatement的set方法来赋值。mybatis在处理时,就是把{}时,就是把时,就是把{}替换成变量的值。使用#{}可以有效的防止SQL注入,提高系统安全性。原因在于:预编译机制。预编译完成之后,SQL的结构已经固定,即便用户输入非法参数,也不会对SQL的结构产生影响,从...原创 2019-12-09 23:43:21 · 931 阅读 · 0 评论 -
美团架构师呕心之作:大厂面试核心知识点梳理
1.JVMJVM 是可运行 Java 代码的假想计算机 ,包括一套字节码指令集、一组寄存器、一个栈、 一个垃圾回收,堆 和 一个存储方法域。JVM 是运行在操作系统之上的,它与硬件没有直接 的交互。2. JAVA 集合集合类存放于 Java.util 包中,主要有 3 种:set(集)、list(列表包含 Queue)和 map(映射)。Collection:Collection 是集...原创 2019-12-09 23:34:23 · 1272 阅读 · 2 评论 -
【大厂面试真题350道】性能优化+微服务+并发编程+开源框架+分布式
一,性能优化专题:1.tomcat性能调优怎么给tomcat调优如何加大comcat连接数怎么加大tomcat的内存tomcat中如何禁止列目录下的文件Tomcat有几种部署方式tomcat的优化经验2.jvm性能优化专题:Java类加载过程java内存分配描述一下jvm加载class文件的原理机制GC是什么?为什么要有GC?简述java垃圾回收机制如何判断一个对...原创 2019-12-09 23:30:15 · 590 阅读 · 0 评论 -
2019年JVM面试都问了什么?快看看这22道面试题!(附答案解析)
一. Java 类加载过程?Java 类加载需要经历一下 7 个过程:1. 加载加载是类加载的第一个过程,在这个阶段,将完成一下三件事情:• 通过一个类的全限定名获取该类的二进制流。• 将该二进制流中的静态存储结构转化为方法去运行时数据结构。• 在内存中生成该类的 Class 对象,作为该类的数据访问入口。2. 验证验证的目的是为了确保 Class 文件的字节流中的信息不回危害到虚...原创 2019-12-09 23:22:27 · 712 阅读 · 0 评论 -
技术面试最后反问面试官的话
预期使用方式检查一下哪些问题你感兴趣检查一下哪些是你可以自己在网上找到答案的找不到的话就向面试官提问绝对不要想把这个列表里的每个问题都问一遍。请记住事情总是灵活的,组织的结构调整也会经常发生。 拥有一个 bug 追踪系统并不会保证高效处理 bug。CI/CD (持续集成系统) 也不一定保证交付时间会很短。职责On-call (电话值班)的计划或者规定是什么?值班或者遇到问题加班...原创 2019-12-07 23:22:14 · 10773 阅读 · 0 评论 -
总结-推荐收藏系列:一文理解JVM虚拟机(内存、垃圾回收、性能优化)解决面试中遇到问题(图解版)
《能力提升,加薪可待-JVM篇》-JVM虚拟机(内存、垃圾回收、性能优化)一. JVM内存区域的划分1.1 java虚拟机运行时数据区java虚拟机运行时数据区分布图:JVM栈(Java Virtual Machine Stacks): Java中一个线程就会相应有一个线程栈与之对应,因为不同的线程执行逻辑有所不同,因此需要一个独立的线程栈,因此栈存储的信息都是跟当前线程(或程序)相关...原创 2019-12-06 14:35:40 · 11260 阅读 · 0 评论 -
面试题(10)阿里java架构师面试128题含答案:分布式架构+Dubbo+多线程+Redis
一、Java基础和高级1.String类为什么是final的。2.HashMap的源码,实现原理,底层结构。3.反射中,Class.forName和classloader的区别4.session和cookie的区别和联系,session的生命周期,多个服务部署时session管理。5.Java中的队列都有哪些,有什么区别。6.Java的内存模型以及GC算法7.Java7、Java8的...原创 2019-04-30 22:56:44 · 18646 阅读 · 0 评论 -
面试题(11)支付宝三面Java面试37题JVM+缓存+性能+架构
支付宝一面介绍一下自己。项目参与的核心设计有哪些ArrayList和LinkedList底层HashMap及线程安全的ConcurrentHashMap,以及各自优劣势Java如何实现线程安全Synchronized和Lock哪个更好?HashMap中的get()方法是如何实现的?HashMap可以用在哪些场景?JVM,垃圾回收机制,内存划分等SQL优化,常用的索引?还有什...原创 2019-04-30 22:57:55 · 11960 阅读 · 0 评论 -
面试题(12)淘宝网五面:现场面试49题含答案!JVM+算法+Redis+Mysql+Spring
淘宝一面:面试介绍1)自我介绍?2)项目介绍?3)遇到的最大困难是什么?怎么解决的?4)你觉得你能怎么优化这个项目?面试题目1)讲一下JVM2)讲一下JVM的分代回收以及具体算法3)将一下JVM的垃圾收集器,G1和CMS有啥区别?4)讲一下一个变量从产生到结束所经历的过程,讲一下字符串常量的过程?5)将一下线程安全问题产生的原因?6)讲一下乐观锁和悲观锁7)乐观锁是怎么保...原创 2019-04-30 22:59:32 · 10873 阅读 · 0 评论 -
面试题(13)最全BAT数据库面试89题
数据库 mysql面试题目:MySQL InnoDB、Mysaim的特点?乐观锁和悲观锁的区别??行锁和表锁的区别?数据库隔离级别是什么?有什么作用?MySQL主备同步的基本原理。如何优化数据库性能(索引、分库分表、批量操作、分页算法、升级硬盘SSD、业务优化、主从部署)SQL什么情况下不会使用索引(不包含,不等于,函数)一般在什么字段上建索引(过滤数据最多的字段)MySQL,...原创 2019-04-30 23:00:43 · 10979 阅读 · 0 评论 -
面试题(14)最新天猫面试题(含总结):线程池+并发编程+分布式设计+中间件
一面:HashMap实现原理,ConcurrentHashMap实现原理红黑树,为什么允许局部不平衡TCP,UDP区别,为什么可靠和不可靠一次HTTP请求的全过程,包括域名解析、定位主机等TCP三次握手MySQL事务是什么?四大特性,四大隔离级别ConcurrentHashMap和Hashtable区别spring IOC和AOP,以及各有什么优点有哪几种常用的线程池什么情况...原创 2019-04-30 23:02:21 · 11111 阅读 · 0 评论 -
面试题(15)最新鲜的美团现场面试41题(三面技术+HR面):Redis+Kafka+分布式
一面hashmap与concurrenthashmap的区别垃圾回收算法以及垃圾回收器CMS的回收步骤G1和CMS的区别CMS哪个阶段是并发的哪个阶段是串行的?G1内部是如何分区的(region)HashMap如何解决Hash冲突my sql 索引类别什么是覆盖索引b+树和b树的区别为什么选用自增量作为主键索引my sql如何优化查询my sql如何在RR隔离级别下避免...原创 2019-04-30 23:03:09 · 11462 阅读 · 0 评论 -
面试题(16)Docker+秒杀设计+RocketMQ+亿级数据设计
蚂蚁金服一面:1 自我介绍2 讲一下ArrayList和linkedlist的区别,ArrayList的扩容方式,扩容时机。3 hashmap的实现,以及hashmap扩容底层实现。4 NIO了解么,讲一下和BIO的区别,AIO呢。阻塞,非阻塞,异步。具体。5 你说了解分布式服务,那么你怎么理解分布式服务。6 你说了解Tomcat的基本原理,了解的是哪一部分,基本架构,connecto...原创 2019-04-30 23:04:01 · 10807 阅读 · 0 评论 -
面试题(17)最新天猫3轮面试题目:虚拟机+并发锁+Sql防注入+Zookeeper
天猫一面自我介绍、项目介绍Spring拦截器、实现了哪些方法?底层原理AOP如何配置,底层原理、2种动态代理,aop注解实现,xml定义切面Bean的作用域,单例模式是否线程安全?恶汉模式是否线程安全?bean如何结束生命周期?Spring事务种类,如何回滚,A方法调用B方法,在B方法中出现异常,会回滚吗?(动态代理)快速排序时间复杂度JVM内存结构详细分配,各比例是多少讲讲du...原创 2019-04-30 23:04:48 · 10811 阅读 · 0 评论 -
面试题(18)蚂蚁中间件团队面试题:Netty+Redis+Kafka+MongoDB+分布式
蚂蚁中间件一面:自我介绍JVM垃圾回收算法和垃圾回收器有哪些,最新的JDK采用什么算法。新生代和老年代的回收机制。讲一下ArrayList和linkedlist的区别,ArrayList与HashMap的扩容方式。Concurrenthashmap1.8后的改动。Java中的多线程,以及线程池的增长策略和拒绝策略了解么。Tomcat的类加载器了解么Spring的ioc和aop,S...原创 2019-04-30 23:05:48 · 18376 阅读 · 0 评论 -
面试题(19)今日头条Java后台研发三面题目
一面concurrent包下面用过哪些?countdownlatch功能实现synchronized和lock区别,重入锁thread和runnable的区别AtomicInteger实现原理(CAS自旋)java并发sleep与wait、notify与notifyAll的区别如何实现高效的同步链表java都有哪些加锁方式(synchronized、ReentrantLock、共...原创 2019-04-30 23:06:30 · 20551 阅读 · 2 评论 -
面试题(20)最新蚂蚁花呗三面题目:红黑树+并发容器+CAS+Solr+分布式+大数据
蚂蚁花呗一面(一个小时):Java容器有哪些?哪些是同步容器,哪些是并发容器?ArrayList和LinkedList的插入和访问的时间复杂度?java反射原理, 注解原理?新生代分为几个区?使用什么算法进行垃圾回收?为什么使用这个算法?HashMap在什么情况下会扩容,或者有哪些操作会导致扩容?HashMap push方法的执行过程?HashMap检测到hash冲突后,将元素插入...原创 2019-04-30 23:07:13 · 18252 阅读 · 0 评论 -
面试题(21)十五道java开发常遇到的计算机网络协议高频面试题
一、GET 和 POST 的区别GET请注意,查询字符串(名称/值对)是在 GET 请求的 URL 中发送的:/test/demo_form.asp?name1=value1&name2=value2GET 请求可被缓存GET 请求保留在浏览器历史记录中GET 请求可被收藏为书签GET 请求不应在处理敏感数据时使用GET 请求有长度限制GET 请求只应当用于取回数据POST...原创 2019-05-01 14:06:12 · 20167 阅读 · 0 评论 -
Redis(11)史上最全Redis面试49题(含答案)哨兵+复制+事务+集群+持久化等
Redis主要有哪些功能?1.哨兵(Sentinel)和复制(Replication)Redis服务器毫无征兆的罢工是个麻烦事,如何保证备份的机器是原始服务器的完整备份呢?这时候就需要哨兵和复制。Sentinel可以管理多个Redis服务器,它提供了监控,提醒以及自动的故障转移的功能,Replication则是负责让一个Redis服务器可以配备多个备份的服务器。Redis也是利用这两个功能...原创 2019-05-01 14:01:22 · 16291 阅读 · 0 评论 -
elasticsearch面试篇
Elasticsearch是如何实现Master选举的?Elasticsearch的选主是ZenDiscovery模块负责的,主要包含Ping(节点之间通过这个RPC来发现彼此)和Unicast(单播模块包含一个主机列表以控制哪些节点需要ping通)这两部分;对所有可以成为master的节点(node.master: true)根据nodeId字典排序,每次选举每个节点都把自己所知道节点排一...原创 2019-05-06 21:55:33 · 19236 阅读 · 0 评论 -
Java最常见的 208 道面试题和答案(9-10) 设计模式和spring
九、设计模式88. 说一下你熟悉的设计模式?参考:常用的设计模式汇总,超详细!89. 简单工厂和抽象工厂有什么区别?简单工厂模式:这个模式本身很简单而且使用在业务较简单的情况下。一般用于小项目或者具体产品很少扩展的情况(这样工厂类才不用经常更改)。它由三种角色组成:工厂类角色:这是本模式的核心,含有一定的商业逻辑和判断逻辑,根据逻辑不同,产生具体的工厂产品。如例子中的Driver类...原创 2019-05-02 16:08:53 · 15610 阅读 · 0 评论 -
面试题(9)百度三面:现场面试39题目实拍含答案!JVM+算法+Redis+数据库!
百度一面(现场)自我介绍Java中的多态为什么要同时重写hashcode和equalsHashmap的原理Hashmap如何变线程安全,每种方式的优缺点垃圾回收机制Jvm的参数你知道的说一下设计模式了解的说一下啊手撕一个单例模式算法题目手撕算法:反转单链表手撕算法:实现类似微博子结构的数据结构,输入一系列父子关系,输出一个类似微博评论的父子结构图手写java多线程...原创 2019-04-30 22:54:57 · 11471 阅读 · 0 评论 -
面试题(8)美团内推:java高级开发(一面+二面+三面),面试58题实拍!
美团一面(电话)自我介绍项目介绍Redis介绍了解redis源码么了解redis集群么Hashmap的原理,增删的情况后端数据结构如何位移hashmap容量为什么是2的幂次hashset的源码object类你知道的方法hashcode和equals你重写过hashcode和equals么,要注意什么假设现在一个学生类,有学号和姓名,我现在hashcode方法重写的时候,只...原创 2019-04-30 22:52:49 · 11531 阅读 · 0 评论 -
面试题(7)去腾讯等BAT面试完的Mysql面试55题总结
1、一张表里面有ID自增主键,当insert了17条记录之后,删除了第15,16,17条记录,再把mysql重启,再insert一条记录,这条记录的ID是18还是15 ?2、mysql的技术特点是什么?3、Heap表是什么?4、mysql服务器默认端口是什么?5、与Oracle相比,mysql有什么优势?6、如何区分FLOAT和DOUBLE?7、区分CHAR_LENGTH和LENGTH...原创 2019-04-30 22:51:19 · 19226 阅读 · 0 评论 -
Java最常见的 208 道面试题和答案(16) - Zookeeper
十六、Zookeeper157. zookeeper 是什么?zookeeper 是一个分布式的,开放源码的分布式应用程序协调服务,是 google chubby 的开源实现,是 hadoop 和 hbase 的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。158. zookeeper 都有哪些功能?集群管理:监控节点存活状...原创 2019-05-02 16:22:00 · 15102 阅读 · 0 评论 -
Java最常见的 208 道面试题和答案(15) - Kafka
十五、Kafka152. kafka 可以脱离 zookeeper 单独使用吗?为什么?kafka 不能脱离 zookeeper 单独使用,因为 kafka 使用 zookeeper 管理和协调 kafka 的节点服务器。153. kafka 有几种数据保留的策略?kafka 有两种数据保存策略:按照过期时间保留和按照存储的消息大小保留。154. kafka 同时设置了 7 天和 10G...原创 2019-05-02 16:20:29 · 15141 阅读 · 0 评论 -
Java最常见的 208 道面试题和答案(14) -RabbitMQ
十四、RabbitMQ135. rabbitmq 的使用场景有哪些?①. 跨系统的异步通信,所有需要异步交互的地方都可以使用消息队列。就像我们除了打电话(同步)以外,还需要发短信,发电子邮件(异步)的通讯方式。②. 多个应用之间的耦合,由于消息是平台无关和语言无关的,而且语义上也不再是函数调用,因此更适合作为多个应用之间的松耦合的接口。基于消息队列的耦合,不需要发送方和接收方同时在线。在企业...原创 2019-05-02 16:18:39 · 10363 阅读 · 1 评论 -
Java最常见的 208 道面试题和答案(13) Mybatis
十三、Mybatis125. mybatis 中 #{}和 ${}的区别是什么?#{}是预编译处理,${}是字符串替换;Mybatis在处理#{}时,会将sql中的#{}替换为?号,调用PreparedStatement的set方法来赋值;Mybatis在处理时,就是把{}时,就是把时,就是把{}替换成变量的值;使用#{}可以有效的防止SQL注入,提高系统安全性。126. myba...原创 2019-05-02 16:17:03 · 10282 阅读 · 0 评论 -
Java最常见的 208 道面试题和答案(12) Hibernate
十二、Hibernate113. 为什么要使用 hibernate?对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码。Hibernate是一个基于JDBC的主流持久化框架,是一个优秀的ORM实现。他很大程度的简化DAO层的编码工作hibernate使用Java反射机制,而不是字节码增强程序来实现透明性。hibernate的性能非常好,因为它是个轻量级框架。映射的...原创 2019-05-02 16:14:18 · 10249 阅读 · 0 评论 -
Java最常见的 208 道面试题和答案(11) Spring Boot &Spring Cloud
十一、Spring Boot / Spring Cloud104. 什么是 spring boot?在Spring框架这个大家族中,产生了很多衍生框架,比如 Spring、SpringMvc框架等,Spring的核心内容在于控制反转(IOC)和依赖注入(DI),所谓控制反转并非是一种技术,而是一种思想,在操作方面是指在spring配置文件中创建,依赖注入即为由spring容器为应用程序的某个对...原创 2019-05-02 16:11:59 · 10543 阅读 · 0 评论 -
Java最常见的 208 道面试题和答案(8) 网络
网络79. http 响应码 301 和 302 代表的是什么?有什么区别?答:301,302 都是HTTP状态的编码,都代表着某个URL发生了转移。区别:301 redirect: 301 代表永久性转移(Permanently Moved)。302 redirect: 302 代表暂时性转移(Temporarily Moved )。80. forward 和 redirect ...原创 2019-05-02 15:56:51 · 10450 阅读 · 0 评论 -
Java最常见的 208 道面试题和答案(7) 异常
异常74. throw 和 throws 的区别?throws是用来声明一个方法可能抛出的所有异常信息,throws是将异常声明但是不处理,而是将异常往上传,谁调用我就交给谁处理。而throw则是指抛出的一个具体的异常类型。75. final、finally、finalize 有什么区别?final可以修饰类、变量、方法,修饰类表示该类不能被继承、修饰方法表示该方法不能被重写、修饰变量表...原创 2019-05-02 15:52:48 · 10624 阅读 · 0 评论 -
Java最常见的 208 道面试题和答案(6)Java Web
Java Web64. jsp 和 servlet 有什么区别?jsp经编译后就变成了Servlet.(JSP的本质就是Servlet,JVM只能识别java的类,不能识别JSP的代码,Web容器将JSP的代码编译成JVM能够识别的java类)jsp更擅长表现于页面显示,servlet更擅长于逻辑控制。Servlet中没有内置对象,Jsp中的内置对象都是必须通过HttpServletRe...原创 2019-05-02 15:50:29 · 10357 阅读 · 0 评论 -
Java最常见的 208 道面试题和答案(4)和(5) 反射
第四模块答案反射57. 什么是反射?反射主要是指程序可以访问、检测和修改它本身状态或行为的一种能力Java反射:在Java运行时环境中,对于任意一个类,能否知道这个类有哪些属性和方法?对于任意一个对象,能否调用它的任意一个方法Java反射机制主要提供了以下功能:在运行时判断任意一个对象所属的类。在运行时构造任意一个类的对象。在运行时判断任意一个类所具有的成员变量和方法。在运行...原创 2019-05-02 15:47:41 · 10364 阅读 · 0 评论 -
Java最常见的 208 道面试题和答案(3) 多线程
多线程35. 并行和并发有什么区别?并行是指两个或者多个事件在同一时刻发生;而并发是指两个或多个事件在同一时间间隔发生。并行是在不同实体上的多个事件,并发是在同一实体上的多个事件。在一台处理器上“同时”处理多个任务,在多台处理器上同时处理多个任务。如hadoop分布式集群。所以并发编程的目标是充分的利用处理器的每一个核,以达到最高的处理性能。36. 线程和进程的区别?简而言之,进...原创 2019-05-02 15:43:52 · 10381 阅读 · 0 评论 -
Java最常见的 208 道面试题和答案(17) -MySql
十七、MySql164. 数据库的三范式是什么?第一范式:强调的是列的原子性,即数据库表的每一列都是不可分割的原子数据项。第二范式:要求实体的属性完全依赖于主关键字。所谓完全依赖是指不能存在仅依赖主关键字一部分的属性。第三范式:任何非主属性不依赖于其它非主属性。165. 一张自增表里面总共有 7 条数据,删除了最后 2 条数据,重启 mysql 数据库,又插入了一条数据,此时 id ...原创 2019-05-02 16:23:41 · 15169 阅读 · 0 评论 -
Java最常见的 208 道面试题和答案(18) - Redis
十八、Redis179. redis 是什么?都有哪些使用场景?Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。Redis 使用场景:数据高并发的读写海量数据的读写对扩展性要求高的数据180. redis 有哪些功能?数据缓存功能分布式锁的功能支持数据持久化支持事务支持消息队列...原创 2019-05-02 16:24:48 · 15195 阅读 · 0 评论