比亚迪面试,全程八股!

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
简介: 比亚迪面试,全程八股!

比亚迪最近几年凭借着其新能源汽车的板块大火了一把,无论是名声还是股价都涨得嘎嘎猛,但是迪子招聘编程技术岗位的人员却有两个特点:

  1. 面试难度低,对学校有一定的要求。
  2. 薪资给的和面试难度一样低。

但不管怎么,迪子也算是国内知名公司了,所以今天咱们来看看,他的校招 Java 技术岗的面试题都问了哪些知识点?面试题目如下:
image.png

1.int和Integer有什么区别?

参考答案:int 和 Integer 都是 Java 中用于表示整数的数据类型,然而他们有以下 6 点不同:

  1. 数据类型不同:int 是基础数据类型,而 Integer 是包装数据类型;
  2. 默认值不同:int 的默认值是 0,而 Integer 的默认值是 null;
  3. 内存中存储的方式不同:int 在内存中直接存储的是数据值,而 Integer 实际存储的是对象引用,当 new 一个 Integer 时实际上是生成一个指针指向此对象;
  4. 实例化方式不同:Integer 必须实例化才可以使用,而 int 不需要;
  5. 变量的比较方式不同:int 可以使用 == 来对比两个变量是否相等,而 Integer 一定要使用 equals 来比较两个变量是否相等;
  6. 泛型使用不同:Integer 能用于泛型定义,而 int 类型却不行。

    2.什么时候用 int 和 Integer?

    参考答案:int 和 Integer 的典型使用场景如下:
  • Integer 典型使用场景:在 Spring Boot 接收参数的时候,通常会使用 Integer 而非 int,因为 Integer 的默认值是 null,而 int 的默认值是 0。如果接收参数使用 int 的话,那么前端如果忘记传递此参数,程序就会报错(提示 500 内部错误)。因为前端不传参是 null,null 不能被强转为 0,所以使用 int 就会报错。但如果使用的是 Integer 类型,则没有这个问题,程序也不会报错,所以 Spring Boot 中 Controller 接收参数时,通常会使用 Integer。
  • int 典型使用场景:int 常用于定义类的属性类型,因为属性类型,不会 int 不会被赋值为 null(编译器会报错),所以这种场景下,使用占用资源更少的 int 类型,程序的执行效率会更高。

    3.HashMap 底层实现?

    HashMap 在 JDK 1.7 和 JDK 1.8 的底层实现是不一样的。

  • 在 JDK 1.7 中,HashMap 使用的是数组 + 链表实现的。

  • 而 JDK 1.8 中使用的是数组 + 链表或红黑树实现的

HashMap 在 JDK 1.7 中的实现如下图所示:
image.png
HashMap 在 JDK 1.8 中的实现如下图所示:

4.HashMap 如何取值和存值?

参考答案:HashMap 使用 put(key,value) 方法进行存值操作,而存值操作的关键是根据 put 中的 key 的哈希值来确定存储的位置,如果存储的位置为 null,则直接存储此键值对;如果存储的位置有值,则使用链地址法来解决哈希冲突,找到新的位置进行存储。

HashMap 取值的方法是 get(key),它主要是通过 key 的哈希值,找到相应的位置,然后通过 key 进行判断,从而获取到存储的 value 信息。

5.SpringBoot 如何修改端口号?

参考答案:在 Spring Boot 中的配置文件中设置“server.port=xxx”就可以修改端口号了。

6.如何修改 Tomcat 版本号?

参考答案:在 pom.xml 中添加 tomcat-embed-core 依赖就可以修改 Spring Boot 中内置的 Tomcat 版本号了,如下图所示:
image.png
但需要注意的是 Spring Boot 和 Tomcat 的版本是有对应关系的,要去 maven 上查询对应的版本关系才能正确的修改内置的 Tomcat 版本号,如下图所示:
image.png

7.SpringBoot如何配置Redis?

参考答案:首先在 Spring Boot 中添加 Redis 的框架依赖,然后在配置文件中使用“spring.redis.xxx”来设置 Redis 的相关属性,例如以下这些:

spring:
  redis:
    # Redis 服务器地址
    host: 127.0.0.1
    # Redis 端口号
    port: 6379
    # Redis服务器连接密码,默认为空,若有设置按设置的来
    password:
    jedis:
      pool:
        # 连接池最大连接数,若为负数则表示没有任何限制
        max-active: 8
        # 连接池最大阻塞等待时间,若为负数则表示没有任何限制
        max-wait: -1
        # 连接池中的最大空闲连接
        max-idle: 8

8.MySQL 左连接和右连接有什么区别?

