自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(382)
  • 收藏
  • 关注

原创 年轻人自以为是却不料惨遭抖音Java后端面试官血虐,奉劝这位年轻人耗子尾汁,面经奉上!

前言:激动的心,颤抖的手,就想往大厂走一走,这是我一直以来的夙愿,也是皇天不负有心人了,就在上个月的月末,还每天沉浸在crud中的我,突然接到了抖音后端的面试邀请,简历是在10月份投递的,这么久就像一颗石子投进了大海一样,没有溅起丝毫波澜,甚至我都已经忘掉了我还投过简历,我怀着满满的信心去参与了这次面试,胸有成竹,觉得自己必定可以拿下offer,没想到惨遭面试官一顿血虐并告诉我下次一定!一面CtrlC可以终止程序,我们是否可以在程序终止的时候做一些别的操作? tcp四次挥手 进程和线程...

2020-12-10 15:02:50 5256 26

原创 10年老兵不残,从Java后端熬到HR总监就剩这份面试题笔录了,已助朋友拿到7个Offer

本文是BATJ 2020年面试题集锦( 文章尾部含答案),是作者自身结合多年的工作、面试经验总结提炼而成的面试真题。通过这些面试题,大家可以间接地了解技术大牛们出题思路与考察要点。想要入职大厂可谓是千军万马过独木桥。要通过层层考验,刷题肯定是必不可少的。为帮助开发者们提升面试技能、有机会入职BATJ等大厂公司,特别制作了这个专辑——这一次整体放出。大致内容包括了: Java 集合、JVM、多线程、并发编程、设计模式、Spring全家桶、Java、MyBatis、ZooKeepe...

2020-11-25 00:21:06 1680 13

原创 一年北漂Java妹子,上周刚面试回来后的面试总结,已收获6个offer,建议近期在找工作的收藏必看

因为在原公司待的不是很开心,然后决定裸辞了(千万不要裸辞!!!一方面心理压力比较大。另一方面也可能会被压薪资)裸辞之后没着急找工作,因为原先做的东西比较偏底层,所以也是学习了一段时间先拿小公司练练手,大厂问的东西无外乎项目、基础、算法,这些的话楼主推荐几本书,基本问的东西都在这里面了《Redis设计与实现》、《Mysql技术内幕 InnoDB存储引擎》、《TCP-IP详解卷一》、《HTTP权威指南》、《深入理解Linux内核》、《研磨设计模式》、《数据结构与算法分析-c语言描述》机械工业的那个我这边是应.

2020-11-23 22:42:43 2750 14

原创 两月面试被拒30次,终收5家大厂offer— JVM、线程、算法、spring、高并发

大家都知道程序员涨薪主要还是要靠跳槽来完成!但是我们都知道,无论是考试,还是求职,这个难度,参加人数是影响难度的一个很大因数,最近和不少出去面试的朋友闲聊,都发现,两年前面试高级开发,会JUC、JVM相关的知识点都是加分项,现在反而成了基本要求,不会这些,面试都是被吊起来打!哎~~也不想多说什么了,说多都是泪。下面是我这两个月以来去几个厂子面试的经历总结。有兴趣的可以观摩下。华为三面(消费者BG通用软件开发)-(差一点)一面 9月15号 40分钟左右四点面试结果三点半电话通知可以..

2020-10-25 00:27:43 2474 8

原创 面试必问之JVM原理

1:什么是JVMJVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆和一个存储方法域。 JVM屏蔽了与具体操作系统平台相关的信息,使Java程序只需生成在Java虚拟机上运行的目标代码(字节码),...

2018-07-13 23:02:00 48229 7

原创 阿里面试必问:Hash冲突怎么办,哪些解决散列冲突的方法?

