北京小厂一面30问

这篇具有很好参考价值的文章主要介绍了北京小厂一面30问。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

小厂一面30问

  1. Redis除了存储数据外还能实现什么功能?

除了存储数据外,Redis还可以实现数据的缓存、分布式锁、消息队列、计数器等功能。Redis还支持事务、Lua脚本、发布/订阅等高级功能。

  1. HashMap的底层原理是什么?

HashMap是通过数组和链表(或红黑树)实现的。当我们向HashMap中put一个键值对时,首先会根据键的hashcode值计算出它在数组中的索引位置,然后将值存储在对应的链表(或红黑树)中。当产生哈希冲突时,会在链表(或红黑树)中继续寻找对应的值。

  1. HashMap的put是怎么存储数据的,哈希冲突怎么解决的?

当我们向HashMap中put一个键值对时,首先会根据键的hashcode值计算出它在数组中的索引位置,然后将值存储在对应的链表(或红黑树)中。当产生哈希冲突时,会在链表(或红黑树)中继续寻找对应的值。哈希冲突解决的方式是,当链表中元素个数大于等于8时,将链表转化为红黑树,否则继续在链表中寻找。

  1. HashMap不是线程安全的,那有什么是线程安全的?

ConcurrentHashMap是线程安全的HashMap实现。

  1. ConcurrentHashMap是怎么实现的线程安全?

ConcurrentHashMap通过分段锁的方式实现线程安全,将整个HashMap分为多个Segment,每个Segment维护一个HashTable,每个Segment只对自己的HashTable进行操作,可以有效地提高并发性能。

  1. HashMap初始容量大小是多少?

HashMap的初始容量大小是16。

  1. HashMap怎么实现的扩容?

当HashMap中的元素数量达到容量的75%时,就会触发扩容操作,即将容量扩大为原来的两倍,并重新构建哈希表。

  1. HashMap为什么每次扩容为2的n次方?

HashMap每次扩容为2的n次方是为了让元素在哈希表中分布更加均匀。

  1. Java8有什么新特性?

Java8的新特性包括Lambda表达式、函数式接口、Stream API、默认方法、新的Date/Time API等。

  1. Java中有哪些语法糖?

Java中的语法糖包括自动装箱/拆箱、泛型、foreach循环、变长参数、枚举、注解等。

  1. foreach和for有什么区别?

foreach循环是用来遍历集合或数组的简化语法,它不需要我们定义一个计数器或索引变量,可以直接遍历每一个元素。而for循环则需要我们手动定义计数器或索引变量,并通过循环来遍历集合或数组。

  1. foreach底层是怎么实现的?

foreach底层是通过迭代器实现的,它会自动调用集合或数组的iterator()方法获取一个迭代器,然后使用迭代器进行遍历。

  1. MySQL的事务有哪些?

MySQL中的事务包括四个基本操作:ACID,即原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)。

  1. MySQL事务中隔离性是怎么实现的?

MySQL中的隔离性是通过锁和MVCC(多版本并发控制)实现的,不同程度的隔离级别使用不同的实现方式。锁实现了串行化执行,而MVCC实现了读写分离,多版本并发控制,可以提高并发性能。

  1. 能讲讲MVCC具体怎么实现事务的隔离性的?

MVCC是MySQL中实现事务隔离性的一种方式,它通过在每行记录中保存多个版本来实现。当进行读操作时,会根据事务启动时的时间戳和版本号来选择符合要求的记录版本,从而实现读操作不会被写操作影响的隔离性。当进行写操作时,会将新版本的记录插入到对应的行中,并将旧版本的记录标记为删除,从而实现更新操作不会影响到其他事务读取旧版本数据的隔离性。

  1. ReadView具体是保存了什么数据?

ReadView是MySQL中实现MVCC的一种机制,它保存了当前事务开始执行时的系统版本号和所有活跃事务的ID列表。在事务执行过程中,ReadView会根据这些信息来判断当前事务是否可见其他事务的修改。

  1. InnoDB存储引擎有什么好处?
