第一次面经总结

因为本人近期时间较忙,还没有自己总结每个题。但是面试过后我还是在网上认真查看了每个题适合的答案解析,我会给出链接,供自己以后复习。大家也可以通过本次面经看看自己还有什么不足。
这些链接都是比较优质的回答,可以多看看学习。

  1. RabbitMQ实现原理?怎么实现?怎么进行通信?为什么用rabbitMQ而不直接调用

首先介绍RabbitMQ的组件有哪些 11个组件

生产者、消费者、队列、消息、连接、通道、交换机、绑定、路由键、AMQP、用户

交换机的类型 4种:直接、扇出、主题、消息头

  1. String、StringBuilder、StringBuffer底层实现原理

String 不能被继承、是不可变类型、可以进行序列化和比较

StringBuffer : 无参构造默认char[] 大小为16,有参构造,传入参数的大小加上16.后续进行拼接追加等操作时,如果大于当前char[] 会进行扩容,现有容量扩大一倍在加上2,如果还是不够则直接等于需要容量的大小。

相同点:底层都是通过char数组实现的
不同点:

String对象一旦创建,其值是不能修改的,如果要修改,会重新开辟内存空间来存储修改之后的对象;而StringBuffer和StringBuilder对象的值是可以被修改的;
StringBuffer几乎所有的方法都使用synchronized实现了同步,线程比较安全,在多线程系统中可以保证数据同步,但是效率比较低;而StringBuilder 没有实现同步,线程不安全,在多线程系统中不能使用 StringBuilder,但是效率比较高。
如果我们在实际开发过程中需要对字符串进行频繁的修改,不要使用String,否则会造成内存空间的浪费;当需要考虑线程安全的场景下使用 StringBuffer,如果不需要考虑线程安全,追求效率的场景下可以使用 StringBuilder。

  1. 谈谈你知道的队列有哪些
    java常用队列
  2. 为什么jdk 1.8 要引入LocalDateTime

原来的Date类可读性较差:

Date date =new Date();  System.out.println(date);

// Sat Nov 14 11:03:41 CST 2020

Date日期的格式化JDk自带的api比较麻烦,通常会使用第三方日期时间库如:joda-time,commos-lang

jdk8 新增的日期时间类:LocalDate、LocalTime、LocalDateTime、ZoneId、ZoneDAteTime

LocalDate:主要是友好的日期格式,不包含时间和时区

构造方法:LocalDate(2020,11,04) 年月日

sout(localDate) 有较好的可读性

LocalTime 时间类

LocalTime.of(12,12,12) 时分秒

LocalDateTime是综合了Date与Time

 LocalDateTime.of(LocalDate.now(), LocalTime.now()); LocalDateTime.of(2020, 11, 14, 13, 10, 50); LocalDate.now().atTime(LocalTime.now()); LocalTime.now().atDate(LocalDate.now()); LocalDateTime.now(); 

时区:

ZoneId代替老版本的TimeZone,每个ZoneId都有一个特定的地区标识

ZoneId.of("Asia/Shanghai"); ZoneId.systemDefault()

时区时间日期的总和:

ZonedDateTime zonedDateTime = ZonedDateTime.of(LocalDateTime.now(), ZoneId.systemDefault()); ZonedDateTime.of(LocalDate.now(),LocalTime.now(),ZoneId.of("Asia/Shanghai"));
  1. SpringSecurity实现过程
    Spring Security实现原理
    Spring Security实现原理

  2. SpringCloud主要的几个组件,feign组件使用流程
    Spring Cloud几个组件相关介绍

  3. CAS实现类
    CAS相关

  4. Mysql数据库如何优化增加读写速度,索引在什么时候失效,索引的执行顺序,两个引擎有什么区别
    mysql如何进行优化
    索引什么时候会失效
    索引的执行顺序
    两大执行引擎的区别------------------

  5. maven无法下载jar包该怎么处理

  6. 谈谈最近的项目
    怎么谈项目?

  7. Ioc是什么,di是什么
    IOC、DI简介

  8. Mybatis取参数的方式以及他们的区别
    mybatis取参方法总结

  1. 传入单个参数
  2. 传入多个参数
  3. 传入map
  4. 传入对象
  5. 使用@Param
  1. Redis支持的数据类型,缓存雪崩、缓存击穿
    redis常用的数据类型和操作
    redis的三种缓存问题

  2. Jwt中的算法
    Jwt实现原理
    Jwt实现原理2

  3. 红黑树的实现、红黑树的自动转换
    红黑是原理

  4. Linux中怎么查看内存使用的情况,怎么查看磁盘使用情况
    使用top
    使用df -h

  5. 一句话完成插入数据到数据库,当该数据存在时删除该数据并插入新数据,不存在时直接插入
    mysql的replace语法

  6. 写一个Singleton出来
    因为这个比较简单,我就直接写出来了
    因为饿汉式类创建时就将实例创建出来了,可能会发生内存泄漏问题,这里我就写两个常见的饿汉式。

//双重锁检验
class Product{
	
	private static volatile Product instance;

	private Product(){}

	public static Product getInstance(){
		if(instance==null){
			synchronized(Product.class){
				if(instance==null){
					instance=new Product();
				}
			}
		}
	}
}

//静态内部类
class Product{

    static class Singleton{
        private static Product instance =new Product();
    }

    private Product(){}

    public static Product getInstance(){
        return Singleton.instance;
    }
}

  1. sql编写
    sql常用语句复习
    经典sql面试题目
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值