荣耀面经(一面)-2022.9.08

首先说明,本人笨比一枚,若有些我的回答气死人,请原谅我。

流程:

  1. 自我介绍:姓名+学校+专业+科研项目+竞赛项目
  2. 谈及项目:
    1. 请说说项目背景
      1. 背景巴拉巴拉
    1. 整个项目有哪些模块,你负责哪些模块?
      1. 巴拉巴拉
3. 看到专业技能:
    1. 看到GC算法,那么在堆中,将其分为了eden和s0和s1,那么其比例是多少?s0和s1的比例可以更改吗?怎么更改?
      1. 比例是8:1:1。s0和s1的比例不可更改,但是eden和survivor区的比例可以更改:通过-XX:SurvivorRatio设置比例
      1. 那么更进一步,为什么s0和s1的比例是不可变的?(自问)
      2. 这个问题我和室友讨论了一下,我目前的理解是:在GC回收新生代时,其会将eden和s0中存活的对象复制到s1中,然后清空eden和s0;下次再次回收新生代时,会将eden和s1中存活的对象复制到s0中,也就是说s0和s1的身份会调换。那么若其比例不一致,s0和s1有大有小,则当复制对象到小的si时,si(i=0,1)容量不足,从而将对象放入老年代的概率会比比例一致时的概率更大。而新生代的GC频率比老年代的GC回收频率更高,为释放更多的内存,尽可能的将对象放在新生代上会更好。
ii. 继续GC,提出一个场景:若此时堆内存的使用率达到了80%,其会出现什么问题?该怎么排查这个问题?排查的步骤是什么?(即该问题是堆内存使用率过高的问题)
      1. (心中滴泪,我只知道一点呀)堆内存使用达到80%,(但是也还没到90%呀,那会出现什么问题呢?,疯狂思索,也没有报OOM)出现什么问题我也不知道,但是排查的话,我记得有一个软件可以将堆内存给dump出来,分析dump文件,可以分析每个类的使用内存情况。而具体的步骤,我不甚了解。堆内存溢出排查参考:https://blog.csdn.net/AnOrdinaryLife/article/details/106303015
iii. 看到Redis,那么Redis的基本数据类型有哪些?
      • 答:(自信)Redis的基本数据类型有5中,其value可以是字符串string、哈希表hash、列表list、集合set和有序集合sortedset。
      • 问:SortedSet的底层实现是怎么样的?
      • 答:SortedSet的底层实现,我没有看过sortedset的底层实现,但是以我对Java的理解,去映射redis。我认为sortedset的底层实现是一个数组,一个Object[]数组。
      • 问:那么SortedSet是怎么实现有序的呢?
      • 答:我知道redis在存入zadd时,会指定数据的序号,那么这个序号时排列的依照。那么,在我的思路之上,其底层是一个object[]数组实现,那么其就类似ArrayList;而为了实现有序,我觉得每次插入时会维护数组的有序性,从而能够根据序号随机访问。
      • 问:以这样子插入时维护数组的有序,那么当大量的数据插入时,每次插入都维护,那效率?
      • 答:应该效率差不多吧
      • 面试官答:哈,差很多的。其实SortedSet的底层实现是链表+跳表实现的。(面试官,笑,既然如此,咋们下一个问题吧,微笑)跳表参考:https://blog.csdn.net/WSYW126/article/details/105611088
vi. 看到Mybatis-Plus,我忘记有没有问了。。
4. 那么来聊聊笔试吧,你还记得笔试的题目吗?
  • 答:(自信)记不清了,有点久了,请面试官提示一下吧。
  • 问:最后一题是redis缓存的那道,我看你笔试判断整数多进制是否是回文的题,系统判断代码重复度较高呢?
  • 答:不会吧,这道题比较简单的,Integer有一个自带函数toString(int i, int radix), 可将int类型的10十进制转化为指定进制的数据。我调库运行,所以若代码重复度较高我也没办法。进制转换代码参考:https://blog.csdn.net/m0_37961948/article/details/80438113
5. 看了看时间,来一道题吧,实现三个需求。

