Java后端模拟面试 题集⑤

2024-06-01 03:36
文章标签 java 面试 模拟 题集

本文主要是介绍Java后端模拟面试 题集⑤,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.先作个自我介绍吧

面试官您好,我叫张睿超,来自湖南长沙,大学毕业于湖南农业大学,是一名智能科学与技术专业的统招一本本科生。今天主要过来面试贵公司的Java后端开发工程师岗位。

大学里面主修的课程是Java、Python、数字图像处理、JavaEE。

大学期间,英语获得6级460分,参加过华为云的比赛,获得了全国高校绿色计算系列大赛团体三等奖。

我熟悉的技术栈在简历上都写了,我自己认为自己的亮点在以下几点:能进行简单的JVM调优;有实际处理高并发问题的经验;熟悉MySQL的操作,了解数据库调优原理;熟悉Linux的基本操作。

我自学C#两周、听学校讲解Python的Django框架2周,都写出了简单的项目;半年时间研究出了一个图像加密算法,并发表为了毕业论文。Java学习了一个学期、自学了2个月,之后在校企合作的项目中做出了这两个Java项目。

领导过小组作出Django框架的项目,参与过校企合作的两个Java项目。

了解到贵公司的业务需求偏向于xxx,我正好擅长xxx,所以我来应聘贵公司的Java开发岗位。

(或者衔接)

了解到贵公司的业务需求偏向于xxx,我最近做了一个xx项目,正好做了xxx,您看需不需要作一个简单的项目介绍。

2.你们微服务是怎么划分的

我们微服务按业务来划分,包括智能调度模块、路线规划模块、运单/任务管理模块,还有其他微服务。

智能调度负责调度运单、取件任务、派件任务、延时派件任务。

延时和实时派件任务存在区别,是为了满足2小时内快递员上门取件的服务需要。比如现在是10点半,用户期望11到12点取件,就发送实时取件任务;用户期望13到14点取件,就发送延时取件任务。

路线规划负责网点管理、路线管理、时间优先路线规划、成本优先路线规划等。

我们的网点、路线都存储在Neo4j数据库中,Neo4j是用来存储图关系的非关系型数据库。

Neo4j种,节点存的是机构,分为三种标签:一级转运中心、二级转运中心和节点。

节点的属性包括:Neo4j自带的id、业务id、名称、电话、地址、坐标等。

关系存的是路线,属性包括自带id和成本。

时间优先的查询语句如下:

MATCH path = shortestPath((start:AGENCY) -[*..10]-> (end:AGENCY))
    WHERE start.bid = 123123 AND end.bid = 123456
    RETURN path

转为Java的API,用到了stream流等工具。

运单/任务管理模块就包括运单管理、运输任务管理、取件任务管理、派件任务管理等。

业务包括创建运单、司机入库等。

其他微服务有基础微服务、快递员微服务、司机微服务、订单微服务、范围微服务、支付微服务等等。

3.你用过RabbitMQ吗

4.登陆功能是你写的吗,登录功能是怎么实现的

是的。

比如微信小程序的登录,首先微信小程序准备好appid、appsecret、code和phoneCode发送给后端,后端将其中的appid、appsecret和code转发给微信接口进行校验处理,如果校验失败则返回异常的响应状态码,成功则返回200。

在成功的基础上,解析得到响应中对应用户标识的openid,然后查询数据库中是否存在该用户。如果有则返回用户信息,没有则创建。

然后再次调用微信接口,获取用户的手机号,拿这个手机号更新或新增用户的信息。

用户的信息处理完了之后,根据这些信息生成登录校验的token,再返回给前端。

之后前端每一次请求都带上token,后端校验这个token就可以处理业务了。

我们使用的身份校验的技术是JWT。

(后面就可以接上我上一篇文章Java后端模拟面试 题集④-CSDN博客的第3个问题“JWT了解过吗,有用过吗”的回答内容,打一套丝滑小连招~)

5.你们JWT令牌认证,加密是怎么处理的

我们的加密是采用的RSA加密模式。

JWT全名叫JSON Web Token,由三部分组成:

Header头,记录令牌类型、签名算法等。 例如:{"alg":"HS256","type":"JWT"}

Payload有效载荷,携带一些自定义信息、默认信息等。 例如:{"id":"1","username":"Tom"}

Signature签名,防止Token被篡改、确保安全性。将header、payload,加入指定秘钥,通过指定签名算法计算而来。
 

加密方法RSA就写在Header中。我们校验的就是加密后的第三部分。

6.你知道MySQL的常用索引有什么

按数据结构分类:

B+数索引、Hash索引、全文索引。

按物理存储分类:

聚簇索引、非聚簇索引(辅助索引、二级索引)。

按字段特性分类:

主键索引、唯一索引、普通索引、前缀索引。

按索引字段个数分类:

单列索引、联合索引(复合索引、组合索引)。

7.你数据库的表的设计是什么样子的,比如你负责的登录的表是什么样子的

因为登录业务比较独立,所以我们设计这个表的时候没有关系字段,更别说设计什么冗余字段。这个表的字段是这样的:

1.基本字段:

主键id

统一认证id auth_id

身份证号id_card_no

实名认证状态id_card_no_vertify 0未验证 1验证通过 2验证未通过 3异常状态

手机号phone

名称name

头像avatar

微信openID open_id

性别sex 1男 0女

生日birthday

其中要提一下的是这个统一认证id auth_id,这个是方便日后确定多个小程序、网站应用等端中同一用户的认证,类似于微信中的UnionId。只不过,这个auth_id是针对我们开发的程序的,UnionId是针对微信开发的平台的。

