Java后端模拟面试 题集⑤

news2025/1/21 22:07:16

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用的时候碰到过什么异常

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

前端Vue小兔鲜儿电商项目实战Day03

一、Home - 整体结构搭建和分类实现 1. 页面结构 ①按照结构新增5个组件&#xff0c;准备最简单的模板&#xff0c;分别在Home模块的入口组件中引入 src/views/Home/components/ HomeCategory.vue HomeBanner.vue HomeNew.vue HomeHot.vue HomeProduct.vue <script …

你认识nginx吗,nginx是做什么的,nginx可以做什么 --1)nginx介绍

一.Nginx 介绍 Nginx&#xff08;发音同engine x&#xff09;是一个异步框架的 Web 服务器&#xff0c;也可以用作反向代理&#xff0c;负载平衡器 和 HTTP 缓存。该软件由 Igor Sysoev 创建&#xff0c;并于2004年首次公开发布。同名公司成立于2011年&#xff0c;以提供支持。…

CraftCMS ConditionsController.php 代码执行漏洞(CVE-2023-41892)

0x01 产品简介 Craft CMS是一个开源的内容管理系统,它专注于用户友好的内容创建过程,逻辑清晰明了,是一个高度自由,高度自定义设计的平台吗,可以用来创建个人或企业网站也可以搭建企业级电子商务系统。 0x02 漏洞概述 Craft CMS在4.4.15版本之前存在远程代码执行漏洞,…

Java——String类

1.String常用方法 1.1三种常用构造方法 1. String s1"hello";2. String s2new String("world");3. char []str{h,e,l,l,o, ,w,o,r,l,d};String s3new String(str); 1.2String对象的比较 比较 对于内置类型来说&#xff0c;“”比较…

【头歌】JSP入门、基于MVC模式的用户登录、JSP基础之网站用户管理

目录 JSP入门 第1关&#xff1a;搭建你的第一个Web服务器 第3关&#xff1a;JSP基础测试题&#xff08;一&#xff09; 第4关&#xff1a;JSP基础&#xff08;二&#xff09; 第5关&#xff1a;JSP基础测试题&#xff08;二&#xff09; 基于MVC模式的用户登录 第1关&…

Gbase 国产数据库

参考&#xff1a;参考&#xff1a; 5分钟学会Linux环境GBase 8t安装和部署 - 光洋山 - twt企业IT交流平台 (talkwithtrend.com)https://www.talkwithtrend.com/Article/197237 视频 GBase 8s快速入门-功能简介与演示-大数据教程-腾讯课堂 (qq.com)https://ke.qq.com/course/…

【数据结构】二叉树运用及相关例题

文章目录 前言查第K层的节点个数判断该二叉树是否为完全二叉树例题一 - Leetcode - 226反转二叉树例题一 - Leetcode - 110平衡二叉树 前言 在笔者的前几篇篇博客中介绍了二叉树的基本概念及基本实现方法&#xff0c;有兴趣的朋友自己移步看看。 这篇文章主要介绍一下二叉树的…

C# PaddleOCR 单字识别效果

C# PaddleOCR 单字识别效果 效果 说明 根据《百度办公文档识别C离线SDKV1.2用户接入文档.pdf》&#xff0c;使用C封装DLL&#xff0c;C#调用。 背景 为使客户、第三方开发者等能够更快速、方便的接入使用百度办公文档识别 SDK、促进百度 OCR产品赋能更多客户&#xff0c;特设…

Linux开发工具(个人使用)

Linux开发工具 1.Linux yum软件包管理器1.1Linux安装程序有三种方式1.2注意事项1.3如何查看&#xff0c;安装&#xff0c;卸载软件包1.3.1查看软件包1.3.2安装软件包1.3.3卸载软件 2.Linux vim编辑器2.1vim的基本操作2.2vim正常模式命令集2.3vim底行模式命令集2.4vim配置 3.Lin…

灾备方案中虚拟化平台元数据备份技术应用

首先需要介绍下元数据是什么&#xff1f; 元数据&#xff08;Metadata&#xff09;是一个重要的概念&#xff0c;它描述了数据的数据&#xff0c;也就是说&#xff0c;元数据提供了关于数据属性的信息。这些属性可能包括数据的存储位置、历史数据、资源查找、文件记录等。 元…