需求:

    1. 目录动态访问,需要访问的目录会随时变换,且不能重启服务器,该如何实现?
      • 答:我的思路历程:代码是写不出来的,我可将思路告知面试官。首先访问不同的目录,可用重新调用函数,改变入参即可,但是不能重启服务器,方法也只调用一次,那硬编码就不行了。那若将目录以加载xml文件的形式,但是不能重启服务器呀,也不会重读xml文件。边思考变告知我的思路,最后请面试官给一些提示。
      • 问:你其实可以在远端设置一个配置文件,去读配置文件即可,例如Apollo。
      • 答:确实。是我思路狭隘了。这就类似Nacos的配置中心,Nacos可作为配置中心,在云端设置配置文件,然后去读取即可,在云端更改配置文件后,本地会自动拉取更改后的数据进行更新。
ii. 目录下有txt、json等文件格式,用一个方法可加载所有不同给的文件,请考虑程序的扩展性
      • 答:一个方法处理多个文件格式。我认为可以使用泛型,将txt、json等文件格式包装为对象,作为泛型对象,传入该方法,再调用各个对象的具体的处理方法即可。
      • 问:考虑一下扩展性,你用哪种设计模式来处理?
      • 答:我。。。不知道。(要恶补!!我常了解的只有工厂和单例模式哒,若要用工厂模式,其扩展性不行。单例模式,都不适用,麻了。)此处该使用适配器模式比较合适。设计原理参考:https://blog.csdn.net/sugar_no1/article/details/88317950
iii. 不定期访问,这个期限时间可随时更改
      • 答:回答和第一个问题类似,在云端设置一个时间,拉取所配置的时间。
6. 反问

    面试官的部门、在荣耀工作的感受。

    面试结束啦,人已经崩溃啦,我当天下午的状态十分萎靡。郁郁寡欢。我将面试经历和线下的同学分享后,心情总算恢复,努力奋战下一场面试。

    经过这次面试,结合上一次面试,我认识到面试官的问题会结合场景来细问一下技术的细节,其次mybatis,我还需要继续深入学习,redis的各个基本类型需要了解其底层实现,JVM方面需要对堆内存的分配、回收等需要更加细致的学习。在设计模式方面,至少掌握设计模式的分类,以及各个分类下的常用模式,以及常用模式的经典样例。

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

#荣耀面试##一轮面经#
全部评论
好难,我要被这么问我真自闭了。
10 回复 分享
发布于 2022-09-09 13:24 江苏
面完之后,晚上来的测评
2 回复 分享
发布于 2022-09-09 12:51 浙江
这得是工作几年的经验呀 咋问这么难。。
2 回复 分享
发布于 2022-09-11 11:45 天津
楼主约二面了吗
1 回复 分享
发布于 2022-09-09 13:36 浙江
base哪里啊,不简单啊
1 回复 分享
发布于 2022-09-09 18:44 山东
大佬 考虑一下隔壁viv0不?去年一轮笔试+一轮技术面,快的话10月中旬就能拿到0ffer,不管最终来不来,因为流程走得快+待遇优厚所以可以留作保底offer 再argue也不虚。欢迎大佬 全国各地都有base 内twit: qvjzzb
1 回复 分享
发布于 2022-09-11 13:59 江苏
宁波银行金融科技部看看不?拿个保底,看主页动态内推哦
点赞 回复 分享
发布于 2022-09-09 13:17 浙江
咱们好像是同一个面试官,但我感觉没你答的好😂
点赞 回复 分享
发布于 2022-09-10 11:34 浙江
楼主啥时候投的简历呀,我8.22投的还是简历待处理
点赞 回复 分享
发布于 2022-09-10 11:42 浙江
问的好难
点赞 回复 分享
发布于 2022-09-10 23:32 江苏
兄弟,看我主页进群,从此秋招不迷路!
点赞 回复 分享
发布于 2022-09-11 00:22 澳大利亚
我荣耀面试也超难,看牛客有些人的面经觉得都还行,看到你这个比我更难的,心里好受多了😂不过面完没几天就挂了,唉
点赞 回复 分享
发布于 2022-09-14 00:22 陕西

相关推荐

30 108 评论
分享
牛客网
牛客企业服务