通过构造性能良好的哈希函数,可以减少冲突,但一般不可能完全避免冲突,因此解决冲突是哈希法的另一个关键问题。创建哈希表和查找哈希表都会遇到冲突,两种情况下解决冲突的方法应该一致。下面以创建哈希表为例,说明解决冲突的方法。这种方法也称再散列法,其基本思想是:当关键字key的哈希地址出现冲突时,以p为基础,产生另一个哈希地址p1,如果p1仍然冲突,再以p为基础,产生另一个哈希地址p2,…,直到找出一个不冲突的哈希地址pi ,将相应元素存入其中。

2023-05-31 11:50:36 610

原创 面试必问:说说TCP,UDP和socket,Http之间联系和区别?

在传递数据之前,要先建连接,这会消耗时间,而且在数据传递时,确认机制、重传机制、拥塞控制机制等都会消耗大量的时间,而且要在每台设备上维护所有的传输连接,事实上,每个连接都会占用系统的。)中,TCP层是位于IP层之上,应用层之下的中间层。不同主机的应用层之间经常需要可靠的、像管道一样的连接,但是IP层不提供这样的流机制,而是提供不可靠的包交换。的可靠体现在TCP在传递数据之前,会有三次握手来建立连接,而且在数据传递时,有确认、窗口、重传、拥塞控制机制,在数据传完后,还会断开连接用来节约系统资源。

2023-05-31 11:46:05 314

原创 面试常问:说下Session和Cookie的区别与联系?

1)

2023-05-31 11:43:21 272

原创 面试官:详谈Java四种线程池及new Thread的弊端

执行异步任务只是如下吗?那你就太out了,new Thread的弊端如下:1)每次通过创建对象性能不佳。2)线程缺乏统一管理,可能无限制新建线程,相互之间竞争,及可能占用过多系统资源导致死机或oom。3)缺乏更多功能,如定时执行、定期执行、线程中断。相比提供的四种线程池的好处在于:1)重用存在的线程,减少对象创建、消亡的开销,提升性能。2)可有效控制最大并发线程数,提高系统资源的使用率,同时避免过多资源竞争,避免堵塞。

2023-05-31 11:40:24 1251

原创 Dubbo与Zookeeper经典面试题,你遇到过几个?

Dubbo缺省协议采用单一长连接和 NIO 异步通讯,适合于小数据量大并发的服务调用,以及服务消费者机器数远大于服务提供者机器数的情况。反之,Dubbo缺省协议不适合传送大数据量的服务,比如传文件,传视频等,除非请求量很低。dubbo是管理中间层的工具,在业务层到数据仓库间有非常多服务的接入和服务提供者需要调度,dubbo提供一个框架解决这个问题。注意这里的dubbo只是一个框架,至于你架子上放什么是完全取决于你的,就像一个汽车骨架,你需要配你的轮子引擎。

2023-05-31 11:35:34 235

原创 阿里面试经典必问题:说说你对 Java 中锁以及 sychronized 实现机制的理解?

这三种锁是指锁的状态,并且是针对Synchronized。在Java 5通过引入锁升级的机制来实现高效Synchronized。这三种锁的状态是通过对象监视器在对象头中的字段来表明的。

2023-05-31 11:21:34 80

原创 阿里经典面试题:Spring Boot中的条件注解底层是如何实现的?

分析完了条件注解的执行逻辑之后,接下来的问题就是SpringBoot是如何让这些条件注解生效的?SpringBoot使用ConditionEvaluator这个内部类完成条件注解的解析和判断。在Spring容器的refresh过程中,只有跟解析或者注册bean有关系的类都会使用ConditionEvaluator完成条件注解的判断,这个过程中一些类不满足条件的话就会被skip。

2023-05-31 11:17:21 68

原创 MQ消息队列面试连环炮,你能回答几个?

项目里怎么样使用 MQ 的?为什么要使用消息队列?消息队列有什么优点和缺点?kafka、activemq、rabbitmq、rocketmq都有什么优缺点?如何保证消息队列高可用?如何保证消息不被重复消费?如何保证消息的可靠性传输?如何保证消息的顺序性?写一个消息队列架构设计?

