欢聚时代(yy)面试回顾

本贴最后更新于 3139 天前,其中的信息可能已经事过境迁
####1. 准备 欢聚时代是我开始认真面试的第一家公司。我让我一个朋友内推的。投递的是me直播Java开发工程师的职位。反馈也比较快,投了之后两天就有结果了。然后就约了一个时间去面试。yy搬到了番禺广场,不得不说,真的有点远并且有点偏哎。好处就是周围租房的选择比较多。yy在番禺广场买下来了一整栋楼,大概40多层,一个很大的`www.yy.com` logo,还是很有气势的。 我的面试安排在下午三点开始,去了之后先要在前台登记,让我拿出面试邀请邮件,可是发我谷歌邮箱了,手机上没翻墙打不开。。尴尬,最后打电话确认后才让我上去。我的面试在33楼进行,等了大概20分钟,终于等来了第一位面试官。 ####2. 一面 一面的面试官是个中年男子,看上去也很沉稳干练的那种。一开始让我介绍自己做过的项目,没有自我介绍环节了。我就讲了我做过的一个项目。我说的是我们做的一个`公众号估值系统`的项目,这个项目主要是如何去获取一个公众号所有的文章数,每篇文章的阅读数和点赞数。我们是通过fiddler进行抓包分析,伪造http请求的方式来实现。这个做起来挺有难度的。key失效一直是一个很头疼的大问题。我讲了大概十五分钟左右,一些细节说的很详细,面试官也很认真的听着。有时候可能我说的太细了,比如我说请求的时候,必须要伪造http的header,里面需要加一些参数,比如`host`、`referer`、 `user-agent`、`origin`这些,我会解析一下这些头具体什么意思,他就频繁点头,嗯嗯嗯,意思我知道,继续往下说。讲完之后,他就问我那这个高并发体现在哪里,我就说客户端生成key的时候,相当于一个生产者消费者模式,如果使用用户多的时候,客户端的压力是比较大的,客户端会有一个无界队列保存请求。有个排队的过程。。blabala。。说了好久,项目大概聊了四十分钟。我觉得都答的挺好的,没有什么失误。面试官也比较满意,就聊了一些其他方面的。 他接下来我问我动态代理是什么,了解吗?我就说要代理的这个类是运行时动态生成的,被代理的类必须要实现一个接口,有这么几个角色,被代理的类,代理类,代理接口。代理的实现由jdk动态代理和cglib代理两种。cglib代理不需要有代理接口,直接通过修改字节码的方式,jdk动态代理是通过反射特性来进行的。。那么反射就是jdk的特性,它有这么几个关键的类,`field`,`constructor`,`Method`,底层又是。。。我还想说下去,面试官说好了好了,明白了,这个问题到此为止。感觉他就是只是大概了解一下你懂不懂,不想深入探讨。好吧,那这个问题就过。 后来就问我们为什么要用vertx,我就说了一下vertx的特性,高性能,高并发,异步无锁编程等等。他也没问啥很难的问题。 后来问我数据库的知识,我就扯到了主从复制技术的原理,讲了一会儿。面试官也比较满意,第一面就算过了 面试官最后问我有没有要问他的,我就问了这个职位相关的情况。还问了他们直播相关的情况,比如第一次进入直播页,如何快速定位到当前直播流,我参加过infoq举办的全球架构师峰会,在里面打酱油听过一些,百度开放云也讲了他们直播的技术,当是他们讲的是一个追赶播放的过程,说要申请技术专利,我就给面试官讲了,他就给我分析了一下这个他们这么做的。balabala,就说完了。他说欢聚云也在做直播这块,但是还没有开放成服务等等。第一面就结束了。 ####3. 二面 二面面试官一进来就说,你们一面的时候聊了什么,我说主要聊了项目吧,他说那好,我们继续聊项目吧。。。我晕,又让我重复同样的话,这时候心累啊,不想再说的和一面的时候一样细。我就尽量精简的讲了一下。讲完就问了几个问题,你们这个客户端是干嘛用的,我一听,他还是没用听明白,生成key的哎,我又细细讲了一下,他懂了。又问客户端鼠标自动点击是如何做的,我说开始用了java robot类,后来换成按键精灵了,他问两者有什么区别,为什么要换,这个太好答了。我就说了一些原因。后来他质疑,你们这种不能实现完全的自动化哦,要测一个公众号,先要关注这个号,再去抓取文章,效率很低,谈不上高并发。。我惊出了一身汗。。他怎么知道必须要关注才可以。。我们也是摸索了好久才发现这个问题。。。不得不说,这个面试官还是很牛的。我就重重的说了声`对`..,是的,必须要先关注,完全正确。但是我们可以一次关注几千个公众号,把常见的公众号都关注了,微信的上限是2000个,那我们就关注2000个,这时候分析的话,并发量还是比较高的。我也承认了,这个问题也是我们这个产品没有推向外面的主要原因,做不到完全的自动化。只是给我们内部投资部用。项目大概聊完了,很多细节都忘了,面试已经过了好几天了。 接下来就问我性能调优的问题,说线上系统由问题了,你怎么快速查找问题出在那里。这种问题我也经验不多,实际去排查的次数很少。都是看书看博客学习别人的做法。对于此类问题,你说出个top命令,面试官会满意一大半,再说说jmap,jstack,jconsole,jstat的用法和区别,面试官多半会满意的,你说出从定位问题到解决问题的整个流程,一般来说还是可以的了。这里我遇到了两个坑,面试官对我的回答可能还想深入了解一下,问我top会打印出四种不同的线程情况,你知道是哪四种吗,我。。。不知道。继续问,top后面加个参数,logxxx是什么意思,我也不知道。。。问这么细,其实那个参数是啥我也没听清,这两个问题到现在我还没去了解。写完这篇博客,我就去好好研究一下top命令。这两个问题就跪了。我嘴贱,多说了jconsole,坑,哦,你们还用jconsole,你是直接通过jconsole能连远程服务器吗,这个我知道不能,要通过socket连,那你知道怎么配的吗。。什么原理。。囧,我没试过。答不上来了。典型的不作死就不会死。自己给自己挖坑跳,也是一个教训。 后来问我vertx,我说一些。但是我说了这么一句:对于不耗时的请求,event loop会自己转发到对应的handler上,对于耗时的请求,会转发到event bus上由他来转发处理。他就抓住问,他如何判断这个请求是耗时还是不耗时的呢。这个问题我也不太能说明白,我就说比如文件上传咯,数据库操作(漏洞很多),最后感觉答得很一般。 后来问vertx如何做到支持多语言的呢,我大概说底层都是netty,上层封装了一些不同语言的api,他继续往深挖,扛不住了。。 再就是问多线程,实现方式由几种,synchronize和lock有什么区别,synchronize底层怎么实现的,他就是在对象监视器里保存对象锁的(markword)。这个有准备《Java并发编程的艺术》这本书我都看完了,答得不是问题。说了reenterLock,主要区别就是condition实现的多路选择通知机制。我把volatile说成原子变量了。。口误,后面解释了一下,原子变量是atomic包下的那些。他追问实现原理,我就说了cas,一个新值和旧值的比较过程。旧值没变的时候就更新,变了的话继续循环直到成功。这里说的不严谨,应该是如果变了的话,旧值就变成最新的这个,而不是旧值,被他追问了,幸好及时纠正了。然后我就自己展开话题说了cas的缺点,aba问题,循环时间长开销大,只能保证一个变量的线程安全。。说完他没有反应。。大概是他也没思考过这些问题,没让我详细解释,这个问题就过了。我还想深入展开的呢。。过了就过了。 接下来就是hashmap的实现,看了代码,详细的解释了一下,又问了concurrentHashMap,准备的比较多,没啥问题。 还问了大概用到的技术,具体细节忘了。 ####4. 三面 三面技术官应该是一个比较资深的类似架构师的角色吧。刚上来比较客气,聊了下家常,问我为什么离职,我就说原来公司业务出了问题,个人发展受限,想寻求更好的平台,他就说是啊,现在创业太难了,资本的钱都烧完了,创业公司的日子不好过了。大概聊了一会这些话题。 三面主要了解一下技术背景。我们用groovy多,spring, tomcat,java用的比较少,他也了解到了,也许有些担心我java用的太少了。 问问groovy的特性,java与groovy的区别。为什么要用。 让说说自己的优点,优秀员工为什么选择你(前一家公司的时候,被评为优秀员工,简历里写上去了,这也没啥用),我就说了自己的一些优势。没啥亮点。。 其它的实在想不起来了。感觉聊得一般般吧,总觉得差点什么。。好了就这样吧。这种感觉很奇妙。 ####5. HR沟通 第二天hr打电话来了,说你通过面试了。我们来聊一些基本问题。无非就是说些为什么离职,自己的优势。期望薪资等等。最后来了一句比较郁闷的。。。她说我们这个是给我们的比邻的子公司招的研发,不是欢聚时代的。。尼玛,逗我吗,心中那个不爽。。我朋友帮我内推的时候明明是me直播,不知道怎么搞的。她问我接不接受,我说我需要考虑一下。。那就后面再联系吧。。就先挂了电话。大概就是这样吧。 吐槽,这样做事的方式让人很不能理解,起码开始就应该说清楚。不要浪费双方时间。哎,算了吧。我要去北京了。

