2017年面试总结

  因为一些外在和个人原因,犹豫大半年后,笔者从58到家离职,从6月10日提出离职到7月10日滚蛋,将近有1个月时间在工作、面试、选择中度过,期间养成了写博客做笔记的总结习惯。现在新工作定下来,也是时候对这段时间面试经历做一次总结(笔者是做JAVA开发,面试也是JAVA开发岗位)。

面试的公司:未来汽车(NIO)、老虎证券、京东、滴滴、阿里、WiFi万能钥匙、美团

笔者工作经历:

2011.07从北京交通大学 软件工程毕业

2011.07-2014.12 NEC:专注中间件ESB JERSEY WSRM等的开发

2015.01-2017.07 58到家 :负责到家商家结算系统、速运交易系统、司机运营体系、速运发券系统

这几年的经历一直是按部就班,心得:一定要选对方向,跟对人。

还是说下面试的过程吧。

NIO(未来汽车,猎头介绍):是家做电动汽车的创业公司,去之前已经A轮,据说百度、腾讯、汽车之家创始人李响等投资,估值不小,入职后有8000期权(个人觉得期权太虚了,鸡肋)。

面试过程(3轮技术,1轮HR):早上10点到,10点15开始面试第一轮面试(面试官A),A面试官一来就让自我介绍:“11年校招去了NEC,做中间件...15年开始在到家做资金池,项目使用dubbo做分布式框架,redis做缓存。。。”,巴啦巴拉,项目介绍和技术实践描述下来尽量让面试官了解自己;A面试官接下来问JAVA知识:线程池实现原理(参看JUC中ThreadPoolExecutor的实现,大佬Doug Lea的杰作)、volatile具体作用(1.可见性,2 禁止指令重排,面试官反感背书,最好举例子说明下为什么禁止指令重排), HashMap的实现原理(也是大神Doug Lea,注意下JDK1.7和1.8的有很大区别,JDK1.7是数组+链表,JDK1.8是数组+链表+红黑树实现)、垃圾回收算法(标记-清除,标记-整理,复制三种算法,千万不要背书);接下来是数据库:4种事务隔离级别(要理解,最好结合spring实践下);算法:折半查找(从一堆有序数中确定某个数的位置),二叉树反转。

二轮:B面试官开场也是让自我介绍,问了垃圾回收器算法,反射( 如何变更一个没有set方法的实例的属性值,答得不好,知道spring中有一个 reflectiontestutils.setfield方法可以实现) ,MQ基本实现(生产者通过长连接如何和broker之间如何产生关联,找到最佳节点,broker集群是如何保证不丢消息,消费者以何种方式平均消费 );数据库:分库分表(水平拆分、垂直拆分,框架有阿里的corba,当当sharding-jdbc)、事务的隔离级别(unread commit,read commit,repeable,serial);算法:从多个有序数组中找出前100大数字(一开始想到的是merge算法,面试后想想可以用堆排序算法)

三轮:前2轮面了大概2个半小时,第三轮是boss面 ,主要问了秒杀系统如何实现(思路:从数据一致性(redis.setnx()和乐观锁)和限流(使用MQ,nignx,tomcat,程序做好限流))着手;之后,面试官介绍了他们的业务。这一过程大概40分钟,和前面2轮加起来有3个半小时的时间,boss给我感觉沟通能力差(这是我拒绝他们家offer的主要原因)。

小结:这是我面试第一家,问的东西还挺全也很难,幸亏有基础,也准备充分,最终还是很遗憾拒掉了他们家的offer。

老虎证券:一家小公司,主要是证券交易,据说美股的交易是在中国做的最好的,在boss直聘上跟我勾搭上,面试 约在下午2点,当时天气潮湿燥热,加上笔者是个路痴, 迟到半小时,进行了2轮面试。

