首次面试经历(忘指导)当我在简历上写了苍穹外卖,瑞吉外卖时……

🌈键盘敲烂,年薪30万🌈

个人简介:

大三在校生,二本院校,专业:信息管理与信息系统

面试岗位:

java开发实习生

投”简历“

        临近大三寒假,很早就有实习想法的我,对12月做了一下规划,原本计划12月中旬着手为实习做准备,但在这之前,我打开招聘网站随便投递了几家公司,我是这样操作的:先是投了下简历,然后附上一句话,你好,贵公司有在招聘寒假实习生吗?(浪潮给我秒拒了>_<)有几个给了答复,其中有一个让我做笔试,笔试过了就可以约面试,实习薪资第一个月2500-99999,懂的都懂,这样的机会我指定不能放过啊,于是就有了我为期一天的准备。

面试流程:

        在这说一下,笔试它给了一个项目,三天之内完成一个功能模块的开发,就是标准的CRUD,有手就行,通过笔试之后hr给我的消息是第二天10点腾讯会议面试。

        我9点40进的会议,面试官9点55进来的,刚开始你真别说,声音很像黑马的李老师,面试官进来直奔主题,不多废话,我原本就很紧张,没有过多交流让我更紧张。

        9点55开始的,10点08就结束了。


面试官:

xxx是吧,自我介绍一下、

我:

我是一名大三在校生,信息管理与信息系统专业,自学的java后端相关知识,想找一份与java开发的实习工作。

面试官:

嗯,有做过什么项目吗?

我:

有,跟着B站黑马视频做过瑞吉外卖,苍穹外卖。

面试官:

奥,外卖项目是吧,说一下项目中主要实现的功能。

我:

这里我说的很别扭,什么都没说出来,最后说了句项目中一些模块的功能开发都实现了一遍。

(其实面试之前应该对项目进行总结的,把面试官引导到你准备的问题上来,这里我啥也没说,把发挥空间留给了面试官)

面试官:

支付功能有没有???

我:

这部分功能没有实现,就比如苍穹外卖吧,它是微信小程序端的一个项目,它的支付功能需要申请商户号,支付成功后,微信服务器会调用后端服务器的一个paysuccess方法,我是自己手动修改数据库,模拟实现了一下订单支付。

面试官:

项目中有套餐模块是吧,我:对

面试官:

那如果套餐库存为0或者套餐下架业务逻辑是什么样呢

我:

套餐首先会关联菜品,当菜品处于起售的时候该套餐不允许下架,对于库存我的项目中好像没有涉及,(其实是有的)

面后整理的回答:

套餐库存为0的业务逻辑:

  1. 下单失败: 当用户下单时,系统可以检查套餐的库存,如果库存为0,则拒绝生成订单,返回给用户相应的提示,如“库存不足”或“该套餐已售罄”。

套餐下架的业务逻辑:

  1. 阻止下单: 当套餐下架时,用户下单时不会查询到已下架的套餐。

  2. 下架套餐: 关联菜品的套餐不能被下架

面试官:

如何保证操作多张表的时候数据一致性。

我:

操作多张表的时候,一般会在service层的方法上加上@transactional注解,当发生异常的时候,事务会回滚。

面试官:

什么情况可能导致事务异常??

我:

嗯,我想一下,如果程序抛异常了,就会导致事务异常,其他想不起来了。

面后整理的回答:

  1. 数据库连接问题: 如果在事务执行期间数据库连接发生问题,比如连接中断或数据库不可用,事务可能会失败。

  2. 违反数据库约束: 当尝试向数据库中插入、更新或删除数据时,如果违反了数据库的约束条件,如唯一性约束、外键约束等,事务将失败。

  3. 死锁: 当多个事务相互等待对方释放锁资源时,可能发生死锁。如果系统无法解决死锁,某些事务将被终止,导致异常。

  4. 超时: 事务执行时间超过了系统设置的最大时间限制,可能会导致事务异常。这通常是为了避免长时间运行的事务阻塞系统。

  5. 程序错误: 编程错误可能导致事务异常。例如,在事务中执行的代码中可能包含了错误,或者事务在执行期间遇到了意外情况。

  6. 并发问题: 在多用户并发访问的环境中,如果不正确地处理并发控制,可能会导致事务异常,如丢失更新、脏读等问题。

  7. 资源耗尽: 如果事务在执行期间请求的资源(如内存、文件句柄等)超出了系统的可用资源,可能会导致事务异常。

  8. 中断操作: 在事务执行期间,如果操作系统或硬件发生故障,或者系统被强制关闭,事务可能无法正常完成。