流水账终于完了,文笔不好,写的随意,将就着看吧。哈哈

  • 面试

    面试造航母,上班拧螺丝。多面试,少加班。

    325 引用 • 1395 回帖 • 1 关注
  • 代理
    46 引用 • 103 回帖
  • 公众号
    22 引用 • 146 回帖 • 1 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • relyn

    猜到了开头没猜到结尾……

  • 其他回帖
  • someone

    正常啦

  • someone

    我也是。。

  • myzhong2018

    好多邮箱 APP 已经翻墙了,,网易邮箱大师就可以不用翻墙,能收 Gmail

  • 查看全部回帖
guobing
会当凌绝顶,一览众山小

推荐标签 标签

  • Spark

    Spark 是 UC Berkeley AMP lab 所开源的类 Hadoop MapReduce 的通用并行框架。Spark 拥有 Hadoop MapReduce 所具有的优点;但不同于 MapReduce 的是 Job 中间输出结果可以保存在内存中,从而不再需要读写 HDFS,因此 Spark 能更好地适用于数据挖掘与机器学习等需要迭代的 MapReduce 的算法。

    74 引用 • 46 回帖 • 567 关注
  • 周末

    星期六到星期天晚,实行五天工作制后,指每周的最后两天。再过几年可能就是三天了。

    14 引用 • 297 回帖 • 4 关注
  • Bug

    Bug 本意是指臭虫、缺陷、损坏、犯贫、窃听器、小虫等。现在人们把在程序中一些缺陷或问题统称为 bug(漏洞)。

    76 引用 • 1742 回帖
  • JRebel

    JRebel 是一款 Java 虚拟机插件,它使得 Java 程序员能在不进行重部署的情况下,即时看到代码的改变对一个应用程序带来的影响。

    26 引用 • 78 回帖 • 678 关注
  • Tomcat

    Tomcat 最早是由 Sun Microsystems 开发的一个 Servlet 容器,在 1999 年被捐献给 ASF(Apache Software Foundation),隶属于 Jakarta 项目,现在已经独立为一个顶级项目。Tomcat 主要实现了 JavaEE 中的 Servlet、JSP 规范,同时也提供 HTTP 服务,是市场上非常流行的 Java Web 容器。

    162 引用 • 529 回帖 • 4 关注
  • Postman

    Postman 是一款简单好用的 HTTP API 调试工具。

    4 引用 • 3 回帖
  • 浅吟主题

    Jeffrey Chen 制作的思源笔记主题,项目仓库:https://github.com/TCOTC/Whisper

    1 引用 • 28 回帖 • 2 关注
  • SSL

    SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS 与 SSL 在传输层对网络连接进行加密。

    70 引用 • 193 回帖 • 415 关注
  • 酷鸟浏览器

    安全 · 稳定 · 快速
    为跨境从业人员提供专业的跨境浏览器

    3 引用 • 59 回帖 • 45 关注
  • C

    C 语言是一门通用计算机编程语言,应用广泛。C 语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

    85 引用 • 165 回帖
  • PWL

    组织简介

    用爱发电 (Programming With Love) 是一个以开源精神为核心的民间开源爱好者技术组织,“用爱发电”象征开源与贡献精神,加入组织,代表你将遵守组织的“个人开源爱好者”的各项条款。申请加入:用爱发电组织邀请帖
    用爱发电组织官网:https://programmingwithlove.stackoverflow.wiki/

    用爱发电组织的核心驱动力:

    • 遵守开源守则,体现开源&贡献精神:以分享为目的,拒绝非法牟利。
    • 自我保护:使用适当的 License 保护自己的原创作品。
    • 尊重他人:不以各种理由、各种漏洞进行未经允许的抄袭、散播、洩露;以礼相待,尊重所有对社区做出贡献的开发者;通过他人的分享习得知识,要留下足迹,表示感谢。
    • 热爱编程、热爱学习:加入组织,热爱编程是首当其要的。我们欢迎热爱讨论、分享、提问的朋友,也同样欢迎默默成就的朋友。
    • 倾听:正确并恳切对待、处理问题与建议,及时修复开源项目的 Bug ,及时与反馈者沟通。不抬杠、不无视、不辱骂。
    • 平视:不诋毁、轻视、嘲讽其他开发者,主动提出建议、施以帮助,以和谐为本。只要他人肯努力,你也可能会被昔日小看的人所超越,所以请保持谦虚。
    • 乐观且活跃:你的努力决定了你的高度。不要放弃,多年后回头俯瞰,才会发现自己已经成就往日所仰望的水平。积极地将项目开源,帮助他人学习、改进,自己也会获得相应的提升、成就与成就感。
    1 引用 • 487 回帖 • 2 关注
  • etcd

    etcd 是一个分布式、高可用的 key-value 数据存储,专门用于在分布式系统中保存关键数据。

    6 引用 • 26 回帖 • 546 关注
  • RabbitMQ

    RabbitMQ 是一个开源的 AMQP 实现,服务器端用 Erlang 语言编写,支持多种语言客户端,如:Python、Ruby、.NET、Java、C、PHP、ActionScript 等。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。

    49 引用 • 60 回帖 • 347 关注
  • PHP

    PHP(Hypertext Preprocessor)是一种开源脚本语言。语法吸收了 C 语言、 Java 和 Perl 的特点,主要适用于 Web 开发领域,据说是世界上最好的编程语言。

    179 引用 • 408 回帖 • 484 关注
  • HTML

    HTML5 是 HTML 下一个的主要修订版本,现在仍处于发展阶段。广义论及 HTML5 时,实际指的是包括 HTML、CSS 和 JavaScript 在内的一套技术组合。

    108 引用 • 295 回帖 • 3 关注
  • 游戏

    沉迷游戏伤身,强撸灰飞烟灭。

    180 引用 • 821 回帖
  • 星云链

    星云链是一个开源公链,业内简单的将其称为区块链上的谷歌。其实它不仅仅是区块链搜索引擎,一个公链的所有功能,它基本都有,比如你可以用它来开发部署你的去中心化的 APP,你可以在上面编写智能合约,发送交易等等。3 分钟快速接入星云链 (NAS) 测试网

    3 引用 • 16 回帖 • 1 关注
  • SQLServer

    SQL Server 是由 [微软] 开发和推广的关系数据库管理系统(DBMS),它最初是由 微软、Sybase 和 Ashton-Tate 三家公司共同开发的,并于 1988 年推出了第一个 OS/2 版本。

    21 引用 • 31 回帖
  • 架构

    我们平时所说的“架构”主要是指软件架构,这是有关软件整体结构与组件的抽象描述,用于指导软件系统各个方面的设计。另外还有“业务架构”、“网络架构”、“硬件架构”等细分领域。

    143 引用 • 442 回帖
  • ZooKeeper

    ZooKeeper 是一个分布式的,开放源码的分布式应用程序协调服务,是 Google 的 Chubby 一个开源的实现,是 Hadoop 和 HBase 的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。

    59 引用 • 29 回帖 • 3 关注
  • HBase

    HBase 是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的 Google 论文 “Bigtable:一个结构化数据的分布式存储系统”。就像 Bigtable 利用了 Google 文件系统所提供的分布式数据存储一样,HBase 在 Hadoop 之上提供了类似于 Bigtable 的能力。

    17 引用 • 6 回帖 • 59 关注
  • Facebook

    Facebook 是一个联系朋友的社交工具。大家可以通过它和朋友、同事、同学以及周围的人保持互动交流,分享无限上传的图片,发布链接和视频,更可以增进对朋友的了解。

    4 引用 • 15 回帖 • 443 关注
  • 倾城之链
    23 引用 • 66 回帖 • 160 关注
  • 脑图

    脑图又叫思维导图,是表达发散性思维的有效图形思维工具 ,它简单却又很有效,是一种实用性的思维工具。

    31 引用 • 97 回帖
  • CSDN

    CSDN (Chinese Software Developer Network) 创立于 1999 年,是中国的 IT 社区和服务平台,为中国的软件开发者和 IT 从业者提供知识传播、职业发展、软件开发等全生命周期服务,满足他们在职业发展中学习及共享知识和信息、建立职业发展社交圈、通过软件开发实现技术商业化等刚性需求。

    14 引用 • 155 回帖
  • V2EX

    V2EX 是创意工作者们的社区。这里目前汇聚了超过 400,000 名主要来自互联网行业、游戏行业和媒体行业的创意工作者。V2EX 希望能够成为创意工作者们的生活和事业的一部分。

    16 引用 • 236 回帖 • 269 关注
  • Typecho

    Typecho 是一款博客程序,它在 GPLv2 许可证下发行,基于 PHP 构建,可以运行在各种平台上,支持多种数据库(MySQL、PostgreSQL、SQLite)。

    12 引用 • 67 回帖 • 445 关注