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项目部署命令java -jar的各种参数及作用详解

《SpringBoot项目部署命令java-jar的各种参数及作用详解》:本文主要介绍SpringBoot项目部署命令java-jar的各种参数及作用的相关资料,包括设置内存大小、垃圾回收... 目录前言一、基础命令结构二、常见的 Java 命令参数1. 设置内存大小2. 配置垃圾回收器3. 配置线程栈大小

SpringBoot实现微信小程序支付功能

《SpringBoot实现微信小程序支付功能》小程序支付功能已成为众多应用的核心需求之一,本文主要介绍了SpringBoot实现微信小程序支付功能,文中通过示例代码介绍的非常详细,对大家的学习或者工作... 目录一、引言二、准备工作(一)微信支付商户平台配置(二)Spring Boot项目搭建(三)配置文件

解决SpringBoot启动报错:Failed to load property source from location 'classpath:/application.yml'

《解决SpringBoot启动报错:Failedtoloadpropertysourcefromlocationclasspath:/application.yml问题》这篇文章主要介绍... 目录在启动SpringBoot项目时报如下错误原因可能是1.yml中语法错误2.yml文件格式是GBK总结在启动S

Spring中配置ContextLoaderListener方式

《Spring中配置ContextLoaderListener方式》:本文主要介绍Spring中配置ContextLoaderListener方式,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录Spring中配置ContextLoaderLishttp://www.chinasem.cntene

java实现延迟/超时/定时问题

《java实现延迟/超时/定时问题》:本文主要介绍java实现延迟/超时/定时问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Java实现延迟/超时/定时java 每间隔5秒执行一次,一共执行5次然后结束scheduleAtFixedRate 和 schedu

Java Optional避免空指针异常的实现

《JavaOptional避免空指针异常的实现》空指针异常一直是困扰开发者的常见问题之一,本文主要介绍了JavaOptional避免空指针异常的实现,帮助开发者编写更健壮、可读性更高的代码,减少因... 目录一、Optional 概述二、Optional 的创建三、Optional 的常用方法四、Optio

Spring Boot项目中结合MyBatis实现MySQL的自动主从切换功能

《SpringBoot项目中结合MyBatis实现MySQL的自动主从切换功能》:本文主要介绍SpringBoot项目中结合MyBatis实现MySQL的自动主从切换功能,本文分步骤给大家介绍的... 目录原理解析1. mysql主从复制(Master-Slave Replication)2. 读写分离3.

idea maven编译报错Java heap space的解决方法

《ideamaven编译报错Javaheapspace的解决方法》这篇文章主要为大家详细介绍了ideamaven编译报错Javaheapspace的相关解决方法,文中的示例代码讲解详细,感兴趣的... 目录1.增加 Maven 编译的堆内存2. 增加 IntelliJ IDEA 的堆内存3. 优化 Mave

Java String字符串的常用使用方法

《JavaString字符串的常用使用方法》String是JDK提供的一个类,是引用类型,并不是基本的数据类型,String用于字符串操作,在之前学习c语言的时候,对于一些字符串,会初始化字符数组表... 目录一、什么是String二、如何定义一个String1. 用双引号定义2. 通过构造函数定义三、St

springboot filter实现请求响应全链路拦截

《springbootfilter实现请求响应全链路拦截》这篇文章主要为大家详细介绍了SpringBoot如何结合Filter同时拦截请求和响应,从而实现​​日志采集自动化,感兴趣的小伙伴可以跟随小... 目录一、为什么你需要这个过滤器?​​​二、核心实现:一个Filter搞定双向数据流​​​​三、完整代码