携程 后端开发暑期-一面 攒攒人品望二面

第一部分:Java相关

(我终于第一次!遇到上来不是做题的面试官了!!!!)

  • 问题:说说Java的集合类那一整个继承体系吧
    回答:Collection => List,Queue,Set => ArrayList,LinkedList,Vector,HashSet,LinkedHashSet,TreeSet
    Map => HashMap,LinkedHashMap,TreeSet
  • 问题:说说ArrayList和LinkedList的区别
    回答:根本区别是底层实现,一个用的是动态数组,一个是链表,然后三方面说了一下数据结构的区别
  • 问题:ArrayList扩容原理说一下
    回答:把源码流程说了一遍
  • 问题:异常家族说一下
    回答:主要分为checkedException和uncheckedException,其中checked代表的是:如果不在代码层面进行处理就无法通过编译,而unchecked代表的是:即使不处理也可以通过编译,而RuntimException以及其子类都属于unchecked,其他都属于checked
  • 问题:那你项目中怎么去使用这些异常了呢?
    回答:说这个之前必须说一下SpringMVC提供的那个全局异常处理器handler,可以捕获我们项目中抛出的异常并对应去处理,而在这个基础上,我主要有两种用法:一个是主动抛出异常,一个是try-catch-finally处理。首先说说第一个:我自定义了一个用户未登录的Exception类,然后当拦截器判断未登录时,就会抛出这个异常,这样的话那个全局处理器就可以捕获到然后进行未登录的处理,因为全局异常处理器其实相当于一个Controller,他可以给用户返回一些错误信息。第二个就是我在加锁之后的业务流程是有可能报异常的,但是如果报异常了我们又必须解锁,所以这时候就用上了try-catch-finally,在finally里面进行解锁操作,保证锁的释放。

第二部分:操作系统相关

  • 问题:操作系统不是有那个cache吗?你说说cache的作用吧
    回答:从cache,内存,硬盘三者的效率说了一下(有点后悔没说说局部性原理)
  • 问题:操作系统不是有好几级的cache吗?L1,L2啥的,你知道他们的大小设置吗?
    回答:不知道。。。

第三部分:网络相关

  • 问题:说说现在网络的分层
    回答:TCP/IP五层模型
  • 问题:TCP是哪一层的?
    回答:传输层,在因特网里面传输层协议常用就两个:TCP和UDP
  • 问题:你说说他两的区别
    回答:老八股了

第四部分:Redis相关

  • 问题:说说redis的常用命令吧
    回答:对应着五种常用数据类型的常用命令说了一下
  • 问题:看你项目用到了redis,你可以说说什么时候我们项目会考虑用redis吗?
    回答:首先一个是缓存,然后说了说为什么需要缓存以及redis为什么可以实现缓存,然后是redis可以实现一些分布式锁等应用场景。
  • 问题:分布式锁?你说说你怎么用redis实现分布式锁吧
    回答:老八股了,并且结合了项目中的使用说了一下
  • 问题:你用redis实现分布式锁,但是你知道redis的事务是非传统意义上的事务,我们说这种分布式锁必须要有事务保证,你有考虑这个问题吗?
    回答:其实我认为redis的事务并不影响他可以作为分布式锁,因为redis提供了一个原子命令让我们实现加锁的原子性操作,这是最根本的原因,一旦我们把这个命令放到redis的工作线程上面,我们说redis的工作线程是单线程的,那么他的命令都是串行化的,这样就不会出现多线程并发导致加锁过程中切换的安全问题。
  • 问题:那按你的串行化的说法,这个加锁的顺序是无法保证的吧?
    回答:是的,但是没关系,现在基本上很多多线程锁都是无法保证谁先谁后的,这就是我们常说的锁抢夺,谁抢到就是谁的,这个没什么影响。