InnoDB存储引擎具有以下优点:
- 支持事务和行级锁,可以实现高并发和数据一致性。
- 支持MVCC,可以提高读写性能。
- 支持外键约束,可以保证数据的完整性。
- 支持在线热备份和恢复,可以提高数据可用性。
  1. 如果要查询前1-5条数据,在B+树中是怎么进行查找的?

在B+树中,数据是按照键值大小有序地存储在叶子节点上。如果要查询前1-5条数据,可以先定位到最左边的叶子节点,然后从左往右依次扫描叶子节点,取出前5个数据即可。

  1. MySQL中除了InnoDB以外还有什么存储引擎?

MySQL中还有MyISAM、Memory、CSV等多个存储引擎。

  1. MyISAM与InnoDB的区别,有什么优点?

MyISAM和InnoDB在存储方式、锁机制、事务支持等方面有很大的区别。MyISAM适合于读多写少的场景,不支持事务和行级锁,但是具有快速读取和空间占用小的优点;InnoDB适合于高并发、事务严格要求一致性的场景,支持事务和行级锁,但是具有写入慢、空间占用大的缺点。

  1. MySQL中有什么锁?

MySQL中有共享锁(S锁)、排他锁(X锁)、意向共享锁(IS锁)、意向排他锁(IX锁)等多种锁。

  1. 间隙锁是锁的什么数据?

间隙锁是针对B+树中的间隙(即不存在的数据)进行的锁定,它是InnoDB实现MVCC的一种方式,可以避免幻读的问题。

26、在查看某次查询索引时一般看的什么

在查看某次查询索引时一般要看索引是否被正确地使用,可以通过explain命令查看查询计划、索引类型、扫描行数、是否使用了索引等信息。

27、说一下对分布式锁的理解

分布式锁是在分布式系统中实现锁管理的一种方式,它可以保证在分布式系统中的多个节点同时对共享资源进行操作时,只有一个节点能够获得锁,并且在操作完成之后释放锁,从而保证数据的一致性和正确性。

28、说一下什么是线程池

线程池是一种用于管理和复用线程的机制,它可以在应用程序中预先创建一定数量的线程,并将它们保存在一个线程池中,以便根据需要动态地分配线程来处理任务。

29、线程池怎么创建

创建线程池可以使用Java中的Executors工具类提供的静态方法来创建,例如newFixedThreadPool、newCachedThreadPool等方法。

30、创建线程池时主要设置什么属性

创建线程池时主要要设置线程池的核心线程数、最大线程数、线程空闲时间、任务队列等属性。

31、线程池一般可以用在什么情况下

线程池一般可以用在需要频繁创建和销毁线程的场景,例如高并发的网络服务器、大规模数据处理等。

32、springcloud中 你熟悉什么

在Spring Cloud中,我比较熟悉的是服务注册与发现组件Eureka、配置中心组件Config、负载均衡组件Ribbon、断路器组件Hystrix等。

33、nacos是什么,主要实现什么功能

Nacos是阿里巴巴开源的一个服务注册中心和配置中心,主要实现了服务的注册、发现、配置管理等功能。

34、SpringBoot中 请求进来时mapping是怎么处理的,底层是怎么实现的(如Getmapping是怎么处理请求的)

在Spring Boot中,请求进来时mapping是通过Spring MVC框架来处理的。底层实现是通过反射机制来扫描所有的Controller类和方法,并将它们映射到对应的URL上,当请求进来时,会根据请求的URL和HTTP方法来匹配对应的Controller方法,然后执行该方法,并将返回结果封装成HTTP响应返回给客户端。Getmapping是通过RequestMappingHandlerMapping类的getMappingForMethod方法来处理的,该方法会根据方法上的GetMapping注解和请求的URL来匹配对应的方法。文章来源地址https://www.toymoban.com/news/detail-600861.html

