《java面试题全集》疑点详解
文章平均质量分 85
HD243608836
这个作者很懒,什么都没留下…
展开
-
面试被问烂的 Spring IOC(求求你别再问了)
一、广义的 IOC(不止应用于Spring)IoC(Inversion of Control) 控制反转,即“不用打电话过来,我们会打给你”。两种实现:依赖查找(DL)和依赖注入(DI)。IOC 和 DI 、DL 的关系(这个 DL,Avalon 和 EJB 就是使用的这种方式实现的 IoC):DL 已经被抛弃,因为他需要用户自己去是使用 API 进行查找资源和组装对象。即有侵入性。 DI 是 Spring 使用的方式,容器负责组件的装配。注意:Java..转载 2021-12-06 18:36:04 · 187 阅读 · 0 评论 -
Java程序员如何月薪达到两万,需要技术水平达到什么程度?(理解了面试为什么这么问!以及工作中的应用!说的很直白)
有人说这只能是大企业或者互联网企业工程师才能拿到。也许是的,小公司或者非互联网企业拿两万的不太可能是码农了,应该已经转管理。还有区域问题,这个不在我的考虑范围内,因为除了北上广深杭,其他地方也很难达到。还有人提到这个水平不止2w,其实工资是跟面试表现有关的,也跟其他综合水平有关,比如你是985,top10,或者研究生学历,也或者懂点node,懂点大数据等等,或者表达能力强,击中面试官痛点都会加分。如果你达到我说的水准,起薪就是2w,有其他优秀的表现还会在这个基础上加分。但纯JAVA方面待遇是比较吻合的。转载 2021-04-22 10:31:56 · 351 阅读 · 0 评论 -
在Java 8中将List转换为Map对象方法——好文章,很实用!
假设有一个员工对象: 1 2 3 4 5 6 7 publicclassEmployee { // member variables privateintempId; privateString empName; privateintempAge; ...转载 2020-01-08 15:11:27 · 866 阅读 · 0 评论 -
简洁又快速地处理集合——Java8 Stream(上)(很实用)
Java 8 发布至今也已经好几年过去,如今 Java 也已经向 11 迈去,但是 Java 8 作出的改变可以说是革命性的,影响足够深远,学习 Java 8 应该是 Java 开发者的必修课。今天给大家带来 Java 8 Stream 讲解,为什么直接讲这个,是因为只要你学完,立刻就能上手,并能让它在你的代码中大展身手。值得注意的是:学习 Stream 之前必须先学习 lambda 的相...转载 2020-01-07 19:01:15 · 436 阅读 · 0 评论 -
IntelliJ IDEA 统一设置编码为utf-8编码(最全的——解决编码乱码方案)
问题一:File->Settings->Editor->File Encodings问题二:File->Other Settings->Default Settings ->Editor->File Encodings问题三:将项目中的.idea文件夹中的encodings.xml文件中的编码格式改为uft-8问题四:...转载 2020-01-07 18:52:37 · 1354 阅读 · 0 评论 -
解决使用Spring Boot、Multipartfile上传文件路径错误问题(文章很好,清晰简明)
彻底跟路径错误say拜拜!题图:from Google1.问题描述关键字:SpringMVC 4.2.4 、 Spring Boot 1.3.1 、Servlet 3.0 、文件上传 报错信息:java.io.IOException: java.io.FileNotFoundException: /tmp/tomcat.273391201583741210.8080/work/...转载 2019-12-26 14:43:06 · 1822 阅读 · 1 评论 -
LRU(Least Recent Used) java实现——为什么采用HashMap+双向链表
在知乎上看到一篇文章 :LRU原理和Redis实现——一个今日头条的面试题他采用HashMap+双向链表实现LRU(淘汰掉最不经常使用的)。先来将原文简单引用介绍下,以免原作者删除。很久前参加过今日头条的面试,遇到一个题,目前半部分是如何实现 LRU,后半部分是 Redis 中如何实现 LRU。我的第一反应是操作系统课程里学过,应该是内存不够的场景下,淘汰旧内容的策略。LRU .....转载 2019-12-17 02:34:49 · 2414 阅读 · 0 评论 -
手写算法(java开发工程师面试——会这些基本够用了,又不是面算法工程师)
快速排序和冒泡排序(附二者效率比较)https://blog.csdn.net/HD243608836/article/details/88875102~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~java快速排序的两种写法https://blog.csdn.net/HD243608836/article/details/88891557坐在马...原创 2019-12-16 20:59:25 · 411 阅读 · 0 评论 -
蚂蚁中间件团队面试题:Netty+Redis+Kafka+MongoDB+分布式
蚂蚁中间件一面:自我介绍 JVM垃圾回收算法和垃圾回收器有哪些,最新的JDK采用什么算法。 新生代和老年代的回收机制。 讲一下ArrayList和linkedlist的区别,ArrayList与HashMap的扩容方式。 Concurrenthashmap1.8后的改动。 Java中的多线程,以及线程池的增长策略和拒绝策略了解么。 Tomcat的类加载器了解么...转载 2019-12-16 20:47:44 · 386 阅读 · 0 评论 -
面试官绝杀:系统是如何支撑高并发的?
很多人面试的时候被问到一个让人特别手足无措的问题:你的系统如何支撑高并发?大多数同学被问到这个问题压根儿没什么思路去回答,不知道从什么地方说起,其实本质就是没经历过一些真正有高并发系统的锤炼罢了。因为没有过相关的项目经历,所以就没法从真实的自身体会和经验中提炼出一套回答,然后系统地阐述出来自己复杂过的系统如何支撑高并发的。所以,这篇文章就从这个角度切入来简单说说这个问题,教你用一个最简...转载 2019-12-16 18:21:05 · 394 阅读 · 0 评论 -
消息队列原理及选型
什么是消息队列消息队列(Message Queue)是一种进程间通信或同一进程的不同线程间的通信方式。什么时候需要消息队列 异步处理:例如短信通知、终端状态推送、App推送、用户注册等 有些业务不想也不需要立即处理消息。消息队列提供了异步处理机制,允许用户把一个消息放入队列,但并不立即处理它。想向队列中放入多少消息就放多少,然后在需要的时候再去处理它们。 数据同步:业务数...转载 2019-12-16 18:07:48 · 831 阅读 · 0 评论 -
线程池,这一篇或许就够了
为什么用线程池 创建/销毁线程伴随着系统开销,过于频繁的创建/销毁线程,会很大程度上影响处理效率 例如: 记创建线程消耗时间T1,执行任务消耗时间T2,销毁线程消耗时间T3 如果T1+T3>T2,那么是不是说开启一个线程来执行这个任务太不划算了! 正好,线程池缓存线程,可用已有的闲置线程来执行新任务,避免了T1+T3带来的系统开销 线程并发数量过...转载 2019-12-16 18:05:18 · 292 阅读 · 0 评论 -
数据库连接池Druid使用总结(结合各位大牛总结的)
根据综合性能,可靠性,稳定性,扩展性,易用性等因素替换成最优的数据库连接池。Druid:druid-1.0.29数据库 Mysql.5.6.17替换目标:替换掉C3P0,用druid来替换替换原因:1、性能方面 hikariCP>druid>t...转载 2019-12-16 17:45:43 · 565 阅读 · 0 评论 -
京东后台面试(很全面,很符合现在的面试!!)
Java笔试面试目录(一个大佬的总结)https://blog.csdn.net/weixin_41835916/article/d...转载 2019-12-15 10:06:54 · 624 阅读 · 0 评论 -
Java笔试面试目录(不错,很符合当前面试!!!)
——————Java基础————— Java面试–接口 Java面试–反射 Java面试–String Java面试–String和byte[]之间的转化 Java面试–ClassNotFoundException Java面试–HashCode Java面试–线程的生命周期状态 Java面试–线程创建 Java面试–多线程买票 Java面试–线程和进程的区别 Java面试–...转载 2019-12-15 10:04:04 · 299 阅读 · 0 评论 -
Mongodb 查询指定时间范围的数据
今天用mongodb查昨天某个collection产生的记录数量,在mysql里面可以用between..and..或者 >、>=、<、<=来查询指定的时间范围数据,但是mongodb有自己的语法。mongodb里比较,用 "$gt" 、"$gte"、 "$lt"、 "$lte"(分别对应">"、 ">=" 、"<" 、"<="),组合起来可以进行范...转载 2019-12-15 09:45:42 · 3229 阅读 · 0 评论 -
Java并发:volatile内存可见性和指令重排
volatile两大作用1、保证内存可见性2、防止指令重排此外需注意volatile并不保证操作的原子性。(一)内存可见性1 概念JVM内存模型:主内存和线程独立的工作内存Java内存模型规定,对于多个线程共享的变量,存储在主内存当中,每个线程都有自己独立的工作内存(比如CPU的寄存器),线程只能访问自己的工作内存,不可以访问其它线程的工作内存。工作内存中保存了主内...转载 2019-12-14 23:24:20 · 185 阅读 · 0 评论 -
理解Spring循环引用(循环依赖)
转载自:https://blog.csdn.net/chen2526264/article/details/80673598一、介绍循环引用,也可以叫做循环依赖,就是A类依赖了B类,B类又依赖A类,比如下面这种情况:class A { private B b;public B getB() { return b;}public void setB(B b) { this.b =...转载 2019-12-14 22:54:59 · 433 阅读 · 0 评论 -
springMVC中多个拦截器Interceptor的执行顺序
1.springMVC中拦截器实现这个接口implements HandlerInterceptor第一个拦截器:public class MyInterceptor1 implements HandlerInterceptor{ public void afterCompletion(HttpServletRequest arg0, HttpServletResponse ...转载 2019-12-14 21:15:15 · 523 阅读 · 0 评论 -
SpringAOP位于springMVC原理图的作用位置——通过拦截器使用注解方式校验参数(面试必问!!)
前言:上一篇介绍了,使用AOP的方式去拦截校验参数,本章讲解使用拦截器去校验参数,以及遇到的问题。简介:Spring web mvc处理拦截器,就是案例所用到的去校验参数,类似与serlvet开发中里的filter过滤器。用于对拦截前及后处理。常见场景:日记记录、校验参数、权限检查等等。比喻我们在学习jdbc的时候,获取连接,最后关闭连接。其实本质也是AOP的方法(面向切面编...转载 2019-12-14 13:21:49 · 186 阅读 · 0 评论 -
SpringMVC拦截器实例(判断用户是否登录)——AOP的实现原理(实现接口HandlerInterceptor)(面试必问!!!)
自定义拦截器XML中配置SpringMVC拦截器 新建拦截器类,并实现三个方法(拦截器类必须实现接口HandlerInterceptor) 最后执行handler(即被AOP的Controller方法)具体流程及代码如下:配置XML文件:springmvc.xml新建拦截器类,并实现三个方法:CheckLoginInterceptor.java若登录了...原创 2019-04-23 17:41:35 · 710 阅读 · 0 评论 -
SpringMVC工作原理过程——从用户发送请求开始(面试必问)
SpringMVC的工作原理图:SpringMVC流程1、 用户发送请求至前端控制器DispatcherServlet。2、 DispatcherServlet收到请求调用HandlerMapping处理器映射器。3、 处理器映射器找到具体的处理器(可以根据xml配置、注解进行查找),生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet...转载 2018-08-16 23:15:47 · 327 阅读 · 0 评论 -
双重检测同步锁---防止Redis缓存穿透
我们在用缓存的时候,不管是Redis或者Memcached,基本上会通用遇到以下三个问题:缓存穿透 缓存并发 缓存失效一、缓存穿透注:上面三个图会有什么问题呢?我们在项目中使用缓存通常都是先检查缓存中是否存在,如果存在直接返回缓存内容,如果不存在就直接查询数据库然后再缓存查询结果返回。这个时候如果我们查询的某一个数据在缓存中一直不存在,就会造...转载 2019-12-14 01:48:53 · 739 阅读 · 0 评论 -
SpringBoot+多数据源(MySQL)
1.引入数据源: (1)在application.local.properties 配置多个数据源连接:spring.datasource.primary.url=XXXXXXXX?useUnicode=true&characterEncoding=UTF-8spring.datasource.primary.username=XXXXXXXXspring.dataso...转载 2019-12-12 00:47:28 · 193 阅读 · 0 评论 -
为什么我们调用start()方法时会执行run()方法?为什么我们不能直接调用run()方法?他们之间有什么区别?
为什么我们调用start()方法时会执行run()方法?因为类Thread中的start方法中,调用了Thread中的run方法。顺便说下,类A继承了Tread类,在A中写run方法,就会覆盖掉Thread中的run方法,所以此时调用start方法后,实现的是自己的run方法体里面的代码。为什么我们不能直接调用run()方法?如果我们直接调用子线程的run()方法,其方法还是运行在主线...转载 2019-12-12 00:25:16 · 601 阅读 · 0 评论 -
&(与运算)、|(或运算)、^(异或运算)的本质理解
按位与运算符(&)参加运算的两个数据,按二进制位进行“与”运算。运算规则:0&0=0;0&1=0;1&0=0;1&1=1;即:两位同时为“1”,结果才为“1”,否则为0例如:3&5即 0000 0011& 0000 0101 = 00000001因此,3&5的值得1。另,...转载 2019-12-11 22:30:28 · 321 阅读 · 0 评论 -
@ControllerAdvice 拦截异常并统一处理 Spring Boot 系列(八)@ControllerAdvice 拦截异常并统一处理
在spring 3.2中,新增了@ControllerAdvice 注解,可以用于定义@ExceptionHandler、@InitBinder、@ModelAttribute,并应用到所有@RequestMapping中。参考:@ControllerAdvice 文档一、介绍创建 MyControllerAdvice,并添加 @ControllerAdvice注解。package ...转载 2019-12-11 21:56:44 · 246 阅读 · 0 评论 -
CountDownLatch和CyclicBarrier有什么区别?
CountDownLatch有时被称为“闭锁”,其作用相当于一扇门:在CountDownLatch达到结束状态之前,这扇门一直是关闭的,并且没有任何线程能通过,当到达结束状态时,这扇门会打开并允许所有的线程通过。当CountDownLatch到达结束状态后,将不会再改变状态,因此这扇门将永远保持打开状态。CountDownLatch可以用来确保某些活动直到其它活动都完成后才继续执行。Cycli...转载 2019-12-10 23:34:46 · 470 阅读 · 0 评论 -
原子操作类AtomicInteger详解
为什么需要AtomicInteger原子操作类?对于Java中的运算操作,例如自增或自减,若没有进行额外的同步操作,在多线程环境下就是线程不安全的。num++解析为num=num+1,明显,这个操作不具备原子性,多线程并发共享这个变量时必然会出现问题。测试代码如下:public class AtomicI...转载 2019-12-10 22:29:35 · 170 阅读 · 0 评论 -
JVM GC算法
在判断哪些内存需要回收和什么时候回收用到GC 算法,本文主要对GC 算法进行讲解。JVM垃圾判定算法常见的JVM垃圾判定算法包括:引用计数算法、可达性分析算法。引用计数算法(Reference Counting)引用计数算法是通过判断对象的引用数量来决定对象是否可以被回收。给对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加1;当引用失效时,计数器值就减1;任何时刻...转载 2019-12-10 16:34:16 · 158 阅读 · 0 评论 -
NIO(IO多路复用)——select、poll、epoll之间的区别(搜狗面试)
转载自:https://www.cnblogs.com/aspirant/p/9166944.html(1)select==>时间复杂度O(n)它仅仅知道了,有I/O事件发生了,却并不知道是哪那几个流(可能有一个,多个,甚至全部),我们只能无差别轮询所有流,找出能读出数据,或者写入数据的流,对他们进行操作。所以select具有O(n)的无差别轮询复杂度,同时处理的流越多,无差别轮询时...转载 2019-12-09 11:52:16 · 1159 阅读 · 0 评论 -
【Springboot+Redis】Springboot+Redis实现消息队列(生产者/消费者、发布订阅模式)
一般来说,消息队列有两种场景,一种是发布者订阅者模式,一种是生产者消费者模式。利用redis这两种场景的消息队列都能够实现。定义: 生产者消费者模式:生产者生产消息放到队列里,多个消费者同时监听队列,谁先抢到消息谁就会从队列中取走消息;即...转载 2019-12-08 01:13:19 · 987 阅读 · 3 评论 -
共享出行业务下的高并发场景及解决方案(解决方案很具体!!很好!!)
转载自:https://gitbook.cn/books/5ae2bcf8fcb8aa431d69d3a3/index.html某共享汽车出行平台从随着业务的发展,可能大家听到出行以为是滴滴,然而不是,不过今年美团等巨头也入场共享汽车行业,表明公司业务至少是不错的,城市也在不断扩张,随着最初的 3 台车到目前运营几千台车,也在不断发展过程中,拥有了自己的固件平台,也正式由于此导致在一些业务过程...转载 2019-12-05 14:20:12 · 552 阅读 · 0 评论 -
在SpringBoot中配置多个cache,实现多个cacheManager灵活切换(干的漂亮!!!)
SpringBoot配置多个cache,实现多个cacheManager灵活切换注:本文所用的springBoot版本号为1.5.6.6目的&效果在springBoot中同时配置了RedisCache和ehCache,当使用@Cacheable注解时,默认为redisCache,通过指定注解中"cacheManager"的属性值,达到任意切换cache的效果。第一次尝试由于@Ca...转载 2019-12-04 17:49:55 · 3190 阅读 · 0 评论 -
Java面试常考的 BIO(即普通IO),NIO,AIO 总结
文章转载自:JavaGuide目录: 1. BIO (Blocking I/O)<ul><li> <p>1.1 传统 BIO</p> ...转载 2019-12-02 11:22:17 · 285 阅读 · 0 评论 -
跨域问题同源策略总结(最新最全)
1.同源策略如下:URL 说明 是否允许通信 http://www.a.com/a.js http://www.a.com/b.js 同一域名下 允许 http://www.a.com/lab/a.js http://www.a.com/script/b.js 同一域名下不同文件夹 允许 http://www.a.com:8000/a...转载 2019-11-30 18:25:23 · 264 阅读 · 0 评论 -
什么是跨域?如何解决跨域问题?(前端、后端两大类解决方案都可以)
###什么是跨域?浏览器从一个域名的网页去请求另一个域名的资源时,域名、端口、协议任一不同,都是跨域域名: 主域名不同 htt...转载 2019-11-30 17:45:48 · 3559 阅读 · 0 评论 -
springboot各种传参方式与get、post请求——PathVariable、RequestParam、RequestBody(很精辟!)
PathVariable的post、get对比:Get、post都可以获得路径参数。RequestParam的post、get对比:Get、post都可以获得问号后的请求参数。Requestparam 还可以获得post body里的参数,这时为x-www-form-urlencoded,改成application/json就错了:RequestBod...转载 2019-11-29 12:55:12 · 6566 阅读 · 0 评论 -
Mysql引擎InnoDB和MYISAM简明扼要的区别
一、科普看了很多讲B树和B+树的文章,大多都是围绕各自的特性讲的,第一,树中每个结点最多含有m个孩子(m>=2);第二,……我也是从这些文章里弄懂了各种树的联系与区别,要真写,我可能还不如人家写得好。所以就在这里简明扼要的用几张图记录一下主要区别吧。为了便于说明,我们先定义一条数据记录为一个二元组[key,data],key为记录的键值,key唯一;data为数据记录除key...转载 2019-11-14 19:39:13 · 263 阅读 · 0 评论 -
MySQL 加锁处理分析(MVVC、快照读、当前读、GAP锁(间隙锁))——数据库锁看这一篇就足够了
MySQL 加锁处理分析本文来自:何登成的技术博客一、背景MySQL/InnoDB的加锁分析,一直是一个比较困难的话题。我在工作过程中,经常会有同事咨询这方面的问题。同时,微博上也经常会收到MySQL锁相关的私信,让我帮助解决一些死锁的问题。本文,准备就MySQL/InnoDB的加锁问题,展开较为深入的分析与讨论,主要是介绍一种思路,运用此思路,拿到任何一条SQL语句,都能完整的...转载 2019-11-14 16:17:21 · 2232 阅读 · 0 评论