当前位置: 首页 > 面试经验 >

携程Java面试-凉经-2022.9.01

优质
小牛编辑
122浏览
2023-03-28

携程Java面试-凉经-2022.9.01

  1. 自我介绍
  2. 看到项目,技术栈有哪些?
    1. Spring,SpringCloud,MyBatis-plus,MongoDB,Nacos
  3. 谈及项目,那么问项目,听到Nacos
    1. 为什么要用Nacos,是由很多微服务吗?
      1. 在此,我简要介绍了一下项目中的一些通用微服务模块
    4. 看到有redis。
    1. 为什么用redis?用mysql存储redis的内容可以满足业务需求吗?
      1. 哎呀呀,主要是用来加速响应的。不用redis当然可以,但是由于根据相同样本编号得到的数据结果,若样本数量是不变的话,其对应结果也是不变的。但考虑到频繁访问,就采用redis进行缓存了。(在此,面试官频繁发问,可能是我没理解面试官的问题,也可能是我没回答到点上)
            ii.  redis在项目中是如何应用的?里面存的是什么内容?什么类型的数据?
      1. 数据缓存。缓存数据的判断结果(涉及到具体业务)。是一个string。
            iii. redis的基本数据类型(大失误,我好久没看redis啦,痛定思痛,重新回顾)
      1. 笨比在此,粗粗了解redis数据类型,不深入。redis有大基本数据类型,包括string,hash,list,set和zset(有序集合)
    5. 看到有mybatis-plus
    1. 我简历上写:主要解决单表的数据查询问题;
      1. 问:那么业务上是在这方面有什么困难吗?
      • 我是笨蛋,回答没有困难。我需要需改简历,改为解决多表的连接查询问题。参考:https://cloud.tencent.com/developer/article/1937160#:~:text=MybatisP,%E5%86%B3%E8%BF%9E%E6%8E%A5%E6%9F%A5%E8%AF%A2%E9%97%AE%E9%A2%98%E3%80%82
                b. 问:sql注入问题,mybatis如何解决
      •  抱歉,我只能记起sql注入是一个什么问题,but解决问题我只回忆起用preparedStatment使用占位符?进行代替的。mybatis-plus是如何解决我增加粗粗看了一下。没回忆起来。主要是#{ }和${ }。参考:https://zhuanlan.zhihu.com/p/234759240#:~:text=mybatis%E6%B2%A1,sql%E6%B3%A8%E5%85%A5%E6%94%BB%E5%87%BB%E3%80%82
    6.    看到有springCache+Redis实现数据缓存
    1. 那么这二者是怎么结合实现缓存的?
      1. 啊哈,springCache是一个大框架,指定缓存实现为redis,然后配置redisConfig类即可。
    7.    看到有Spring Gateway和JWT工具生成token
    1. 简历写:Spring Gateway统一管理用户认证,JWT工具生成token;
      1. 问:JWT本身就有用户认证功能,已有JWT为何还要Gateway?你是怎么结合这二者?
      • Gateway我用来用户认证,JWT将生成的token存入redis,进行认证判断。
                 b. 问:JWT生成的token组成部分?
      • 我仔细回忆了一下。大概有三部分,公共部分、私有部分、签名部分。私有部分可以放自己的内容。比如用户名和用户id。参考:https://www.jianshu.com/p/576dbf44b2ae
    8.    看到有MongoDB
    1. 你有了解MongoDB的ObjectID吗?
      1. 抱歉,无能为力。只用了一下,对其了解甚少。不过感谢面试官给我介绍了一下mongoDB。我真的只是了解使用。
    9.    看到有微信扫码登录功能
    1. 微信扫码登录的流程?
      1. 这是我的锅。我仅简要回答了一下accesstoken。应该把流程给回答出来,but我忘啦。痛定思痛,再次回顾整个项目。
    10.    算法(我是笨比,把题目理解成是否子树问题,理解错误,直接懵逼)
    1. 题目是剑指offer 26题,树的子序列问题。参考:****************************************************

                其实问题比较简单,有A树和B树,判断B树是否是A的子序列树。

                主要思路是遍历A树的每个节点,判断当前节点的值和B树的头节点值,以及当前节点左右子树的值与B树的左右子树的值是否一致。递归判断。

                我理解成是否子树问题,直接序列化,判断是否字串问题。错咯,面试官很温柔的提醒我,序列化会有问题哟,but我已经懵了,听不进去啦。哭唧唧。

            ii. 归并排序的时间复杂度和空间复杂度,以及实现思路

                实现思路:划分两部分,递归划分,两两合并。参考:https://zhuanlan.zhihu.com/p/124356219

                but,我错了。我以步长进行划分,对步长内的数组进行排序后再两两合并。

                时间复杂度我是回答O(nlogn), but,空间复杂度我回答O(1)(麻中麻,怎么可能是O(1)嘛!就算是我的错误思路,也需要O(n/m)=O(n)嘛,可恶,我是笨蛋)。

        结论:面试官很温柔,从本次的面试过程来看,我还有许多不足之处;在项目中,对项目整体的把握不足,对项目细节如为何用该技术,以及该技术的基本原理,业务的运行流程等还有不足之处。在算法中,未仔细读题。基础的算法掌握不足,基础排序要好好把握,剑指offer要好好刷。

        希望大家都有一个美好的未来。每一次面试都是一次提升自己的机会。

#携程面试##携程22届秋招面试#
 类似资料: