京东面试回顾(通过)

本贴最后更新于 3206 天前,其中的信息可能已经时移世易
昨天刚刚面完京东,乘着还记得一些细节,先写下了。 #### 1. 前奏 和京东是这么联系上的:我在boss直聘上有简历,然后京东商城的一个研发经理找我要不要来面试一下。我那时候还在深圳,就说了还在深圳呢,最近还不找工作,就说后面找工作就找他。后来我找工作的时候主动联系了他。那时候是晚上刚吃完饭,我手机上聊了一下,说自己要找工作了,啥时候能聊一下,结果他反应很快。。。马上让人打电话给我先来个电话面。我那时候刚吃完饭,状态不好,算了,硬着头皮面吧!。 #### 2. 电话面 不一会儿,有面试官打电话给我了。气氛比较轻松,面试官有说有笑,说这么晚面试,可能不太好,没关系,我们简单聊一下,面试官先开起了玩笑,后来就了解了一下我的基本情况。 面试正式开始了。先问我,从我在浏览器输入一个域名开始,到显示页面,中间发生了什么。。这种题我经常看到,以为面试官不会问这种题,结果还真问。我就按自己的理解说了一下。这种题答得不好。我没有专门去准备,如果这种题要答完美,还是要做很多功课的。 再就是问sql注入问题。我们项目中怎么预防的。先让我解释一下sql注入问题。再就是问数据库索引的东西,让我解释一下索引是怎么回事,我就从b树讲起,说了大半天,这个准备比较多,没问题。后来我就主动说起了数据库主从备份,讲了一回数据库主从备份原理。面试官听完后很满意,说嗯不错,你的知识面还是很广的,一般工作一年的人不会了解这么多,主从备份原理很多人都不会。我听了,一下子放松了很多,感觉一下子好了很多。这种感觉很奇妙,面试官夸你的时候,往往很容易通过面试的。一句赞扬的话,就可以激发你的洪荒之力。哈哈。一句就够了。再后面说主从复制延时的问题。都说的挺好的。 再者就说到了数据库分库分表的问题,横向切分,纵向切分,分区,分区类型都讲了,还好,没啥问题。 如何查询一个sql是否走了索引,那就是explain咯, 从输入jd.com到显示页面,中间发生了什么。。这个问题详细说可能几天几夜说不完。说出自己认为重要的部分就可以了。 cdn技术相关的问题,为什么用cdn,这些资源放在哪里等等 nginx的作用,除了反向代理还能干吗。。很多,http服务器,限流,屏蔽ip等等。 他看我是做微信公众号比较多,就问了一些微信公众号相关的问题,他之前也做过,对这些方面还是很了解,问了一些比较好的问题。具体偏向业务的,就不说了。 后来就算电话面通过了,然后研发经理就约时间电话面。 #### 2. 现场一面 终于来北京了。8.21到北京,22早上十点半去面试。好累。。京东在大兴区亦庄,好远,那里比较偏僻,不过好处就是附近能租到房,生活成本比较低。 一面上来上来就是问项目,我还是说了我的公众号估值系统。我觉得是难度最大的。又是一通讲,确实感觉每天重复同样的话心有点累。 问nginx的模块熟悉吗,用到了哪些,能说出几个名字吗? 项目讲完就问了其他一些基础 最后让我等一下,准备二面 #### 3. 现场二面 二面来的是个架构师,定级主要是由他来做吧。刚开始也是问项目。但是他不愿意听一些偏业务的东西。直接让你说难点在哪里,高并发如何体现这种要结果的东西。好吧,我简单点说。就说了些难点。 接着问http的问题,为什么是无状态的,状态码,session,cookie,cookie大小限制是多少。三次握手,四次挥手,让我在纸上画出来解释。每次传递的包的名字是什么。 再问多线程,实现方式由几种,给我出了一个题,大概意思就是说a里面有bcd三个方法,分别调用时间是40ms,20ms,40ms,c依赖b的执行结果。让我如何优化让调用时间缩短。。我说了多线程方式,回调机制,还让我写代码。。这个答了一阵子,感觉答的一般吧,我也不知道正确答案是什么。 问到redis了,说你们用过里面那些东西,我就说用存储比较多,list,map这两种方式最多。还有其他的吗,他明显不满意。我就说了redis的分布式锁。让我解释,我解释的时候发现我也没有完全理解这个分布式锁是如何实现的,只说了个大概,让我列出用到的函数,我去。。忘记了,没答上来,感觉很糟糕。。接着问nginx,用了哪些,我说反向代理,还有吗。。没有了。。又是不满意。。我就说可以屏蔽ip,限制接口调用次数,他说那就是限流咯,那你知道函数名字叫什么吗,实际用过吗。。没有啊,哎好奔溃。我就说查查文档不就知道了。在nginx.conf里面配置。多模块知道吗?还真不了解。。被问住了,只能老老实实的说不知道。 问jvm内存区,让我画出内存区分布,我画出来一个个解释。由这个引申到垃圾回收,我又解释了四种垃圾回收算法,如何判断对象要被回收,我说引用计数器(其实是根搜索算法,我说错了),好,有什么缺点吗?我说垃圾对象间引用会产生内存泄漏,那你觉得jvm里用了吗,好吧。。没用。说了其他几种,说到复制算法,他问了这是哪个区用的,为什么要分代?full gc发生的时间。。一系列问题。这部分答的还行。 再问内存泄漏,让我写个内存泄漏的例子。。妈蛋,一时没写上来。说明我还是太菜了。 接下来他给我写了类似这么一道题: ``` String s1 = "abc"; String s2 = "ab"; String s3 = "c"; String s4 = s2 + s3; String st0 = "helloworld"; String st1 = "helloworld"; String st2 = "hello" + "word"; System.out.println(st0 == st2); System.out.println(s1 == (s2 + s3)); System.out.println(s1 == s4); ``` 打印出是false还是true。这个答的不好,我先试试。基础还是有问题。哎。。这个问题欢迎讨论哦。答案都是false 设计模式了问了,我就说了代理模式,单例模式,责任链模式等等。 线程池的原理,这个在《Java并发编程的艺术》中有深入讲解,我答得不错。几个关键点,initPoolSize,corePoolSize,maxPoolSize, 队列。都说上来,再一个他的创建线程的规则是怎么样的说上来就没问题。 再问我简历上写的2pc,3pc,选举,我慢慢开始讲,他觉得我会,就不让我说了,可能主要是试试简历内容是否真实,写上去的东西有没有不懂的。 最后也过了 #### 4. 现场3面 接下来就是研发经理面了。之前打电话联系过。比较熟悉。他说通过之前的面试大概了解了。就是基础比较好,知识面也很广,毕业一年的话这个水平算很不错了。但是你广度上去了,必须深度就不行了,有些东西你学习的不够深入,这方面需要注意下。这点觉得说的很对,深度需要场景去实践,只是看书能有多深,哎,继续努力。他接着说,总体上来说还是不错的,那我就聊一下我看重的一些东西吧。 先了解项目,我还是说的是公众号估值的项目。说了http header伪造的东西。然后给我实际场景让我设计如何实现,比如京东要搞一场促销,要发出1000份优惠券,优惠力度比较大,每张价值500元。并发量很大。你如何设计,记住要保证两点,每个用户只能领到一次,并且阻止恶意流量。让我画出详细的流程。我想到的核心就是先生成1000份优惠券号,然后放到不同的缓存中,这样防止从一个redis中读,并发降低。更多细节不说了,设计的不好吧。达不到要求。后来在他的提示下,想出ngixn里做限流,但是这样的话会影响正常流量,比如京东里面,出口的公网ip就那么几个,如果有人恶意攻击,其他用户是正常访问,那么你把公网ip都封了。。影响其他用户了。。我确实没经验,不知道应该怎么处理,他也没告诉我该怎么做。这些都偏实际工作场景,感觉对实践要求比较高吧。还有问题就是我的思路是先去查用户有没有领过,没领过的话再去抢优惠券。他说这样不合理,我现在恶意攻击,比如同时发出1000个请求,那么一查询,发现都没有领过,流量到跑到抢占优惠券那里去了。这么高的并发完全把系统资源占完了,正常流量都进不来了。哎,这已经超出我的能力范围了,没做过这么高并发、对安全性要求这么高的系统。没办法了。 没想到还是抓住redis问,抓住nginx问。我只说了我知道的那些,回答不是和好,因为很多东西也没有用过。接下来恶补一下。 到中午时间了。面试官带我去京东食堂吃饭,吃完带我去喝了一些饮料。一路有说有笑,感觉和这位面试官很能谈得来,他也是广州大学城毕业的,让我猜是哪个学习毕业的,一路比较有趣。 吃完饭继续聊。聊会技术之后就说公司的情况,这个项目组做什么的,为什么招人。主要向我介绍情况。我也问了一些问题。这时候就比较轻松。 #### 5. 最后一面 这应该是三面研发经理的上级了,也算是大boss了。问我一些基本情况。接着问,你觉得你的优点是什么,缺点是什么,对工作影响比较大的缺点?我说了保守,缺乏创新,时间分配不太合理,不太善于拒绝别人。。他听了很不满意。说这能对工作产生很大影响吗,继续说个大的,我觉得这也可大可小啊,也可以产生很大影响啊。说了半天还是没有一个让满意的。哎,我觉得这装逼有点过了,问这么空洞的问题,适可而止吧,难道你还要我说我好吃懒做,好逸恶劳,活越少越好,钱越多越好。。这样会让我过吗?我觉得纯粹就是刁难人。我心想罢了,面试过不了,跟面试官不在一个频道上,聊不到一起。后来让我问他问题,我就问了京东的自营模式的优缺点,为什么没盈利等等问题。不过还好,他耐心给我解释了。最后他问我,那假如你过了,你觉得你最少呆几年?我说了3-4年。。感觉是不是还有希望。。。就这样和boss聊完了。 面完之后研发经理又叫我聊了一下。问我和他上级聊得怎么样,我心里好苦,我知道聊的很差,不过我没说,我大概说就问了下性格的优缺点,没啥特别的。感觉他对我比较看好,说我觉得你的培养潜力是不错的,我看好你,我这个项目组是京东最核心的项目组了,你来了之后提高会很多的。。balala说了很多。这时候心里还好受了一点。挺感激他的。 再回去的地铁上,接到了研发经理打来的电话,说面试通过了,接下来会走流程,跟hr沟通薪资。大概就是这样面试通过了 听了之后也没有多少激动,感激跟大boss聊的不好,而且薪资不知道多少,感觉比较低。所以没啥值得激动的。等后面的沟通吧。 面试就像找对象,看对眼了一切都好说,确实有这种体会。 继续努力提高自己吧,还有很多不足的地方。加油加油!

