2023华为留学生无线通用软开面经(更新中)
一面(3.3上午)80min:
面了快一个半小时,面麻了。
- 自我介绍+项目介绍
- 看你C++,JAVA都写过,介绍一下他们各自的特点
- 介绍下JVM的垃圾回收,我提到了根可达分析算法,又问根可达分析算法用的是什么数据结构,我说应该是数吧,面试官:树还是图?我:那就是图。因为要算路径。
- JVM中的对象哪些在堆中,哪些在栈中?我:啊?我知道的对象都是在堆中创建的,不知道什么情况会到栈里面
- 那栈里面都有什么?
- 栈帧的结构是什么?没回答上,面试官说没事,这个是比较深的知识了。
- 进程共享的内存都有哪些?
- 栈为什么不是进程共享的?
- 手撕算法:给一个String数组,里面是单词,例如time,me,book,要求压缩字符串,time和me压缩成time,压缩后用#结尾,最后输出的是time#book#。
感觉可以用字典树,但是我没写过字典树,就用的暴力解法,自己用栈写了个判断子串的方法,然后对String数组中的单词两两逐一比较,然后把母串拼接起来,子串丢了。写完之后面试官一看说我怎么整的这么复杂,判断子串用.endWith()就行了。我:啊?我不知道,之前没用过,面试官:这种java自带的api要会灵活应用,实际业务一般不会自己写这种方法。 我的暴力解法我自己感觉肯定是有bug的,不过幸好没有让运行。面试完过了几分钟就收到一面通过的短信了。
二面(3.3下午)80min
我还在睡觉呢,突然就打电话让我面试了,面试前几分钟脑子都还不太清醒。
- 又是一边自我介绍+项目介绍,但是项目介绍只介绍了一个印象最深的项目。
- ArrayList和LinkedList区别,使用场景
- TCP/IP和UDP区别,三次握手四次挥手详细讲解,为什么不能两次握手
- 了解二叉查找树吗,最差情况会退化成什么?二叉平衡树呢?红黑树呢?
- 了解图吗?如果要你求一个有向无权图的最短路径,用什么算法?如果是有权图呢(我说DFS,面试官说这算暴力解法,有没有更好的解法,我说不知道)?
- 了解集合吗?HashSet和TreeSet有什么区别?如果传入TreeMap的key值是对象,那么对象应该满足什么条件(有Comparable接口,但我没答上来)
- 手撕:
有一种速记方式,缩写规则如下:重复部分以“(重复内容)<重复次数>”形式记录,可能存在嵌套缩写关系。不重复部分直接记录现给出速记字符串records, 请还原压缩前的字符串。注意:records仅由小写字母、数字、<、>、(、)组成。
示例1:输入:records=“abs(d)<2>g”,输出:“absddg”
示例2:输入:records=“a(s(f)<3>g)<2>e”,输出:“asfffgsfffge”
我先用双指针做, 面试官让我用栈做好一点。然后自己写了一遍,然后跑示例没有跑过。面试官又给我讲解了一遍思路,然后给我20分钟让我重新写出来。我写到一半可能面试官看不下去了(也可能快下班了),直接手把手教我怎么写。结果写完跑还是跑不过示例,然后面试官又手把手教我怎么调试,最后发现是最后输出的时候for循环里循环次数写的stack.size(),但是方法体里会一直出栈,所以导致结果不对,把循环次数改成原来stack的固定大小就行了。
这道题我刚开始写的时候其实没啥头绪,有点慌,然后面试官提示我之后还没跑过示例的时候我贼慌,心想完了手撕挂了前面表现多好都没用,结果最后面试官直接手把手教我写代码,属实没有想到。考试完一个小时收到二面通过的消息。