第五部分:算法题

  • 第一题:给你一个3+(11-2x4)类似这样的字符串(其实就是想说:加减乘除和括号都有),实现一个计算器,输出结果。
    这题所有操作符都出现了,比之前做过的那个后缀运算式难多了,我记得之前大二作业还有过这个玩意。。。一时半会真不会。。。
    但是面试官让我说说思路,然后就开始和他一起探讨了一下:
    我:我认为本题的难点在于优先级,毕竟所有的加减乘除和括号都有,我想到的数据结构是栈,因为栈是先进后出的,可以实现一定的优先级,我的想法是通过两个栈,一个是操作数栈,一个是操作符栈
    面试官:这个方向是对的,你怎么操作呢?
    我:先把整个字符串遍历完,然后出一个操作符就出两个操作数运算完后,再存进去,再以这样的逻辑循环
    面试官:但是你这样虽然可以解决我给出的测试用例,但是因为这个测试用例本身优先级就是从小到大的,如果我把2x4和11换一下,你就不成立了
    我:对的,我也在考虑这个问题。。。
    尬住一会
    面试官:没事,看你思路应该是差不多的,我们换个题吧
    我开心得连忙道谢!!
  • 第二题:手写个归并排序可以吗?
    我说可以,还挺常用归并排序来做算法题的。
    然后大概几分钟就写完了,面试官说刚刚写的过程中看了基本上是对的,也不用测试了
    我太感动了!!!

后面面试官看我IDEA的背景是女朋友,还跟我谈笑风生,说我怎么想到要换这个IDEA的背面的,他说这可以体现程序员的思维方式,是先看了有这个插件才去用呢,还是想去用才去找插件。我就随心说了一下为什么要换。挺有意思的哈哈哈哈。

反问:

  • 面试评价&成长建议:
    面试官说:这次面试总体还是不错的,然后建议方面的话,虽然项目问得不多,但是看得出我项目是自己做的,然后平时有去深入了解自己用到的技术的底层,而不只是停留在使用层面,我现在这个思路和方向是没问题的,接下来就是好好坚持。被面试官认可了,挺开心的哈哈哈,接着还要去深挖底层才行!
  • 培养方案

总结:
总的而言,这次面试还是很基础的,问的东西也不多也不难(虽然还是发现了一些问题。。)
面试官人真的不错!!见我写不出来,就让我说说思路,最后还给我换了一个难度下降起码200%的题目,非常感谢!!过程中也有说有笑的,也会去引导我,真的很nice!

体会:

  • 又又又一次问了操作系统。。。这次还是吃老本里也没有的东西,还是好好回去再学一波吧。。。
  • 面试官说我深入了解底层是对的,功夫不负有心人,要更多多学学底层才行!
  • 算法题没写出来。。根据这几次面试经验,果然面试也不是只考原题的,要走出舒适圈,多去刷点新题难题才行!

攒攒人品,望二面!

#携程实习##携程##面经##后端开发#
全部评论
感觉是同一个面试官😂是机票部门吗
1
送花
回复
分享
发布于 2022-03-17 20:05
过了吧
1
送花
回复
分享
发布于 2022-03-18 00:51
滴滴
校招火热招聘中
官网直投
有收到消息吗
1
送花
回复
分享
发布于 2022-03-22 13:58
要先转换逆波兰表达式,挺恶心的
1
送花
回复
分享
发布于 2022-03-23 23:06
那个计算器确实是力扣上的
点赞
送花
回复
分享
发布于 2022-03-17 19:00
我今天下午面 六点收到了反馈邮件😂😂😂
点赞
送花
回复
分享
发布于 2022-03-18 20:19
加油祝好运~
点赞
送花
回复
分享
发布于 2022-04-06 22:57
好强!!!这是科班的水平还是非科班?(我这半路转码的感觉有点凉)
点赞
送花
回复
分享
发布于 2022-04-12 15:50
请问一下同学,携程面试代码是直接打开自己的ide做吗,没有在线平台这些
点赞
送花
回复
分享
发布于 2023-03-02 10:37 上海

相关推荐

头像
05-12 09:14
点赞 评论 收藏
转发
12 79 评论
分享
牛客网
牛客企业服务