java基础+常见面试题
文章平均质量分 86
学习Java的小姐姐
一线互联网高级软件开发工程师,同时也是一个萌妹子,哈哈哈,必须得萌。擅长Java,Redis,MySQL,ES,RabbitMQ等技术。| 公众号:学习Java的小姐姐,回复有惊喜哦。
展开
-
《关于我横扫一线厂的那些面经》京东Java岗(附答案)
1.jdk8的新特性https://www.cnblogs.com/liuxiaozhi23/p/10880147.htmllamdba表达式:允许函数作为一个方法的参数默认方法:一个在接口里面有了实现的方法。Date Time:1.7版本java.util.Date是线程不安全的,设计很差java.util(包含日期和时间)和java.sql(仅包含日期)包都有日期类,不支持时区LocalDate,LocalTime2.solr倒排索引https://www.cnblogs.com/原创 2021-04-27 11:19:08 · 692 阅读 · 0 评论 -
《关于我横扫一线厂的那些面经》拼多多Java岗(附答案)
问题1.arraylist线程是否安全,具体体现在哪行?什么是线程不安全:线程安全就是多线程访问时,采用了加锁机制,当一个线程访问该类的某个数据时,进行保护,其他线程不能进行访问直到该线程读取完,其他线程才可使用。不会出现数据不一致或者数据污染。线程不安全就是不提供数据访问保护,有可能出现多个线程先后更改数据造成所得到的数据是脏数据。 如图,List接口下面有两个实现,一个是ArrayList,另外一个是vector。 从源码的角度来看,因为Vector的方法前加了,synchronize..原创 2021-04-24 12:32:23 · 743 阅读 · 0 评论 -
万字长文之JDK1.8的LinkedList源码解析
引导语LinkedList 适用于集合元素先入先出和先入后出的场景,在队列源码中被频繁使用,面试也经常问到,本小节让我们通过源码来加深对 LinkedList 的了解。1 整体架构LinkedList 底层数据结构是一个双向链表,整体结构如下图所示:上图代表了一个双向链表结构,链表中的每个节点都可以向前或者向后追溯,我们有几个概念如下:• 链表每个节点我们叫做 Node,Node 有 prev 属性,代表前一个节点的位置,next 属性,代表后一个节点的位置;• first 是双向链表的头原创 2021-04-10 13:25:09 · 300 阅读 · 3 评论 -
JDK1.8的ArrayList 源码解析,走过路过不要错过
引导语ArrayList 我们几乎每天都会使用到,但真正面试的时候,发现还是有不少人对源码细节说不清楚,给面试官留下比较差的印象,本小节就和大家一起看看面试中和 ArrayList 相关的源码。1 整体架构ArrayList 整体架构比较简单,就是一个数组结构,比较简单,如下图:图中展示是长度为 10 的数组,从 1 开始计数,index 表示数组的下标,从 0 开始计数,elementData 表示数组本身,源码中除了这两个概念,还有以下三个基本概念:• DEFAULT_CAPACITY 表原创 2021-04-01 11:25:00 · 2312 阅读 · 0 评论 -
Java集合框架Arrays的常见方法
2 ArraysArrays 主要对数组提供了一些高效的操作,比如说排序、查找、填充、拷贝、相等判断等等。我们选择其中两三看下,对其余操作感兴趣的同学可以到 GitHub 上查看源码解析。2.1 排序Arrays.sort 方法主要用于排序,入参支持 int、long、double 等各种基本类型的数组,也支持自定义类的数组,下面我们写个 demo 来演示一下自定义类数组的排序:@Data// 自定义类class SortDTO {private String sortTarget;..原创 2021-03-26 13:28:05 · 430 阅读 · 2 评论 -
万字总结——反射(框架之魂)
目录前言反射的概述(基础部分开始)为什么要反射?反射的用途获取Class文件对象的三种方式反射的使用1.通过反射获取所有参数getDeclaredFields2.通过反射获取指定参数getDeclaredField3.通过反射获取所有pubic类型的参数 getFields4.通过反射获取指定public类型的参数 getField插曲:为什么getF...原创 2020-01-31 18:48:13 · 932 阅读 · 2 评论 -
Java集合框架Collections的常见方法
3 CollectionsCollections 是为了方便使用集合而产生的工具类,Arrays 方便数组使用,Collections 是方便集使用。Collections 也提供了 sort 和 binarySearch 方法,sort 底层使用的就是 Arrays.sort 方法binarySearch 底层是自己重写了二分查找算法,实现的逻辑和 Arrays 的二分查找算法完全一这两个方法上 Collections 和 Arrays 的内部实现很类似,接下来我们来看下 Collections 独原创 2021-03-30 15:11:52 · 406 阅读 · 0 评论 -
真的懂Java的String吗?
在Java语言中,所有类似“ABC”的字面值,都是String类的实例;String类位于java.lang包下,是Java语言的核心类,提供了字符串的比较、查找、截取、大小写转换等操作;Java语言为“+”连接符(字符串连接符)以及对象转换为字符串提供了特殊的支持,字符串对象可以使用“+”连接其他对象。String类的部分源码如下public final class String implements java.io.Serializable, Comparable<String>原创 2021-03-23 14:08:45 · 275 阅读 · 4 评论 -
终于有人把Java内存区域说清楚了!
不要再把Java内存区域和Java内存模型混淆,再问就自闭啦。????小橙出品 必属精品。先赞后看 养成习惯 。上次我们讲了JVM的类加载机制,主要涉及了双亲委派机制,如何破坏双亲委派机制,不明白的小伙伴可以移步上篇不要再死记硬背Java的类加载啦。网上有很多关于Java区域和内存模型的文章,但是很多人读完之后还是搞不清楚,主要是因为大家把这两个混为一谈,也不关心JDK版本。所以概念一多,非常容易混淆。所以下面将重点说明Java内存区域,主要涉及运行时的几大区域划分,每个区域的职责原创 2020-11-22 17:41:46 · 411 阅读 · 1 评论 -
不要再死记硬背Java的类加载啦
作为一个程序员,面试的时候都绕不过JVM,可以说这是我们永远的痛。是不是感觉每次面试的时候,都要重新背一下,不然面试会被虐惨。那么问题就来了,为什么每次面试都要背?为什么背完过了断时间就忘了?除了记忆不深刻,还有一个重要原因是没理解,不理解的东西当然记不久。所以从这篇开始,我们要开始学习JVM,争取做到理解记忆,将知识点串起来。虽然这块知识很无聊,很枯燥,但是我争取写的简单,有趣点,我们一起加油,好吗?一、类加载机制1.1完整流程(简单版)从上图中我们可以看到,一个简单的Ja..原创 2020-11-09 10:42:39 · 396 阅读 · 4 评论 -
UnsupportedOperationException异常
我们先来重温一下题目,有什么疑问的可以移步传送门。String[]和List< String >的区别及相互转换public class test { public static void main(String[] args) { //定义一个字符长度为5的字符串 String[] strings = new String[5]; strings[0]...原创 2018-10-20 15:43:50 · 112309 阅读 · 25 评论 -
String[]和List<String>的区别及相互转换
List:泛型,非定长,可变。String[]:数组,定长,不可变。原创 2018-10-19 22:08:09 · 57832 阅读 · 4 评论 -
Java中的Object类 (下篇)
要么读书,要么旅行,身体和心灵总有一个要在路上。——罗马假日 上篇我们讲了hashCode和equals方法,首先我们先回顾一下hashCode是根据一定的规则和对象相关的信息映射成一个数值,这个数值成为散列值。他是由native关键字修饰的,native关键字主要是Java平台与本地C代码进行交互的API,即为Java Native Interface(JNI)。 equals关...原创 2018-10-10 10:55:44 · 185 阅读 · 0 评论 -
Java源码系列(8):Java8的新特性
目录Lambda表达式:参数列表,->,具体操作原理简单例子具体使用遍历list数组排序(匿名内部类)数组排序(lamdba表达式)方法引用:对Lamdba表达式的近一步简化原理四种形式使用默认方法:接口interface添加默认default方法原理为什么要有默认方法关于默认方法的调用冲突Stream API原理...原创 2018-09-18 14:20:02 · 340 阅读 · 0 评论 -
Java源码系列(7):HashMap
原创 2018-09-18 14:19:30 · 166 阅读 · 0 评论 -
Iterator中的Itr类(ArrayList)
填坑了,填坑了。上一篇留的问题,大家都有看吗,哪怕没看,那有放在IDEA中执行吗?好,我就认为大家都有思考,下面就是到了激动人心,公布答案的时间啦。按照日常的套路来,答案当然是错误的,恭喜你,都知道答案啦。好,我们言归正传,来看看他为什么错,错在哪里?先看代码: 很明显,他是在第36行报错的,也就是在遍历完数值为3的数据报错的。让我们往前顺顺,为什么...原创 2018-09-18 14:19:06 · 1368 阅读 · 1 评论 -
Java中的Object类 (上篇)
要么读书,要么旅行,身体和心灵总有一个要在路上。——罗马假日 咱今天学习的是Java的Object类,首先先看代码,类里面有哪些方法。咱今天学习两个方法,分别是hashCode,equals。 Object中的hashCode方法就是根据一定的规则与对象相关的信息映射成一个数值,这个数值称为散列值。 public native int hashCode(...原创 2018-09-18 14:18:40 · 182 阅读 · 0 评论 -
Java源码系列(4):String,StringBuilder,StringBuffer区别
hi,国庆节后第一篇。首先,祝大家国庆节快乐,然后祝大家上班快乐。既然上班了,那就知识学起来,今天咱说一下String,StringBuffer和StringBuilder的区别,这是面试必问,但是如果是工作了的小哥哥和小姐姐,就不会傻白甜的问这个问题,但咱还是要知道的,毕竟要是不会,要被面试的人笑死了,咱丢不起这人呢。话不多说,先看结论。1.运行速度从快到慢:StringBu...原创 2018-09-18 14:18:11 · 240 阅读 · 0 评论 -
Java源码系列(3):枚举类型
hello,everybody。没想到今天会推文吧,赶紧夸我,勤快的小仙女。好,我们今天认真的讲一下枚举类型,大家肯定都用过,比如这样的//定义枚举类型enum Day { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY}那我们先来看一下他的概念是啥,枚举类型是Java5新增的特性,他是...原创 2018-09-18 14:17:21 · 261 阅读 · 0 评论 -
Java源码系列(2):Iterable接口
对于以数组形式存储的多条数据,我们通常是用下表index来遍历数组,或进行相关操作,结构如下:对于以链表形式存储的多条数据,我们通常是用指针next来遍历数组,或进行相关操作,结构如下:这主要是由他们的数据结构决定的,数组是一块连续的空间存储,而链表则不是连续的空间。接下来,是不是有人要问咦,这链表挺有顺序的啊,这不整整齐齐排好了吗?nonono,我只是为了版面好看故意排好...原创 2018-09-18 14:16:42 · 1276 阅读 · 0 评论 -
Java源码系列(1):Comparable和Comparator的区别
在将Comparable和Comparator区别之前,先补充一个知识点。先看代码:public class Person<T> { private T id; public T getId() { return id; } public void setId(T id) { this.id = id; }} public...原创 2018-09-18 13:39:12 · 274 阅读 · 1 评论 -
科普分库分表
目录背景介绍分库分表主要有几种类型垂直分库:按照业务功能来划分出不同的数据库垂直分表:大表拆小表水平分表:数据表中不同行分布在不同的数据表中水平分库分表:终极boss,大佬来了背景介绍刚进入项目组的时候,就听老大说我们系统用了分库分表,主要为了解决不同租户的数据都存放在一起,数据量太大的问题。但之前一直没注意,正好这段时间好好看看,也了解一下分库分表的功能是...原创 2018-10-30 11:22:30 · 419 阅读 · 1 评论 -
2019Java面试题社招
MongoDB面试题Redis 面试题Hibernate面试题(二级缓存)RabbitMQ面试题(消息丢失和重发问题)MySQL面试题(事务+索引)原创 2019-03-13 09:58:40 · 2249 阅读 · 2 评论 -
java常见面试题
几种防止表单重复提交的方法 1.禁掉提交按钮。表单提交后使用Javascript使提交按钮disable。这种方法防止心急的用户多次点击按钮。但有个问题,如果客户端把Javascript给禁止掉,这种方法就无效了。 我之前的文章曾说过用一些Jquery插件效果不错。 2.Post/Redirect/Get模式。在提交后执行页面重定向,这就是所谓的Post-Redirect-Get...原创 2016-11-06 11:03:27 · 294 阅读 · 0 评论 -
Java中的collection(HashMap,HashTable等)
代写。原创 2019-03-26 11:44:35 · 281 阅读 · 0 评论 -
Java并发面试题
代写。原创 2019-03-26 11:43:05 · 200 阅读 · 0 评论 -
Java内存模式+类加载器+垃圾回收
代写。原创 2019-03-26 11:41:53 · 254 阅读 · 0 评论 -
HTTP/TCP协议(三次握手+四次挥手)
三次握手口语化的表达:客户端:服务端啊,我想跟你建立个连接。服务端:好啦,我同意你的连接哦。客户端:okok,我知道你同意了,我们一起愉快的工作吧。正式的表达:四次挥手口语化的表达:客户端:服务端啊,我想跟你断开连接了。服务端:恩恩,虽然很伤心,但还是尊重你把,但是你要等一会,我还有数据没传完呢。过了一会服务端:好啦,我数据传完了。客户...原创 2019-03-26 11:40:18 · 248 阅读 · 1 评论 -
Hibernate面试题
概念hibernate是持久层框架,直接操作数据库层面的。session是线程非安全的,对于单个请求,单个会话,单个的工作单元,他只使用一次。只要用户点击的足够快,就会导致两个并发线程使用同一个session。解决方法:a.加锁 b.设置数据隔离级别(mysql默认的是可重复读,最高级别是可串行化,效率最慢)三种状态转化hibernate的工作原理1.读取并解析...原创 2019-03-26 11:31:22 · 488 阅读 · 0 评论 -
RabbitMQ面试题
概念RabbitMQ是消息中间件,采用的erlang语言,而这个语言本身就是支持并发的。在项目中运用的场景是我们的订单数据修改时,需要把订单的状态同步给第三方系统,在这个对接过程,我们将消息发送到RabbitMQ上,而RabbitMQ再把消息推给第三方系统。几种模式1.单发送单接收2.单发送多接收3.发布订阅模式4.按topic发送接收如何保证数据不丢失在整...原创 2019-03-26 11:29:48 · 2623 阅读 · 0 评论 -
MySQL面试题 (事务+索引)
代写。原创 2019-03-26 11:28:42 · 2038 阅读 · 2 评论 -
Token验证
前言这一晃一个月不更文了,是不是小可爱们已经忘了我啊。这段时间工作任务繁重,再加上自己有学习其他知识,所以这段时间荒废了。至于是啥,之后你们就知道了,毕竟不学习,如何更文呢(其实是装B,低调低调)。但是,但是,但是(重要的事情说三遍),我胡汉三又回来了,虽然我也不知道为什么是胡汉三,哈哈哈。唠嗑结束了,我们得来学习新知识,今天写的是如何解决登录问题及token验证。常见的登录...原创 2019-03-19 14:27:31 · 362 阅读 · 1 评论 -
Redis 面试题
此为简略版,详细版见https://blog.csdn.net/qq_33774822/article/category/8575479概念介绍Redis是远程服务器的缩写,是目前最火热的非关系型数据库。单线程,默认端口6379主要优点:1.key-value存储结构2.持久化3.可以设置过期时间平时项目使用Jedis连接,或使用redisTemplate。数...原创 2019-03-25 16:57:59 · 576 阅读 · 0 评论 -
MongoDB 面试
这是大概介绍哦,详细见地址哦 ,https://blog.csdn.net/qq_33774822/column/info/29229概念介绍MongoDB目前的版本是4.0,其实一个文档型数据库,可以存储海量的数据,存储的是JSON字符串。主要优点是:1.速度超快。2.表之间没有联系。3.没有表结构。4.随便什么数据。可视化工具和介绍(Studio 3T)...原创 2019-03-25 16:13:25 · 2085 阅读 · 0 评论 -
配置maven环境和创建第一个maven项目
此篇文章是以他人的手记和慕课视频为基础,若有冒犯,在此道歉。老师讲的很好,很基础,不过自己还是喜欢傻瓜式的。入门新知识,简单容易成功能增加自己的成就感,而不是挫败感。特别是不断的出现问题,查找问题,询问问题,等待别人回答,最煎熬了。什么记事本,手动创建目录,手动寻找修改配置文件最讨厌了。还是留给为了熟练的你我。第一步 下载文件第二步 电脑配置环境变量第三步...转载 2017-01-20 20:53:46 · 353 阅读 · 0 评论 -
count(1),count(*)和count(列名)三者的区别
执行效果上:count(*)包括了所有的列,相当于行数,在统计结果的时候,不会忽略列值为NULLcount(1)包括了忽略所有列,用1代表代码行,在统计结果的时候,不会忽略列值为NULLcount(列名)只包括列名那一列,在统计结果的时候,会忽略列值为空(这里的空不是只空字符串或者0,而是表示null)的计数,即某个字段值为NULL时,不统计执行效率上:列名为主键,count(列名)...转载 2017-03-02 17:24:24 · 1958 阅读 · 0 评论 -
一家反欺诈公司的面试经历——4.equals方法的重写
什么时候需要重写equals()? 我们知道每一个java类都继承自Object类,equals()是Object类中提供的方法之一。那么,让我们先来看看Object#equals()在Java中的原代码:public boolean equals(Object obj){ return (this == obj);}可以看出,只有当一个实例等于它本身的时候,eq...原创 2017-02-23 14:15:07 · 637 阅读 · 0 评论 -
一家反欺诈公司的面试经历——3.hibernate中的session的三种状态
hibernate中的对象有三种状态: 瞬时状态 (Transient),持久状态 (Persistent), 游离状态1.瞬时状态 (Transient)由 new 命令开辟内存空间的 Java 对象,也就是平时所熟悉的普通 Java 对象。 如: Student stu = new Student(); 瞬时对象特点:(1) 不和 Session 实例关联(2) 在数据库中没有和...原创 2017-02-23 14:14:23 · 755 阅读 · 0 评论 -
一家反欺诈公司的面试经历——2.sql语句的左外连接,右外连接,内连接和全连接
例子: ------------------------------------------------- a表 id name b表 id job parent_id 1 张3 1 23 1 ...原创 2017-02-23 14:13:03 · 833 阅读 · 0 评论 -
一家反欺诈公司的面试经历——1.java的设计模式
前言:平常我们都在敲代码,为了要实现一些我们希望看到的功能,敲一大堆一大堆。往往就会忽略了这样的一个问题。你会问敲代码就让我们老老实实的敲代码吧,为什么要那么麻烦的去考虑那么多?当然了现在这样一说你肯定会回答我们肯定不可能就一心只会死头死脑的无脑敲代码啊。是吧?那么我们还要考虑一些什么事情呢?这么跟大家说吧,我们现在敲代码做项目就像做房子,现在我们做的事情是,一块一块的不断的垒砖块,无...原创 2017-02-23 14:10:51 · 4626 阅读 · 0 评论