面试官:

springcloud有没有学过?

我:

没有,下一步正打算学springcloud

面试官:

springboot中哪里用到了反射机制

我:

(当时已潮)嗯嗯,(想了半天)能不能给点提示,我对反射这一块有点懵

面试官:

反射有没有了解过

我:

反射就是通过类的字节码文件操作里面的方法。

面试官:

哪springboot中哪里用打了反射

我:

嗷嗷,我想到一个,当bean属性注入的时候,一般使用setter注入,或者构造器注入,之后可以加@data注解体哦国内set方法,这里用到了暴力反射。

面试后整理回答:

依赖注入(Dependency Injection): Spring Boot 使用反射来实现依赖注入。在你的应用程序中,你可以使用 @Autowired 注解来注入依赖关系。Spring 通过反射来检查和设置注入的属性或构造函数参数。

组件扫描: Spring Boot 通过扫描包路径来发现和注册组件(例如,@Controller@Service@Repository等)。这涉及到使用反射来检查类的注解和创建相应的对象。

AOP面向切面编程: Spring Boot 使用 AOP 实现一些横切关注点,例如事务管理、日志记录等。AOP 在运行时通过代理生成机制,使用了反射来创建代理对象,并在方法执行前后织入横切逻辑。

动态代理: Spring Boot 中的一些特性,例如缓存、事务管理等,使用了动态代理。动态代理是通过反射在运行时创建代理对象的一种机制。

数据绑定: Spring Boot 中使用了数据绑定来将外部配置文件中的属性值绑定到 Java 对象上。这个过程中涉及到通过反射设置对象的字段。

BeanPostProcessor: Spring 框架中有一些接口,如 BeanPostProcessor,允许在 bean 初始化前后进行处理。这涉及到使用反射来检查和修改 bean 的属性。

面试官:

hashtable与hashmap的区别

我:

(答得很臭)

hashtable和hashmap主要的别就是线程安全不安全,hashtable允许有null值,而hashmap,(忘了hashmap的null能不能有了,然后面试官接着就问了下一个问题)

整理:

  1. 线程安全性:

    • HashMap 是非线程安全的。多个线程可以同时访问 HashMap,但在多线程环境下,可能需要额外的同步措施来确保线程安全。
    • Hashtable 是线程安全的。所有的方法都是同步的,这意味着在多线程环境下,多个线程可以安全地访问 Hashtable 而不需要额外的同步手段。然而,这也导致了在性能上的一些损耗。
  2. 性能:

    • 由于 Hashtable 的所有方法都是同步的,因此在单线程环境下的性能可能比 HashMap 差。
    • HashMap 是非同步的,因此在单线程环境下性能更好。在许多单线程的应用中,HashMap 往往是更好的选择。
  3. 允许null键值:

    • HashMap 允许键和值都为 null
    • Hashtable 不允许键和值为 null,如果尝试插入 null 键或值,会抛出 NullPointerException
  4. 继承关系:

    • HashMap 继承自 AbstractMap 类,实现了 Map 接口。
    • Hashtable 继承自 Dictionary 类,实现了 Map 接口。
  5. 迭代器:

    • HashMap 的迭代器是快速失败的。在迭代过程中,如果有其他线程修改了 HashMap 的结构(增加或删除元素),会抛出 ConcurrentModificationException 异常。
    • Hashtable 的迭代器不是快速失败的。由于所有方法都是同步的,因此在迭代时不会发生结构上的改变。

面试官:

那如何兼顾性能和线程安全呢?

我:

使用hashmap加synchronized关键字(直接凉凉~~)下面就是我的胡言乱语时间……

整理:

  1. 选择合适的集合类型:有些集合类型天生是线程安全的,例如ConcurrentHashMap,而有些则不是,如HashMap。如果你需要线程安全性,选择相应的集合类型是首要考虑。

  2. 使用不可变集合: 不可变集合是线程安全的,因为它们在创建后不能被修改。在多线程环境中,使用不可变集合可以避免许多线程安全性问题。

面试官:

git有没有用过  我:有,一直在用

面试官:

如何解决git中的冲突问题

先pull拉下来,然后合并,然后提交(答的也很臭)

整理:

    获取最新代码:

git pull origin master

    查看那些文件冲突

git status

    打开冲突文件: 打开包含冲突的文件,你会看到类似如下的标记:   

