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

🌈键盘敲烂,年薪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还是不行,原理,用到的技术都不熟练。

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
社会演员多的头像社会演员多普通用户
上一篇 2023年12月28日
下一篇 2023年12月28日

相关推荐