又一篇流水账记完了。哈哈

  • 面试

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

    326 引用 • 1395 回帖

相关帖子

优质回帖
  • myzhong2018 1 赞同

    java 的内存泄漏其实就是不要的对象却没被回收掉,就是还是可达的。。可以用数组封装个栈的例子。Vector 里面的 removeElementAt() 方法 elementData[elementCount] = null; /* to let gc do its work */ 没这句就是了,,

欢迎来到这里!

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

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

    String st0 = "helloworld"; String st2 = "hello" + "word";
    结果为 false 的原因,仅仅是少了一个‘l’字符 orn.

  • 其他回帖
  • zonghua

    s1 = “abc”,s2 = “ab”, s3=“c”,判断 s1 == s2 + s3

    true,都是内存池里找

    1 回复
  • someone

    也没有啦,很多地方都不深入,继续努力。谢谢看完[em00]

  • abners

    1472700728879

    看到你这句话,瞬间想到了宝宝心里苦

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

推荐标签 标签

  • gRpc
    11 引用 • 9 回帖 • 95 关注
  • 智能合约

    智能合约(Smart contract)是一种旨在以信息化方式传播、验证或执行合同的计算机协议。智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。智能合约概念于 1994 年由 Nick Szabo 首次提出。

    1 引用 • 11 回帖 • 4 关注
  • OkHttp

    OkHttp 是一款 HTTP & HTTP/2 客户端库,专为 Android 和 Java 应用打造。

    16 引用 • 6 回帖 • 91 关注
  • QQ

    1999 年 2 月腾讯正式推出“腾讯 QQ”,在线用户由 1999 年的 2 人(马化腾和张志东)到现在已经发展到上亿用户了,在线人数超过一亿,是目前使用最广泛的聊天软件之一。

    45 引用 • 557 回帖 • 2 关注
  • 爬虫

    网络爬虫(Spider、Crawler),是一种按照一定的规则,自动地抓取万维网信息的程序。

    106 引用 • 275 回帖 • 1 关注
  • Hprose

    Hprose 是一款先进的轻量级、跨语言、跨平台、无侵入式、高性能动态远程对象调用引擎库。它不仅简单易用,而且功能强大。你无需专门学习,只需看上几眼,就能用它轻松构建分布式应用系统。

    9 引用 • 17 回帖 • 643 关注
  • Docker

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的操作系统上。容器完全使用沙箱机制,几乎没有性能开销,可以很容易地在机器和数据中心中运行。

    496 引用 • 934 回帖
  • ngrok

    ngrok 是一个反向代理,通过在公共的端点和本地运行的 Web 服务器之间建立一个安全的通道。

    7 引用 • 63 回帖 • 653 关注
  • 强迫症

    强迫症(OCD)属于焦虑障碍的一种类型,是一组以强迫思维和强迫行为为主要临床表现的神经精神疾病,其特点为有意识的强迫和反强迫并存,一些毫无意义、甚至违背自己意愿的想法或冲动反反复复侵入患者的日常生活。

    15 引用 • 161 回帖 • 3 关注
  • 负能量

    上帝为你关上了一扇门,然后就去睡觉了....努力不一定能成功,但不努力一定很轻松 (° ー °〃)

    89 引用 • 1251 回帖 • 398 关注
  • Linux

    Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 Unix 的多用户、多任务、支持多线程和多 CPU 的操作系统。它能运行主要的 Unix 工具软件、应用程序和网络协议,并支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

    954 引用 • 944 回帖
  • 又拍云

    又拍云是国内领先的 CDN 服务提供商,国家工信部认证通过的“可信云”,乌云众测平台认证的“安全云”,为移动时代的创业者提供新一代的 CDN 加速服务。

    20 引用 • 37 回帖 • 579 关注
  • GAE

    Google App Engine(GAE)是 Google 管理的数据中心中用于 WEB 应用程序的开发和托管的平台。2008 年 4 月 发布第一个测试版本。目前支持 Python、Java 和 Go 开发部署。全球已有数十万的开发者在其上开发了众多的应用。

    14 引用 • 42 回帖 • 819 关注
  • DNSPod

    DNSPod 建立于 2006 年 3 月份,是一款免费智能 DNS 产品。 DNSPod 可以为同时有电信、网通、教育网服务器的网站提供智能的解析,让电信用户访问电信的服务器,网通的用户访问网通的服务器,教育网的用户访问教育网的服务器,达到互联互通的效果。

    6 引用 • 26 回帖 • 535 关注
  • AngularJS

    AngularJS 诞生于 2009 年,由 Misko Hevery 等人创建,后为 Google 所收购。是一款优秀的前端 JS 框架,已经被用于 Google 的多款产品当中。AngularJS 有着诸多特性,最为核心的是:MVC、模块化、自动化双向数据绑定、语义化标签、依赖注入等。2.0 版本后已经改名为 Angular。

    12 引用 • 50 回帖 • 512 关注
  • FFmpeg

    FFmpeg 是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。

    23 引用 • 32 回帖
  • 倾城之链
    23 引用 • 66 回帖 • 169 关注
  • MongoDB

    MongoDB(来自于英文单词“Humongous”,中文含义为“庞大”)是一个基于分布式文件存储的数据库,由 C++ 语言编写。旨在为应用提供可扩展的高性能数据存储解决方案。MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似 JSON 的 BSON 格式,因此可以存储比较复杂的数据类型。

    91 引用 • 59 回帖 • 4 关注
  • 自由行
    2 关注
  • Thymeleaf

    Thymeleaf 是一款用于渲染 XML/XHTML/HTML5 内容的模板引擎。类似 Velocity、 FreeMarker 等,它也可以轻易的与 Spring 等 Web 框架进行集成作为 Web 应用的模板引擎。与其它模板引擎相比,Thymeleaf 最大的特点是能够直接在浏览器中打开并正确显示模板页面,而不需要启动整个 Web 应用。

    11 引用 • 19 回帖 • 395 关注
  • Windows

    Microsoft Windows 是美国微软公司研发的一套操作系统,它问世于 1985 年,起初仅仅是 Microsoft-DOS 模拟环境,后续的系统版本由于微软不断的更新升级,不但易用,也慢慢的成为家家户户人们最喜爱的操作系统。

    227 引用 • 476 回帖
  • 博客

    记录并分享人生的经历。

    273 引用 • 2388 回帖
  • Ubuntu

    Ubuntu(友帮拓、优般图、乌班图)是一个以桌面应用为主的 Linux 操作系统,其名称来自非洲南部祖鲁语或豪萨语的“ubuntu”一词,意思是“人性”、“我的存在是因为大家的存在”,是非洲传统的一种价值观,类似华人社会的“仁爱”思想。Ubuntu 的目标在于为一般用户提供一个最新的、同时又相当稳定的主要由自由软件构建而成的操作系统。

    127 引用 • 169 回帖
  • Notion

    Notion - The all-in-one workspace for your notes, tasks, wikis, and databases.

    10 引用 • 77 回帖
  • Rust

    Rust 是一门赋予每个人构建可靠且高效软件能力的语言。Rust 由 Mozilla 开发,最早发布于 2014 年 9 月。

    58 引用 • 22 回帖 • 12 关注
  • V2Ray
    1 引用 • 15 回帖 • 3 关注
  • Outlook
    1 引用 • 5 回帖 • 3 关注