<<<<<<< HEAD
// Your changes
=======
// Incoming changes
>>>>>>> branch_name

    手动修改冲突文件:编辑文件,根据需要选择保留或合并修改。删除冲突标记和不需要的代码,留下你需要的变更。

    add 到本地仓库

git add path/to/conflicted_file

    merge合并文件

git merge -continue

    commit push

git commit -m "xx"
git push origin master

面试官:

好,你还有社么问题吗

我:

有点紧张,第一次面试,不知道答得怎么样

面试官:

人事在一到两周后会给你消息,(溜了~~)

我忘了和它说拜拜了~~

总结:

第一次面试时间很短,收获也一般吧,就感觉自己的技术还是不到位

springboot还是不行,原理,用到的技术都不熟练。

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

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

相关文章

一篇文章了解JDK的前世今生

我们每天都在开发Java,每天都在使用JDK,那么我们了解JDK的发展史吗,这篇文章将带你深入了解JDK的发展史。 JDK(Java Development Kit)是Java开发者工具包,是用于编写Java程序和运行Java程序的软件开发工具集。自从1995年Java语言首次发布以来,JDK已经经历了数十年的发展…

python打开相机,用鼠标左键框选矩形区域,支持一次框选多个矩形区域,通过鼠标右标清除上一次画的矩形。

方案一 import cv2# Global variables rectangles [] current_rectangle [] drawing False# Mouse callback function def mouse_callback(event, x, y, flags, param):global rectangles, current_rectangle, drawingif event cv2.EVENT_LBUTTONDOWN:drawing Truecurren…

C语言——常用库函数