2023-05-31 11:10:58 126

原创 阿里面试必问:有用过分布式锁吗?知道它是如何实现的吗?

使用Zookeeper实现分布式锁的优点是有效的解决单点问题,不可重入问题,非阻塞问题以及锁无法释放的问题。实现起来较为简单。使用Zookeeper实现分布式锁的缺点是性能上不如使用缓存实现分布式锁。需要对ZK的原理有所了解。

2023-05-31 10:57:01 62

原创 面试常问:你能说一说Redis的过期键删除策略吗?

Redis的过期键删除策略也是面试中经常会被问的,我最近面试,被问到了好几次。对于Redis服务器来说,内存资源非常宝贵,如果一些过期键一直不被删除,就会造成资源浪费,因此我们需要考虑一个问题:如果一个键过期了,它什么时候会被删除呢?

2023-05-31 10:48:05 124

原创 三年后端小姐姐四面字节,当场收到OC,薪资35K!

4. 注意常见的面试题:字节跳动对Java开发面试的考察比较全面,会考察一些比较经典的Java面试题,如单例模式的实现、HashMap的实现原理、线程池的使用、JVM内存管理等等。我相信这次面试是我职业生涯中重要的一步,我会持续学习和进步,提高自己的技能水平,为未来的发展打下坚实的基础。2. 熟悉开发工具和常用框架:熟练掌握主流的Java开发工具,如Eclipse、IntelliJ IDEA等,熟悉常用的Java框架,如Spring Boot、MyBatis等,并且能熟练运用这些工具。怎么展示所有的评论?

2023-05-30 11:10:33 75

原创 【40】阿里面试常问:聊聊JVM虚拟机中init和clinit的区别?

在jvm第一次加载文件时调用,包括静态变量初始化语句和静态块的执行。:在实例创建出来的时候调用,包括调用new操作符;调用Class或对象的方法;调用任何现有对象的方法;通过类的方法反序列化。是对象构造器方法,也就是说在程序执行 new 一个对象调用该对象类的方法时才会执行init方法,而是类构造器方法,也就是在jvm进行类加载—–验证—-解析—–初始化,中的初始化阶段jvm会调用方法。是实例构造器,对非静态变量解析初始化,而是class类构造器对静态变量,静态代码块进行初始化。

2023-05-28 14:56:29 183 5

原创 【39】面试官常问:有了 HTTP 协议,为什么还要 RPC 协议,两者有什么区别?

RPC 服务和 HTTP 服务还是存在很多的不同点的,一般来说,RPC 服务主要是针对大型企业的,而 HTTP 服务主要是针对小企业的,因为 RPC 效率更高,而 HTTP 服务开发迭代会更快。总之,选用什么样的框架不是按照市场上流行什么而决定的,而是要对整个项目进行完整地评估,从而在仔细比较两种开发框架对于整个项目的影响,最后再决定什么才是最适合这个项目的。一定不要为了使用 RPC 而每个项目都用 RPC,而是要因地制宜,具体情况具体分析。

2023-05-28 14:53:29 122

原创 【38】阿里面试官常问:如何设计与实现短连接 URL 服务?

短信和许多平台(微博)有字数限制,太长的链接加进去都没有办法写正文了.比起一大堆不知所以的参数,短链接更加简洁友好.你点了链接会有人记录然后分析的.不暴露访问参数.这就是为什么我们现在收到的垃圾短信大多数都是短URL的原因了.那么短URL是怎么做到的呢?

2023-05-28 14:49:04 178

原创 【37】面试官必问:MyBatis 日志如何做到兼容所有常用的日志框架?

本文主要分析了MyBatis日志的加载原理,并对LogFactory作为适配器对象工厂是如何选择日志适配器对象进行了分析。最后分析了MyBatis是如何通过动态代理将不同日志类型分为不同对象来实现日志打印功能的。为帮助开发者们提升面试技能、有机会入职BATJ等大厂公司,特别制作了这个专辑——这一次整体放出。