一轮(A面试官):A面试官来让说项目经历(感觉自己快成复读机了),问了线程池的实现原理,数据库的事务隔离级别,垃圾回收器,算法:证券交易网站上排序(按照涨幅,成交量等顺序进行排序,个人给出的方案是先按照涨幅进行排序,标识权重,对相同权重的项目按照成交量进行排序...如此类推。

二轮(B面试官):说项目经历(复读机啊),垃圾回收的算法,zookeeper的实现原理(悲剧啊,面试官你大爷啊, paxos算法至今也没看懂)和实践(dubbo注册中心,部署多个定时任务使用zookeeper的分布式锁防止并发),redis缓存淘汰使用算法LRU实现(MD又悲剧了,不知道),证券交易中如何找到最佳的买进点和卖出点,实现最优的收益(勉强答上来,时间花了20分钟)

结果当然是没有结果,心得就是面试要端正态度,面试要认真,准备要充分。

京东:部门是虚拟平台,主要是做电费,水费,冲话费等虚拟物品买卖,面试了2轮(第3轮没去面试,感觉地方太远,技术和业务不感兴趣,拒绝了)

1轮(A面试):介绍项目经历(复读机啊复读机) ,也许是临到饭点,我前面的项目介绍花了很多时间(项目介绍中途被打断了,汗颜啊),简单问了多线程有没有用过,HashMap和HashTable的区别,是不是使用mysql.然后就没有然后了,开始二轮面试。

2轮(B面试):面试官自我介绍是京东的架构师,问了dubbo的实现原理,dubbo的优缺点,数据库的事务隔离级别,技术解决方案问了:上游业务处理后,可能有上千万的数据,每个数据需要进行n步处理,平均每次处理耗时在1s左右,如何设计这个系统,回答:定时任务扫描数据库( 还可以像从库一样读取binglog),将读取的数据发送给MQ,多个系统订阅MQ进行消息处理数据,MQ的ACK机制保证处理失败能再次处理。

2轮后将近12点30半,因为是京东6.18活动的结束后的第四天。3轮面试官在现场处理问题,要下午才有时间,笔者有其他安排约改天,后面自然没去。

滴滴:早上面试完京东,下午去面试滴滴,一南一北,横穿了大半个北京,午饭也没吃好,本来约在2点面试,结果迟到30分钟。面试的部门是QA(我嚓,看到面试介绍的时候,其实我内心是拒绝的),主要做全链路压测,模拟线上环境,链路追踪(如到家的守望者,Google Dapper),问题追踪,技术上还是挺吸引人的。面试了3轮。

1轮(面试官A):简单的自我介绍,问了JAVA的基础,Java的基本类型有哪些(8种基本类型),String类为什么是final,包装类型和解包装类型的比较(Integer a=100,Integer b=100,a==b是什么(结果当然是true);Integer a=new Integer (100),Integer b=new Integer(100), a==b是什么(结果当然是false);Integer a=1000,Integer b=1000,a==b是什么(答案是false,因为Integer类使用缓存池,-128-127中数字使用中会被缓存起来,超过后需要new对象)),ThreadLocal使用场景(如果回答上来,就会问如果对外暴露1个API,API实现需要调用很多独立服务,然后汇总起来,这些独立的服务使用ThreadLocal存放数据,主线程和子线程怎么读取ThreadLocal),算法1.将无序数据排列成有序数组,算法2:提供一个临时变量,怎么将一个栈反转过来(要求o(n),解题思路递归,将复杂问题简单化)

2轮(面试官B):简单自我介绍,volatile的原理,数据库事务隔离级别,线程池,dubbo的实现原理,分库分表的路由规则 算法:不记得了,记得很难

3轮(面试官):boss面试,项目介绍,问了并发量大概有几百兆,设计一个实时统计功能,要求找出最大那个,性能在1毫秒以内,调用方并发在百万上(主要考察对redis的集群,incr,set的使用),算法:有一个先升序后降序的数组,找出最大的数的位置。(部分面试题不记得了,问的还挺深的)

小结:滴滴的面试注重基础和算法(时间久远,上面的面试中有2个算法题忘记了,以后记得在补充吧),框架问得少,面试要主动多说。

阿里:面试还挺曲折的,杭州的面试官电话面试了6轮(4轮电话+1轮视频+1轮HR面试,每次至少4分钟),业务主要是做淘宝 天猫的商家业务,如管理购买商家商品用户积分,商家刷单管理,商家促销等等。

简单说下,按照阿里流程,第一轮通常是电话摸底,主要问:JVM中JMM 垃圾回收,HashMap的实现,volatile的2种作用。

第二轮:dubbo的实现原理(分层处理,有多少层,负载算法是如何实现的),currentHashMap的实现原理,垃圾回收(阿里很注重JVM,面试必考);数据库的隔离级别,索引原理。

第三轮:不出意外还会问JVM,不过会问项目使用什么垃圾回收器,有没有JVM的调优过;classLoader的原理,JVM中classLoader有几层,分层的意义是什么,osgi的原理;JMM,锁的实现机制(Syn和可重入锁的区别:Syn基于monitorEnter和monitorExit指令,线程在争夺对象的控制权限时若对象monitor的记录数是0可争夺,否则对象monitor计数器加1,线程放弃对象monitor控制则记录数减一,Syn只能实现非公平锁,执行中不能主动中断;可重入锁,基于AQS实现,在执行中中断,可实现非公平锁和公平锁)

第四轮:和前面3轮一样,问的更细,锁机制(偏向锁,轻量级锁,锁),Hash一致性(平衡性,单调性,分散性,负载性,实现是虚拟环实现),MQ的实现原理,分表的规则;数据库调优,数据库中锁的实现机制,大分页问题;使用过哪些设计模式

第五轮:视频面试,idea上写出单例模式和2个线程交替打出1,2,3,4,5,6,7,8....1000(非常注重变量命名,方法的名称)

第六轮:HR面试,强势的HR,批的我体无完肤。

小结:阿里的面试,应该是距离太远没有具体问算法,也可能面试官觉得没有必要问,注重JVM和框架的研究以及代码实践能力。

美团:同时面试了2个部门,应该是他们招聘系统有问题吧,第二个部门在技术3面的时候要求拒掉第一个部门的offer(哥们太耿直了,不该说有部门也在面试我)。具体啥业务就不说了。流程差不多,问题也差不多。

第一轮:简单自我介绍,主要考察项目经验和系统架构能力:要求画出自己拿得出手的项目的上下游系统,时序图。数据库:用户下单的程序存在问题,产生了重复数据,要求写出保留时间最新的数据删除多余的数据的sql。算法:1个单向链表,提供3个临时变量,要求求出链表的长度(感觉面试官题目出错了,思路:使用了1个临时变量执行链表的头,临时变量的next的不为null,计数器加1,变量的next赋值给临时变量,如此求出链表长度)

第2轮:自我介绍,dubbo的实现原理,估计美团有题库吧,按着题库问,然后打分(1.线程池的实现原理 2.HashMap在多线程情况下会发生什么(回答:线程不安全,可能发生死锁造成性能低下)3.mysql的引擎有哪些,innodb和myisam有什么区别 3.分布式事务中2段提交分别指什么 ,jta了解过吗 4.Syn和可重入锁区别是什么 5.mysql的bingLog原理是什么,主从如何实现数据同步,如何选择:是多主多从,还是1主多从   6.分库分表有几种方式  7.数据库调优(索引不生效举例,如何诊断)8.数据索引的实现原理是什么(B+树,hash)  9,数据库锁的实现机制是什么   10.redis的存储结构是什么)。

算法1:1.将数字转化成汉字(如1001,一千零一), 思路:将对应每位的单位存下来("",“十”,“百”,“千”,“万” ,”十”,“百”,“千”,“万”...),逐一读取要数字,读取的数如非0时找到对应的数字(如2,读取二),然后找到单位(("",“十”,“百”,“千”,“万” ,”十”,“百”,“千”,“万”...),关键点在读取到0时要注意零的读取,如101对应一百零一,101001对应十万零一千零一。

算法2:将一个2维数组,从外层向里层逐一打印 思路:循环(横向打印(向右),竖向打印(向下),横向打印(向左),竖向打印(向上),标记打印的层数,下次如此打印时横向和竖向要比前一个少打印2个),直到标记的层数大于或等于数组的高度时终止。

算法3:如下图,可以扫描到图中柱子的的长度和高度以及坐标,求出阴影面积。解题思路:找出最大的高度的元素E1,得出面积减去该元素的之前柱子的面积得到面积A1,在该元素后面的数据中找到最高的元素E2,求出E1和E2之间的阴影面积A2,。。。如此类推,得到阴影面积A1+A2+A3。。。

3轮:boss面试,怎么合理安排任务,面试中使用开发方式(瀑布还是敏捷),都使用哪些设计模式,如果是负责人,你会关心哪些点(回答:需求拆分,大概排期,设计,设计评审,详细排期,进度(晨会和项目站会,邮件),代码质量(sonar可看出),单元测试,上线后项目质量,项目总结)

小结:全方位考察面试者的技术、沟通、管理能力,个人感觉美团技术氛围不错


自己也看了不少书:《深入理解Java虚拟机》 《Netty权威指南》 《重构与模式》《图解Http协议》

《Redis实践》《图解tcp/ip》《整洁代码之道》《数据结构与算法分析》

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容

  • 好久没写博客,这一阵又去面试了几家公司,所以聊一聊这大半年的面试经历,面了几家公司发现一个规律,越是出名,技术牛逼...
    王小宝wy阅读 2,310评论 0 19
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,401评论 25 707
  • I 卷积神经网络简述 <卷积神经网络>傅里叶变换(即一个波形),可以有不同的正弦函数和余弦函数进行叠加完成。卷积神...
    嗯我是一个胖子阅读 823评论 0 0
  • 大家好,我是大家的知心大哥哥大E君。 我见过很多刚从校门里走出来的应届生,也比较喜欢应届生,原因是可塑性强。 如果...
    运营狮训练营阅读 1,280评论 1 2
  • 可能你把我的任性小心眼当作野蛮不讲理 可能你看着我乱冲你发火会感觉我胡搅蛮缠精神病 可能你不能接受我挑剔太多东西 ...
    哀慕熙荣阅读 161评论 0 1