【MySQL访问】

文章目录 一、C远程连接到MySQLmysql_init()函数mysql_real_connect&#xff08;&#xff09;函数实战案例 二、处理查询select的细节mysql_store_result()函数获取结果行和列获取select结果获取行内容获取列属性 三、MySQL图形化界面连接 关于动态链接&#xff0c;请看这篇文章…

ARM32开发——第一盏灯

&#x1f3ac; 秋野酱&#xff1a;《个人主页》 &#x1f525; 个人专栏:《Java专栏》《Python专栏》 ⛺️心若有所向往,何惧道阻且长 文章目录 开发流程需求分析项目新建代码编写GPIO初始化 程序编译程序烧录烧录扩展&#xff08;熟悉&#xff09;官方烧录器烧录&#xff08;…

C++入门——类和对象【3】(6)

前言 本节是C类和对象中的最后一节&#xff0c;学完本节内容并且能够掌握之前所学的所有内容的话&#xff0c;C就可以说是入门了&#xff0c;那我们废话不多说&#xff0c;正式进入今天的学习 1. 再谈构造函数 1.1 引入 我们在栈的背景下来看 栈的代码&#xff1a; ​type…

数据结构的快速排序(c语言版)

一.快速排序的概念 1.快排的基本概念 快速排序是一种常用的排序算法,它是基于分治策略的一种高效排序算法。它的基本思想如下: 从数列中挑出一个元素作为基准(pivot)。将所有小于基准值的元素放在基准前面,所有大于基准值的元素放在基准后面。这个过程称为分区(partition)操作…

开发语言Java+前端框架Vue+后端框架SpringBoot开发的ADR药物不良反应监测系统源码 系统有哪些优势?

开发语言Java前端框架Vue后端框架SpringBoot开发的ADR药物不良反应监测系统源码 系统有哪些优势&#xff1f; ADR药物不良反应监测系统具有多个显著的优势&#xff0c;这些优势主要体现在以下几个方面&#xff1a; 一、提高监测效率与准确性&#xff1a; 通过自动化的数据收集…

Linux自动挂载服务autofs讲解

1.产生原因 2.配置文件讲解 总结&#xff1a;配置客户端&#xff0c;先构思好要挂载的目录如&#xff1a;/abc/cb 然后在autofs.master中编辑&#xff1a; /abc&#xff08;要挂载的主目录&#xff09; /etc/qwe&#xff08;在这个文件里去找要挂载的副目录&#xff0c;这个名…

Codeforces Round 949 (Div. 2) (A~C)

1981A - Turtle and Piggy Are Playing a Game 贪心&#xff0c;每次取x 2&#xff0c;求最大分数 // Problem: B. Turtle and an Infinite Sequence // Contest: Codeforces - Codeforces Round 949 (Div. 2) // URL: https://codeforces.com/contest/1981/problem/B // Me…

Java项目对接redis,客户端是选Redisson、Lettuce还是Jedis?

JAVA项目对接redis&#xff0c;客户端是选Redisson、Lettuce还是Jedis&#xff1f; 一、客户端简介1. Jedis介绍2. Lettuce介绍3. Redisson介绍 二、横向对比三、选型说明 在实际的项目开发中&#xff0c;对于一个需要对接Redis的项目来说&#xff0c;就面临着选择合适的Redis客…

G4 - 可控手势生成 CGAN

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 目录 代码总结与心得 代码 关于CGAN的原理上节已经讲过&#xff0c;这次主要是编写代码加载上节训练后的模型来进行指定条件的生成 图像的生成其实只需要使用…

unity2020打包webGL时卡进程问题

我使用的2020.3.0f1c1&#xff0c;打包发布WEB版的时候会一直卡到asm2wasm.exe这个进程里&#xff0c;而且CPU占用率90%以上。 即使是打包一个新建项目的空场景也是同样的问题&#xff0c;我尝试过一直卡在这里会如何&#xff0c;结果还真打包成功了。只是打包一个空场景需要20…