2023-05-28 14:47:53 88

原创 【36】面试官必问:为什么选择B+树作为数据库索引结构?

B树就是平衡的多路搜索树,所谓的m阶B树,即m路平衡搜索树。根据维基百科的定义,一棵m阶B树需满足以下要求:每个结点至多含有m个分支节点(m>=2)。除根结点之外的每个非叶结点,至少含有┌m/2┐个分支。若根结点不是叶子结点,则至少有2个孩子。一个含有k个孩子的非叶结点包含k-1个关键字。(每个结点内的关键字按升序排列)所有的叶子结点都出现在同一层。实际上这些结点并不存在,可以看作是外部结点。根据节点的分支的上下限,也可以称其为(┌m/2┐, m)树。

2023-05-28 14:45:31 128

原创 【35】面试必问:Redis 持久化是如何做的?RDB 和 AOF 对比分析

我们对RDB和AOF的总结如下表。RDBAOF持久化方式生成某一时刻的数据快照文件实时记录每一个写命令到文件数据完整性不完整,取决于备份周期相对完整性高,取决于文件刷盘方式文件大小压缩二进制写入,文件较小原始的操作命令,文件大宕机恢复时间快慢恢复优先级低高持久化代价高,消耗大量CPU和内存低,只占用磁盘IO资源使用场景数据备份、主从全量复制、对丢数据不敏感的业务场景快速数据恢复对于丢失数据敏感的场景,例如涉及金钱交易相关的业务。

2023-05-28 14:43:35 196

原创 【34】BAT等公司必问的8道Java经典面试题,你都会了吗?

考点分析:今天的问题主要是考察你对 Java 内置锁实现的掌握,也是并发的经典题目。我在前面给出的典型回答,涵盖了一些基本概念。如果基础不牢,有些概念理解起来就比较晦涩,我建议还是尽量理解和掌握,即使有不懂的也不用担心,在后续学习中还会逐步加深认识。我个人认为,能够基础性地理解这些概念和机制,其实对于大多数并发编程已经足够了,毕竟大部分工程师未必会进行更底层、更基础的研发,很多时候解决的是知道与否,真正的提高还要靠实践踩坑。后面我会进一步分析:

2023-05-28 14:37:56 61

原创 【33】面试官灵魂拷问:为什么代码规范要求 SQL 语句不要过多的 join?

上学时,数据库老师最喜欢考数据库范式,直到上班才学会一切以性能为准,能冗余就冗余,实在冗余不了的就join如果join真的影响到性能。试着调大你的, 或者换固态硬盘。为帮助开发者们提升面试技能、有机会入职BATJ等大厂公司,特别制作了这个专辑——这一次整体放出。

2023-05-28 14:34:07 57

原创 【32】面试官常问:为什么 MySQL 中的 utf8 并不是真正的 UTF-8 编码?

主要是目前网络上几乎所有的文章都把 “utf8” 当成是真正的 UTF-8,包括之前我写的文章以及做的项目(捂脸);因此希望更多的朋友能够看到这篇文章。相信还有很多跟我在同一条船上的人,这是必然的。所以,大家以后再搭建MySQL、MariaDB数据库时,记得将数据库相应编码都改为utf8mb4。终有一天,接你班儿的程序员发或你的领导现这个问题后,一定会在心里默默感到你的技术牛B。为帮助开发者们提升面试技能、有机会入职BATJ等大厂公司,特别制作了这个专辑——这一次整体放出。

2023-05-28 14:29:49 52

原创 【31】面试官常问:Redis 数据过多导致内存占满,会宕机吗?如何内存回收?