到了这里,关于北京小厂一面30问的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 字节跳动音视频面试一面挂!!,狂刷200道数据结构与算法

    线程执行结束,我们怎么知道他结束了,其实是ipc的问题… tcp和http区别 然后让我手算255.255.250.0子网掩码的IP可以有多少个,应该是8+2,所以是2的10次方个 刚开始记错了,32/4是8,记成了6,面试官一直问我确认吗,还好后来反应过来了… ndk了解吗 音视频为什么编码,常见的

    2024年04月28日
    浏览(49)
  • 面试阿里、字节全都一面挂,被面试官说我的水平还不如应届生

    测试员可以先在大厂镀金,以后去中小厂毫无压力,基本不会被卡,事实果真如此吗?但是在我身上却是给了我很大一巴掌... 所谓大厂镀金只是不卡简历而已,如果面试答得稀烂,人家根本不会要你。况且要不是大厂出来的,可能上面这些面试资格都拿不到,这么多面试机会

    2024年02月06日
    浏览(47)
  • 小厂实习要不要去?

    大家好,我是帅地。 最近暑假实习招聘,不少 训练营 学员都拿到了小厂实习来保底,但是很多小厂基本要求一周内给答复,中大厂就还在流程之中,所以很纠结小厂实习要不要去。 不知道你是否有这样的纠结,今天帅地将从 纯利益 的角度来分析一下,要不要去小厂实习。

    2023年04月15日
    浏览(29)
  • 软件测试面试高频30道面试题

    如果哪个测试经理在看我的文章,希望对面试者要微笑,不然面试结束,出门之后就一万个草泥马奔腾而过,其实面试者并不是希望你给他们什么,而是一种尊重,平等的谈话,不要高高在上感觉自己超牛逼一样,任何大牛都是从菜鸟起步的。当然,正在学习测试技术的人也

    2024年02月07日
    浏览(52)
  • ConcurrentHashMap 面试题 30 问

    ConcurrentHashMap 在 jdk1.7 中的结构: 在 jdk1.7 版本及其以下版本中, ConcurrentHashMap 的数据结构是由 Segments 数组 + HashEntry 数组 + 链表实现的 不同的是, ConcurrentHashMap 中的数组被分为大数组和小数组,大数组是 Segment ,小数组是 HashEntry , Segment 本身是基于 ReentrantLock 可重入锁来

    2024年02月09日
    浏览(70)
  • 面试题30天打卡-day23

    在 Spring 框架中,Bean 的生命周期分为以下阶段: 实例化:Spring 容器创建 Bean 实例。这可以通过构造函数实现或者使用工厂方法。 属性赋值:Spring 容器设置 Bean 的属性和依赖关系。可以使用 XML 配置文件或注解等方式进行配置。 初始化方法:如果 Bean 实现了 InitializingBean 接

    2024年02月03日
    浏览(42)
  • 面试题打卡30天-day28

    回答一: 在 Git 中, fork 命令是指将其他用户的代码仓库完全复制一份到当前用户自己的账户下,成为一个新的独立代码仓库。与此相对, clone 命令是指在本地将某个远程代码仓库中的代码克隆到本地,成为本地工作区的一个副本。 具体来说, fork 命令会在远程服务端(如

    2024年02月05日
    浏览(43)
  • 面试题30天打卡-day27

    消息队列是一种应用广泛的异步通信模型,可以解决分布式系统中不同组件之间的协调和通信问题。以下是一些常见的消息队列模型及其适用场景: 点对点模型(Point-to-Point Model):也被称为队列模型,消息生产者将消息发送到队列中,然后消息消费者从队列中获取消息并处

    2024年02月05日
    浏览(37)
  • 面试题30天打卡-day18

    单例是一种设计模式,应用该模式的类只会生成一个实例 ,单例模式保证了在程序的不同位置都可以且仅可以取到同一个对象实例,并提供一个访问它的全局访问点。 单列模式好处: 由于类只有一个实例,因此可以避免在多个地方创建多个实例,从而减少内存使用。 可以提

    2024年02月02日
    浏览(36)
  • 面试题30天打卡-day19

    TCP(Transmission Control Protocol)和UDP(User Datagram Protocol)是两种常用的传输层协议,两者的区别比较如下: TCP UDP 可靠性 可靠 不可靠 连接性 面向链接 无连接 报文 面向字节流 面向报文 效率 传输效率低 传输效率高 安全性 容易被攻击、安全性不如UDP 也会被攻击,相对TCP来说

    2024年02月02日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包