C语言——常用库函数 memcmp int my_memcmp(char* str1,char* str2,int num) {while(num--){if(*str1>*str2){return 1;}else if(*str1<*str2){return -1;}else{str1;str2;}}return 0; }memcpy void* my_memcpy(void *str1,void *str2,int size) {int *p1str1;int *p2…

Linux数据库Mysql增删改查

从安装数据库到增删改查 apt install mariadb-serverUndefined 安装好后初始化 mysql_secure_installationUndefined 查 查询现有的库 show databases;SQL 进入库 use mysql;Perl 查询表 show tables;SQL 查询表结构 desc mysql;SQL 查询表内容 select * from my…

深度学习TensorFlow2基础知识学习后半部分

介绍几个重要操作&#xff1a; 1.范数 a tf.fill([1,2], value2.) b tf.norm(a)# 二范数#第二种计算方法 # 计算验证 a tf.square(a) log("a的平方:", a) a tf.reduce_sum(a) log("a平方后的和:", a) b tf.sqrt(a) log("a平方和后开根号:"…

NVIDIA与 Sparkfun 的合作伙伴在 Hackster.io 上发起了人工智能创新挑战赛,喊你来参加!

NVIDIA与 Sparkfun 的合作伙伴在 Hackster.io 上发起了人工智能创新挑战赛&#xff0c;喊你来参加&#xff01; 本次竞赛的目标旨在吸引开发者社区在 NVIDIA Jetson Orin 平台上为边缘构建生成式 AI 应用程序和模型&#xff0c;希望通过本次比赛提高人们对新 Jetson 生成式 AI…

Python微信公众号批量发布文章问题记录,调用api接口发草稿箱编码有问题

1、accesstoken获取方法 def get_access_token():url https://api.weixin.qq.com/cgi-bin/token?grant_typeclient_credential&appid{}&secret{}.format(*****************, ***********)response requests.get(url)res_html response.json()access_token res_ht…

四元数,欧拉角,旋转矩阵,旋转向量

四元数&#xff0c;旋转矩阵&#xff0c;旋转向量&#xff0c;欧拉角 一、欧拉角 1、欧拉角是表达旋转的最简单的一种方式&#xff0c;形式上它是一个三维向量&#xff0c;其值分别代表物体绕坐标系三个轴(x,y,z轴&#xff09;的旋转角度&#xff0c;默认旋转正向为逆坐标轴逆…

C#winform上下班打卡系统Demo

C# winform上下班打卡系统Demo 系统效果如图所示 7个label控件(lblUsername、lblLoggedInEmployeeId、lab_IP、lblCheckOutTime、lblCheckInTime、lab_starttime、lab_endtime)、3个按钮、1个dataGridView控件、2个groupBox控件 C#代码实现 using System; using System.Dat…

Java零基础——Elasticsearch篇

1.Elasticsearch简介 Elasticsearch是一个基于Lucene的一个开源的分布式、RESTful 风格的搜索和数据分析引擎。Elasticsearch是用Java语言开发的&#xff0c;并作为Apache许可条款下的开放源码发布&#xff0c;是一种流行的企业级搜索引擎。Elasticsearch用于云计算中&#xf…

【Ambari】Python调用Rest API 获取YARN HA状态信息并发送钉钉告警

&#x1f984; 个人主页——&#x1f390;开着拖拉机回家_Linux,大数据运维-CSDN博客 &#x1f390;✨&#x1f341; &#x1fa81;&#x1f341;&#x1fa81;&#x1f341;&#x1fa81;&#x1f341;&#x1fa81;&#x1f341; &#x1fa81;&#x1f341;&#x1fa81;&am…

二层交换原理

二层交换设备工作在OSI模型的第二层&#xff0c;即数据链路层&#xff0c;它对数据包的转发是建立在MAC&#xff08;Media Access Control &#xff09;地址基础之上的。二层交换设备不同的接口发送和接收数据独立&#xff0c;各接口属于不同的冲突域&#xff0c;因此有效地隔离…

【C/PTA —— 15.结构体2(课内实践)】

C/PTA —— 15.结构体2&#xff08;课内实践&#xff09; 7-1 计算职工工资7-2 计算平均成绩7-3 找出总分最高的学生7-4 通讯录的录入与显示 7-1 计算职工工资 #include<stdio.h> #include<stdlib.h> typedef struct GZ {char name[6];double j;double f;double z;…

记一次由 jedis 引发的离谱选学问题

背景 我的应用中&#xff0c;使用 jedis 作为连接 redis 的客户端&#xff0c;一直在用的好好的&#xff0c;后来有一个新的组件&#xff0c;也需要使用 redis&#xff0c;但是组件是内部封装的&#xff0c;我只能提供一个 StringReidsTempalte&#xff0c;所以我基于应用本身…

Java 多线程之 LockSupport (阻塞和唤醒线程)

文章目录 一、概述二、使用方法三、测试示例1四、测试示例2 一、概述 LockSupport 是Java并发包中的一个工具类&#xff0c;用于线程的阻塞和唤醒。它提供了一种基于线程的许可&#xff08;permit&#xff09;的方式来实现线程的阻塞和唤醒&#xff0c;而不需要显式地使用锁。例…

【无线网络技术】——无线广域网(学习笔记)

&#x1f4d6; 前言&#xff1a;无线广域网(WWAN)是指覆盖全国或全球范围内的无线网络&#xff0c;提供更大范围内的无线接入&#xff0c;与无线个域网、无线局域网和无线城域网相比&#xff0c;它更加强调的是快速移动性。典型的无线广域网&#xff1a;蜂窝移动通信系统和卫星…

Linux UUCP命令教程:如何在Linux系统中进行文件复制(附实例详解和注意事项)

Linux UUCP命令介绍 UUCP&#xff08;Unix-to-Unix Copy&#xff09;是一套允许远程执行命令和传输文件的程序。UUCP命令是该套件中的一个程序&#xff0c;它为请求文件复制操作提供了用户界面。UUCP套件还包括uux&#xff08;远程命令执行的用户界面&#xff09;、uucico&…

Java期末复习题之抽象类、接口

点击返回标题->23年Java期末复习-CSDN博客 第1题. 首先设计一个学生抽象类Student&#xff0c;其数据成员有name(姓名)、age(年龄)和degree(学位)&#xff0c;以及一个抽象方法show()。然后由Student类派生出本科生类Undergraduate和研究生类Graduate&#xff0c;本科生类Un…

js moment计算当前时间到24:00:00的剩余时间

2023.12.7今天我学习了如何计算当前的时间到24:00:00剩下的时间&#xff0c;https://momentjs.cn/ const now moment(); // 获取当前时间const endOfDay moment().endOf(day); // 设置当天的 23:59:59const duration moment.duration(endOfDay.diff(now)); // 计算剩余时间的…

第 7 部分 — 增强 LLM 安全性的策略:数学和伦理框架

一、说明 增强大型语言模型 (LLM) 安全性的追求是技术创新、道德考虑和实际应用的复杂相互作用。这项努力需要一种深入而富有洞察力的方法&#xff0c;将先进的数学模型与道德原则和谐地融合在一起&#xff0c;以确保LLM的发展不仅在技术上稳健&#xff0c;而且在道德上合理且对…