上面说到了Redis可使用最大内存使用完了,是可以使用LRU算法进行内存淘汰的,那么什么是LRU算法呢?LRU(Least Recently Used),即最近最少使用,是一种缓存置换算法。在使用内存作为缓存的时候,缓存的大小一般是固定的。当缓存被占满,这个时候继续往缓存里面添加数据,就需要淘汰一部分老的数据,释放内存空间用来存储新的数据。这个时候就可以使用LRU算法了。其核心思想是:如果一个数据在最近一段时间没有被用到,那么将来被使用到的可能性也很小,所以就可以被淘汰掉。

2023-05-28 14:27:39 236

原创 【30】面试常问:你说一说 HashMap 是如何解决 hash 冲突的?

HashMap基于哈希表的 Map 接口的实现。此实现提供所有可选的映射操作,并允许使用 null 值和 null 键。(除了不同步和允许使用 null 之外,HashMap 类与 Hashtable 大致相同。)此类不保证映射的顺序,特别是它不保证该顺序恒久不变。值得注意的是HashMap不是线程安全的,如果想要线程安全的HashMap,可以通过Collections类的静态方法synchronizedMap获得线程安全的HashMap。

2023-05-26 18:25:36 896

原创 【29】面试常问:Java 中如何优雅的实现对外接口,需要注意哪些事项?

接口无非就是客户端请求你的接口地址,并传入一堆该接口定义好的参数,通过接口自身的逻辑处理,返回接口约定好的数据以及相应的数据格式。

2023-05-26 18:21:55 633

原创 【28】面试官常问:为什么数据库连接池要用 ThreadLocal 呢?不用会怎么样?

再好好理解一下上面的一段话,我再最后解释亿下首先,我们为了避免单一数据库连接的创建和关闭耗费时间和性能,引入了数据库连接池,提前创建好了n条连接放入池中,如果是单线程情况下,那这样挺好的那如果是多线程情况下呢?还是上面那段话,假设同一时间多个线程从数据库连接池获取连接,那肯定拿的是不同的连接,我当前线程和别的线程拿的连接不一样,那我当前在crud的时候,不在一个事务之内。

2023-05-26 18:18:53 419 3

原创 【27】面试官常问:spring Boot 框架中如何使用 AOP 防止重复提交?

在传统的web项目中,防止重复提交,通常做法是:后端生成一个唯一的提交令牌(uuid),并存储在服务端。页面提交请求携带这个提交令牌,后端验证并在第一次验证后删除该令牌,保证提交请求的唯一性。上述的思路其实没有问题的,但是需要前后端都稍加改动,如果在业务开发完在加这个的话,改动量未免有些大了,本节的实现方案无需前端配合,纯后端处理。1、自定义注解 @NoRepeatSubmit 标记所有Controller中的提交请求2、通过AOP 对所有标记了 @NoRepeatSubmit 的方法拦截。

2023-05-26 18:17:05 181

原创 【26】面试官:说说双重检查加锁单例模式为什么两次校验?

为什么是双重校验锁实现单例模式呢?也就是第一个if(singleton==null),这个是为了代码提高代码执行效率,由于单例模式只要一次创建实例即可,所以当创建了一个实例之后,再次调用getInstance方法就不必要进入同步代码块,不用竞争锁。直接返回前面创建的实例即可。

2023-05-26 18:12:32 69

原创 【25】面试常问:谈谈 Java 中 synchronized 对象锁和类锁有什么区别?

1、如果多线程同时访问同一类的 类锁(synchronized 修饰的静态方法)以及对象锁(synchronized 修饰的非静态方法)这两个方法执行是异步的,原因:类锁和对象锁是两种不同的锁。2、类锁对该类的所有对象都能起作用,而对象锁不能。

2023-05-26 18:10:55 196

原创 【24】面试官常问:说说为什么要拆分数据库?有哪些方法?

垂直切分是根据业务来拆分数据库,同一类业务的数据表拆分到一个独立的数据库,另一类的数据表拆分到其他数据库。比如说一个新零售的电商数据库,我们可以把跟商品相关的数据表拆分成一个数据库,然后在这些数据表的基础之上,构建出商品系统。比如用JAVA或者PHP语言,创建出一个商城系统。然后把跟进销存相关的数据表拆分到另外一个数据库上,再用程序构建出仓库系统。