参考答案:在 MySQL 中,左连接(Left Join)和右连接(Right Join)是两种用来进行联表查询的 SQL 语句,它们的区别如下:

  1. 左连接:左连接是以左边的表格(也称为左表)为基础,将左表中的所有记录和右表中匹配的记录联接起来。即使右表中没有匹配的记录,左连接仍然会返回左表中的记录。如果右表中有多条匹配记录,则会将所有匹配记录返回。左连接使用 LEFT JOIN 关键字来表示。
  2. 右连接:右连接是以右边的表格(也称为右表)为基础,将右表中的所有记录和左表中匹配的记录联接起来。即使左表中没有匹配的记录,右连接仍然会返回右表中的记录。如果左表中有多条匹配记录,则会将所有匹配记录返回。右连接使用 RIGHT JOIN 关键字来表示。

例如以下图片,左连接查询的结果如下图所示(红色部分为查询到的数据):
image.png
右连接如下图红色部分:
image.png

9.内连接没有匹配上会怎么?

参考连接:内连接使用的是 inner join 关键字来实现的,它会匹配到两张表的公共部分,如下图所示:
image.png
所以,如果内连接没有匹配上数据,则查询不到此数据。

小结

以上是比亚迪的面试题,但并不是说比亚迪的面试难度一定只有这么低。因为面试的难度通常是根据应聘者的技术水平决定的:如果应聘者的能力一般,那么通常面试官就会问一下简单的问题,然后早早结束面试;但如果应聘者的能力比较好,面试官通常会问的比较难,以此来探寻应聘者的技术能力边界,从而为后续的定薪、定岗来做准备,所以大家如果遇到迪子的面试也不要大意。

本文已收录到我的面试小站 www.javacn.site,其中包含的内容有:Redis、JVM、并发、并发、MySQL、Spring、Spring MVC、Spring Boot、Spring Cloud、MyBatis、设计模式、消息队列等模块。

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
3月前
|
消息中间件 NoSQL Java
Java必备面试题(100题)-八股篇
主要包括一些高频的Java面试的八股文面试题和答案
|
前端开发 NoSQL Java
货拉拉面试:全程八股!被问麻了
货拉拉面试:全程八股!被问麻了
76 1
|
存储 算法 前端开发
面试官:hold住了八股和算法,扫码登录应该怎么实现你总不会了吧
真实面试小场景: 经过八股和算法的交锋,老三松了口气,都hold住了。只见面试官微微一笑,“其实,我真正想问的是……你觉得扫码登录应该怎么实现。” 老三:“啊……这个,哦……那个,这个就这么,然后……额……嗯……” 面试官:“了解了,回去等通知吧。” 完…… 好了,铺垫结束,进入我们今天的主题,扫码登录功能该如何实现?
|
3月前
|
存储 Java
【IO面试题 四】、介绍一下Java的序列化与反序列化
Java的序列化与反序列化允许对象通过实现Serializable接口转换成字节序列并存储或传输,之后可以通过ObjectInputStream和ObjectOutputStream的方法将这些字节序列恢复成对象。
|
30天前
|
算法 Java 数据中心
探讨面试常见问题雪花算法、时钟回拨问题,java中优雅的实现方式
【10月更文挑战第2天】在大数据量系统中,分布式ID生成是一个关键问题。为了保证在分布式环境下生成的ID唯一、有序且高效,业界提出了多种解决方案,其中雪花算法(Snowflake Algorithm)是一种广泛应用的分布式ID生成算法。本文将详细介绍雪花算法的原理、实现及其处理时钟回拨问题的方法,并提供Java代码示例。
59 2
|
1月前
|
JSON 安全 前端开发
第二次面试总结 - 宏汉科技 - Java后端开发
本文是作者对宏汉科技Java后端开发岗位的第二次面试总结,面试结果不理想,主要原因是Java基础知识掌握不牢固,文章详细列出了面试中被问到的技术问题及答案,包括字符串相关函数、抽象类与接口的区别、Java创建线程池的方式、回调函数、函数式接口、反射以及Java中的集合等。
27 0
|
3月前
|
Java C++
【Java基础面试十七】、Java为什么是单继承,为什么不能多继承?
这篇文章讨论了Java单继承的设计原因,指出Java不支持多继承主要是为了避免方法名冲突等混淆问题,尽管Java类不能直接继承多个父类,但可以通过接口和继承链实现类似多继承的效果。
【Java基础面试十七】、Java为什么是单继承,为什么不能多继承?
|
3月前
|
存储 安全 Java
这些年背过的面试题——Java基础及面试题篇
本文是技术人面试系列Java基础及面试题篇,面试中关于Java基础及面试题都需要了解哪些内容?一文带你详细了解,欢迎收藏!
|
3月前
|
XML 存储 JSON
【IO面试题 六】、 除了Java自带的序列化之外,你还了解哪些序列化工具?
除了Java自带的序列化,常见的序列化工具还包括JSON(如jackson、gson、fastjson)、Protobuf、Thrift和Avro,各具特点,适用于不同的应用场景和性能需求。
|
3月前
|
Java
【Java基础面试三十七】、说一说Java的异常机制
这篇文章介绍了Java异常机制的三个主要方面:异常处理(使用try、catch、finally语句)、抛出异常(使用throw和throws关键字)、以及异常跟踪栈(异常传播和程序终止时的栈信息输出)。