zoukankan      html  css  js  c++  java
  • 记一次菜鸟网络的面试经历

    我是一个不太爱折腾的人,因此在一个公司待久了,就不太会轻易跳槽。正因为如此,我在上家公司待了整整三年,在这里,认识了一群可爱的人,便更不舍得离去。

    但因为公司属于传统企业,技术上并没有太大挑战,个人也逐渐遇到了职业瓶颈,我也渐渐体会到了温水煮青蛙的感觉,看似自己已经成为团队的主程,其实与同龄人的差距越拉越大,于是依然决定换个环境。

    阿里巴巴作为国内最大的互联网公司,是无数程序员的梦想,于是在七月份便投了阿里旗下菜鸟网络的简历,一个菜鸟便开始了菜鸟网络的面试之旅。

    一面

    接到菜鸟的面试电话时,还是很激动的,因为之前从来没有面试大厂的经验,便在忐忑不安中开始了面试。

    面试官先让我聊了聊最近的项目,我便把项目讲了下,面试官便以此为切入点,问了一下相关的知识

    http 协议 转 dubbo 协议 怎么做的
    dubbo 的架构设计说一下
    mq 通知时,消费者没消费到怎么办
    redis 是单线程了吗?有什么好处
    一般设置过期时间吗,业务场景有哪些,过期策略有哪些
    redis 持久化了解不,你们线上怎么用的
    你们线上为什么这么用?只用AOF行不行
    你有什么想问的?

    一面大概用了半个小时,整体没有太大难度,更多是聊了一些项目上的东西,做了一个初步了解。

    二面

    没想到二面来的如此之快,一面结束的第二天,电话就打来了,当时我还在公交车上,便在车停站时赶紧下车,当时还下着蒙蒙细雨,我也顾不上那么多了,找个了稍微安静的角落就开始了面试。

    二面问的技术面比较广,先让我聊了最近做的项目,以及让我讲了下项目中用到的单点登录的流程,接着就是java基础了

    抽象类和接口你倾向用哪个?什么场景下用抽象类
    如何更好的实现一个单例
    synchronized 和 lock 区别
    公平锁和非公平锁
    怎么实现自定注解
    类加载机制
    如何实现自己的classloader
    如何动态加载类
    如何触发full gc
    用jvm命令如何触发

    最后聊了一些开放性的问题

    了解过netty吗
    微服务了解过吗,Service Mesh呢
    五亿数据,找出数量top100
    10G数据,在内存小于10G如何分片
    分片处理完如何汇总
    分布在多个节点上如何汇总
    哈希取模如何哈希?哈希冲突怎么办?能完全解决哈希冲突吗
    数据库乐观锁和悲观锁
    秒杀系统如何设计?
    redis分布式锁如何玩?超时时间如何设置
    zk的监听原理,你来实现你怎么做
    主动推送怎么实现

    整个面试聊下来,感觉还算不错,基本都回答出来了。

    三面

    大概又过来一周,hr通知要到现场面,约的是上午十点,为了能准时赶到,我提前一天去了杭州。

    第二天早早的就起来了来到了面试地点,因为来的比较早,就坐在菜鸟大楼的外面等。七月的杭州似乎格外的热,看着菜鸟大厦的人进进出出,每个人似乎都很忙,我不由的想,自己今后是否有幸也能成为他们中的一员。

    三面的形式完全出乎我意料,来了两个面试官,先做了自我介绍,便开始了面试。

    整个面试过程都让我在黑板上画图讲解,他们会不间断的提问并做记录。

    先是让我画了项目的架构图,面试官指出了我项目中存在的一些问题问我如何解决,然后穿插着对项目中用到的一些技术进行提问

    消息如何保证一定被消费,如何没有消费到怎么办
    Redis 怎么保证不丢数据,能不能保证严格意义的一定不会丢
    Redis 集群,生产环境Redis 如何做数据迁移
    一致性hash算法
    数据库是怎么保证一定不会丢失数据的
    浏览器敲入一个域名,尽可能详情的说下接下来网络协议层面发生了什么
    了解过哪些锁,volatile 说下

    三面持续了大概一个小时,面的不太好,主要是网络协议那一块,我回答的太烂了

    四面

    四面是一个看起来非常平易近人的大叔,全程微笑和我聊天,没有一点架子,应该是 Team Leader

    整个过程没有聊技术细节,主要聊了一些技术的方向,业务的理解,过往的经历。整个过程还是聊的很愉快的。

    复盘

    整个面试过程问的知识点并不算难,也没有很偏的题,很多都是开放性的问题。

    例如redis在生产环境做数据迁移,一个只看过几篇博客的人和一个确实亲身经历过这种场景的人,回答的绝对有差别,而正是这种问题,才能看出来差距。

    遗憾的是最后还是没通过面试,我觉得原因主要如下

    1. 面试阿里过于匆忙,没有做好准备,也没有先拿小公司练手
    2. 基础知识仍有欠缺,例如网络协议和算法一直都是我的弱项
    3. 因为一直在传统企业,缺乏互联网项目实战经验,虽然自己看过许多这方面的知识,知识广度还算可以,但更多是纸上谈兵,缺乏实践
    4. 四面时自己犯了一个严重的错误,因为面试官属于比较和气且聊得来的类型,导致我在聊天的过程中过于随意,说话没有做到有的放矢,该说的不该说的都说了,给人一种过于浮躁的感觉。

    面试要注意什么

    在我看来,面试不仅仅是实力加运气,个人发挥也很重要,有的人面试经常能发挥百分之一百二的实力,我总结了几点

    1. 不卑不亢,面试是一个互相认同的过程,既不能狂妄自大,也不要妄自菲薄。
    2. 讲话要有逻辑,做到条理清晰,层次分明。我身边有同事技术明明不差,但讲问题时却抓不到重点,听他说话总让人有种一头雾水的感觉。
    3. 个人外在情绪展现可以随着面试官情绪稍作调整,这样易于拉近和面试官的关系。但你的内在情绪不应该受影响,自信,沉稳应该一直保持。
    4. 遇到不是特别清楚的,可以讲一下自己的思路,或者在征求面试官同意的情况下,讲一下类似问题的解决方案。
    5. 如果问题实在不会,不要强答,直接说不会,要及时止损,避免越陷越深。
    6. 面试有一定的运气成分,但可以引导面试官到自己擅长的方向上去,但不要强行带节奏。

    写在最后

    虽然没能进阿里,但我并不沮丧,只是有些遗憾。毕竟在这条路上,我一直在努力,过程已经足够丰富多彩,结果已然没那么重要,顺其自然就好。

    生活本就是一个不可预知的过程,只要朝着更好的方向前进就好。况且,塞翁失马焉知非福,现在我入职了一家很不错的互联网公司,做的是自己喜欢的中间件研发,而且又遇到了一群可爱又有趣的人。这样的结果,我已然满足。

  • 相关阅读:
    Linux 下的类似Windows下Everything的搜索工具
    windows和linux环境下制作U盘启动盘
    程序调试手段之gdb, vxworks shell
    LeetCode 1021. Remove Outermost Parentheses (删除最外层的括号)
    LeetCode 1047. Remove All Adjacent Duplicates In String (删除字符串中的所有相邻重复项)
    LeetCode 844. Backspace String Compare (比较含退格的字符串)
    LeetCode 860. Lemonade Change (柠檬水找零)
    LeetCode 1221. Split a String in Balanced Strings (分割平衡字符串)
    LeetCode 1046. Last Stone Weight (最后一块石头的重量 )
    LeetCode 746. Min Cost Climbing Stairs (使用最小花费爬楼梯)
  • 原文地址:https://www.cnblogs.com/zhaoguhong/p/11762116.html
Copyright © 2011-2022 走看看