2023-05-26 18:09:24 38

原创 【23】Spring 中 @Transactional 是如何实现的?

Transactional是spring中声明式事务管理的注解配置方式,相信这个注解的作用大家都很清楚。@Transactional注解可以帮助我们把事务开启、提交或者回滚的操作,通过aop的方式进行管理。通过@Transactional注解就能让spring为我们管理事务,免去了重复的事务管理逻辑,减少对业务代码的侵入,使我们开发人员能够专注于业务层面开发。

2023-05-26 18:05:50 154

原创 【22期】面试官常问:ArrayList 使用 forEach 遍历时删除元素会报错吗?

ArrayList使用forEach遍历的时候删除元素会报错吗?答:其实不一定,如果删除的元素是倒数第二个则不会报错,否则报错ConcurrentModificationException。原因:举个栗子如果要删除等于“3”的元素,我们都知道ArrayList底层是类似数组的形式才存储数据的,生成一个元素后,后面的元素要往前移动,同时lists的size减1。这时lists变成[“1”,“2”,“4”],大小为3。

2023-05-26 17:52:51 228

原创 【21】面试官常问:Java 中 new 一个对象的过程中发生了什么?这有些夸张了!

java在new一个对象的时候,会先查看对象所属的类有没有被加载到内存,如果没有的话,就会先通过类的全限定名来加载。加载并初始化类完成后,再进行对象的创建工作。我们先假设是第一次使用该类,这样的话new一个对象就可以分为两个过程:加载并初始化类和创建对象。

2023-05-26 17:50:44 60

原创 【20】面试官常问:Java 遍历 Map 集合有几种方式?效率如何?

从上面的时间比较来看:1)map的key采用简单形式和复杂形式时,查找的效率是不同的,简单的key值效率更高。2)当数据量大的时候,采用entrySet遍历key+value的效率要高于keySet。3)当我们只需要取得value值时,采用values来遍历效率更高。

2023-05-25 17:00:47 96

原创 【19】告诉面试官,我能优化 Group By,而且知道得很深!

此时,或许你已经觉得MySQL将中间结果存放在内存临时表,性能已经有了保障,但是,在《MySQL分表时机:100w?,这两个字段是这条SQL中统计所需的部分,如果我们要做这样一个统计和分组,并把结果固化下来,肯定是需要一个内存或磁盘区域落下第一次统计的结果,然后,以这个结果做下一次的统计,因此,像这种存储中间结果,并以此结果做进一步处理的区域,MySQL叫它。分析SQL的执行阶段,结合临时表的结构,进一步剖析了SQL的详细执行过程,最后,引出优化方案:新增索引,避免临时表对分组字段的统计,及。

2023-05-25 17:00:01 33

原创 【18】面试官问:JDK1.8 中 HashMap 底层实现原理源码分析,你 get 到了吗?

这几天学习了HashMap的底层实现,但是发现好几个版本的,代码不一,而且看了Android包的HashMap和JDK中的HashMap的也不是一样,原来他们没有指定JDK版本,很多文章都是旧版本JDK1.6.JDK1.7的。现在我来分析一哈最新的JDK1.8的HashMap及性能优化。在JDK1.6、JDK1.7中,HashMap采用位桶+链表实现,即使用链表处理冲突,同一hash值的链表都存储在一个链表里。但是当位于一个桶中的元素较多,即hash值相等的元素较多时,通过key值依次查找的效率较低。

2023-05-25 16:56:50 49

原创 【17】面试官常问:Java 中 for、foreach、stream 哪个处理效率更高?

我们在开发中循环遍历一个数组经常会用到,jdk8推出了一些新特性,对循环做了比较,通过代码亲测,记录一下!

2023-05-25 16:40:00 4074

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除