还可以提一下的是,我们用数字类型来存储日期,这样存储空间更小,并且可以用索引来提升查找性能。

存储时,用int(10)来存,这样存:

update sl_member
set birthday=UNIX_TIMESTAMP('年年年年-月月-日日 12:00:00')
where id=xxxx;

取时这样:

SELECT DATE_FORMAT(FROM_UNIXTIME(birthday), '%Y-%m-%d') AS hour
FROM sl_member;

2.辅助字段:

创建时间created

更新时间updated

同上birthday的存储方式,用数字类型来存储,占空间更小,利用索引效率更高。

存取就更简单了,不用转格式了。

 存:

update sl_member
set birthday=UNIX_TIMESTAMP('年年年年-月月-日日 时时:分分:秒秒')
where id=xxxx;

取:

SELECT FROM_UNIXTIME(birthday) AS hour
FROM sl_member;

关系字段和三种字段中冗余的部分没有。

8.物流信息单表是什么样的

9.Docker你用过吗,Docker怎么搭建的,有网络环境和无网络环境怎么搭建的

10.Spring Boot和SpringMVC的区别是什么

11.Spring Boot最主要的三个注解是哪些

12.项目中AOP用来干什么的呢

13.问一点Java基础,IO用过吗

14.有用到分布式锁吗

15.工作做了多久,为什么不做了

16.项目中有碰到过什么异常情况吗

17.我看你写了CSDN,写的是哪一块呢

18.数据库碰到过什么异常吗

19.有没有什么锁表的情况

20.切面具有几种消息通知,你用的是哪一种

21.SVM的原理说一下

22.看门狗的路由守卫是什么

23.Docker用的时候碰到过什么异常

这篇关于Java后端模拟面试 题集⑤的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/1019877

相关文章

Spring Boot中的路径变量示例详解

《SpringBoot中的路径变量示例详解》SpringBoot中PathVariable通过@PathVariable注解实现URL参数与方法参数绑定,支持多参数接收、类型转换、可选参数、默认值及... 目录一. 基本用法与参数映射1.路径定义2.参数绑定&nhttp://www.chinasem.cnbs

JAVA中安装多个JDK的方法

《JAVA中安装多个JDK的方法》文章介绍了在Windows系统上安装多个JDK版本的方法,包括下载、安装路径修改、环境变量配置(JAVA_HOME和Path),并说明如何通过调整JAVA_HOME在... 首先去oracle官网下载好两个版本不同的jdk(需要登录Oracle账号,没有可以免费注册)下载完

Spring StateMachine实现状态机使用示例详解

《SpringStateMachine实现状态机使用示例详解》本文介绍SpringStateMachine实现状态机的步骤,包括依赖导入、枚举定义、状态转移规则配置、上下文管理及服务调用示例,重点解... 目录什么是状态机使用示例什么是状态机状态机是计算机科学中的​​核心建模工具​​,用于描述对象在其生命

Spring Boot 结合 WxJava 实现文章上传微信公众号草稿箱与群发

《SpringBoot结合WxJava实现文章上传微信公众号草稿箱与群发》本文将详细介绍如何使用SpringBoot框架结合WxJava开发工具包,实现文章上传到微信公众号草稿箱以及群发功能,... 目录一、项目环境准备1.1 开发环境1.2 微信公众号准备二、Spring Boot 项目搭建2.1 创建

Java中Integer128陷阱

《Java中Integer128陷阱》本文主要介绍了Java中Integer与int的区别及装箱拆箱机制,重点指出-128至127范围内的Integer值会复用缓存对象,导致==比较结果为true,下... 目录一、Integer和int的联系1.1 Integer和int的区别1.2 Integer和in

SpringSecurity整合redission序列化问题小结(最新整理)

《SpringSecurity整合redission序列化问题小结(最新整理)》文章详解SpringSecurity整合Redisson时的序列化问题,指出需排除官方Jackson依赖,通过自定义反序... 目录1. 前言2. Redission配置2.1 RedissonProperties2.2 Red

IntelliJ IDEA2025创建SpringBoot项目的实现步骤

《IntelliJIDEA2025创建SpringBoot项目的实现步骤》本文主要介绍了IntelliJIDEA2025创建SpringBoot项目的实现步骤,文中通过示例代码介绍的非常详细,对大家... 目录一、创建 Spring Boot 项目1. 新建项目2. 基础配置3. 选择依赖4. 生成项目5.

JSONArray在Java中的应用操作实例

《JSONArray在Java中的应用操作实例》JSONArray是org.json库用于处理JSON数组的类,可将Java对象(Map/List)转换为JSON格式,提供增删改查等操作,适用于前后端... 目录1. jsONArray定义与功能1.1 JSONArray概念阐释1.1.1 什么是JSONA

Java JDK1.8 安装和环境配置教程详解

《JavaJDK1.8安装和环境配置教程详解》文章简要介绍了JDK1.8的安装流程,包括官网下载对应系统版本、安装时选择非系统盘路径、配置JAVA_HOME、CLASSPATH和Path环境变量,... 目录1.下载JDK2.安装JDK3.配置环境变量4.检验JDK官网下载地址:Java Downloads

Spring boot整合dubbo+zookeeper的详细过程

《Springboot整合dubbo+zookeeper的详细过程》本文讲解SpringBoot整合Dubbo与Zookeeper实现API、Provider、Consumer模式,包含依赖配置、... 目录Spring boot整合dubbo+zookeeper1.创建父工程2.父工程引入依赖3.创建ap