头像

AnthemLights




离线:15小时前



基本情况:

  • 渣渣985,cs本科。

  • 公司:shopee。

  • 岗位:java后端,秋招投递。

  • base:新加坡。


一面

  • 算法题:leetcoode 82 删除排序链表中的重复元素 II
  • 编程题:生产者消费者模型
  • 深挖项目经历
  • 本地磁盘中一个文件,然后一个程序读取文件,然后用socket发送到别的主机,问文件中数据复制了几次?
  • 物理内存与虚拟内存有什么不同?
  • 介绍一下OOM?什么是OOM killer?
  • 两个进程打开同一个文件,一个进程用while循环一行行的读,一进程个清空文件,问读进程能否立刻感知到文件被清空?
  • 介绍一下软链接和硬链接?
  • 有100个进程打开同一个文件,问os会把该文件从磁盘读多少次?(零拷贝/复制技术
  • 进程线程的区别
  • 进程间的通信方式有什么?
  • 什么是协程?
  • 什么是孤儿进程和僵尸进程?
  • java这种基于操作数栈的执行方式和基于寄存器的有什么区别?
  • 常见的java字节码指令?
  • 讲讲jvm的垃圾回收器和垃圾回收算法?
  • synchronized和reentrantlock的区别?
  • AQS了解吗?讲讲底层具体实现?
  • 什么是CAS?讲讲Unsafe类?
  • mysql的默认隔离级别?
  • 如何分库分表?
  • 设计题: 生成一个全局唯一的id生成接口
  • 反问:
    1. 虾皮新加坡国人多吗?答: 很多,组里接近80%都是中国过去的。
    2. 平时交流全英文吗?答: 如果俩中国同事交流可能只用中文,别国同事在就用英文。
    3. 和国内互联网公司有什么不一样的吗?答: 没在国内工作过,看网上的吐槽我们压力应该小一些。

面试体验:
本次面试算是本人秋招经历中难度较大的一次,而且本次面经并不是非常好分享,因为深挖项目经历和设计题才是大头。整个面试流程历时一小时五十分钟,其中项目经历部分问了40分钟左右,大概流程:自己先概述->面试官询问细节->介绍细节设计->面试官找到不足之处->设计解决方案,相当于一个变相的设计题,最后的设计题也问了接近半小时,大概也是先设计后挑刺再改正的流程。
面试官水平很高,而且人很好,反问阶段问了下面试中的不足和学习方法,面试官滔滔不绝地给我分析了十多分钟,从知识体系不足到具体学习方法,还有要看什么经典书给我说了一个遍,虽然自知自己肯定过不了,但是体验十分良好。

另外上一篇写快手面经中可能是二面问题难度可能有点大,有同学吐槽我是机构来搞大家心态的,我还是想说明一下。
之所以分享这两篇在本菜鸡看来难度相对大一些的面经,是因为我希望我的面经给大家提供一个查缺补漏的作用。其实我自己经历的大部分面试还是难度适中的,以大家口中的Java八股文问题为主,这其中的知识一是在别的面经中反复提及,二就是在CS-notes、JavaGuide这种总结中也被分门别类的总结好了,时至十月,大部分准备秋招的同学估计早就背的滚瓜烂熟,因此我感觉在再写对大家的帮助可能不是很大。因此选择了虾皮和快手的两次偏难的面经分享出来,帮助大家完善一下自己的知识体系。不过这些皆为个人愚见,有不同想法的同学可以评论区友好交流观点。
另外提到面经搞心态这个问题,感觉大家不要被面经所体现的难度影响。面经拿来作为难度评价的话还是欠妥当,毕竟分享人的背景、面试官风格和面试部门的hc情况都和自己可能有很大差距,同一公司不同面试难度差出很多也很正常。另外个人感觉面试这个东西有时候蛮玄学的,希望大家抱着“但行好事,莫问前程”的心态,别被结束的面试影响状态,全力准备下一场就好。



基本情况:

  • 渣渣985,cs本科。

  • 部门:快手电商。

  • 岗位:java后端,秋招提前批投递。

  • base:北京。

一面:

  • java的基本数据类型有什么,大小、范围?
  • 什么是IOC和DI?
  • hashmap了解吗,并发情况下会有什么问题?
  • concurrenthashmap是怎么避免上述问题的?其中synchronized和CAS是如何使用的?
  • 线程池的基本思想、优势、核心参数?线程池默认的阻塞队列是哪一个?
  • mysql的隔离级别说一下,每个级别避免了什么情况?
  • MVCC是什么?具体实现机制?
  • switch语句用过吗?如果当前有case 1、2、3 和default,匹配case 2,但是case 2 中无break,case 1、3、default有break,请问程序会执行到哪里?(该问题与switch语句对应的字节码有关,另外CSAPP一书中章节3.6.8也有基于c语言和汇编语言的讲解)
  • 算法题: acwing 39(leetcode 101) 对称二叉树
  • 反问环节
面试体验:面试官人很和蔼,问的也都很基础,难度不大,体验良好。

二面

  • 给了一段介绍spring的英文,先翻译一下。
  • 之前用过git吗?(答:用过svn,git没怎么用过)那git和svn有什么区别?
  • 本地有新代码,远程也有新代码,如果使用git进行pull操作,会发生什么?
  • 输入www.google.com发生了什么?过程是怎样的?涉及了什么协议?
  • mac地址是什么?通过ip地址找mac地址是通过什么协议?
  • 负载均衡是什么?nginx用过吗?(答:没,用过ribbon)那ribbon的算法有什么?
  • 网络的五层模型都有什么?http、ip、tcp分别是哪一层的协议?
  • cookie和session是什么?有什么作用?
  • 那我可不可以只用cookie,不用session?
  • 在服务端,你会如何存储session?
  • 既然想到了key/value的存储,想到了什么组件?(答:redis)那redis什么场景下用的?基本数据类型有什么?
  • mysql和mybatis的关系是怎样的?
  • 手写sql:给表 table 加普通索引
  • 什么是索引,唯一索引、普通索引、聚簇索引分别是什么?
  • 索引为什么快?
  • 索引为什么不用b树,为什么不用二叉查找树?
  • 普通索引查找数据时是不是肯定会回表?
  • 什么是索引下推?
  • mysql的默认引擎是什么?默认隔离级别是什么?
  • mysql事务是如何实现的?
  • String s = new String("123");
    String s = "123";
    以上两种方式有何区别?
  • 字符串常量池在哪?
  • 方法区和元空间什么关系?元空间里面有什么?
  • jvm的内存结构?
  • 栈什么时候发生StackOverflow错误?
  • 栈会不会发生OOM呢?会的话什么时候发生?
  • CMS了解吗?浮动垃圾是什么?
  • CMS是怎么解决碎片化问题的?
  • 爱好、github、项目经历、竞赛经历、投了哪些公司。
  • 算法题: leetcode 146 LRU Cache
  • 分布式系统中,定时任务如何保证不重复执行?
  • 个人规划、期望+反问。
面试体验:二面的面试官水平很不错,每次问题都是接着上一个问题的回答来问,由浅及深,问到不会的不了解的问题,会给予充分的提示与引导,体验十分良好。

三面

  • 说说什么是锁的粗化?
  • 都了解什么设计模式?
  • 原型模式、工厂模式的目的是什么?为了解决什么问题?
  • 动态代理是什么?cglib动态代理的具体实现说一下?
  • mysql事务的实现原理?
  • 分布式事务如何实现?
  • 反问
面试体验:这次leader面的难度其实也不高,但是当时复习不足,个个戳中盲区,答的一塌糊涂,面试半小时就结束了,而且反问阶段感觉面试官也无心应答,敷衍两句完事,体验还好,还是自己太菜了hhhh。