面试服务器开发方向 C++ 实习生时,大致会被问到哪些问题

这个问题我一定要回答啊!!&br& 今年寒假坐火车回家时,认识一个比我大三岁的男生,挺聊得来的。之前我一直用的扣扣音乐或者酷狗音乐,听一些杂七八拉的大众流行音乐,他分享了我一首歌(丢火车的《晚安》)并推荐我用网易音乐,后来经常分享歌曲给我,都是民谣之类的独立音乐,真的超级好听啊,从此入了坑!! &br&宋东野和马頔的歌想必会有很多人推荐,就不写了。&br&陈粒:《性空山》《走马》《种种》《易燃易爆炸》《PONY》《光》《绝对占有,相对自由》《不灭》《远辰》 《历历万乡》《奇妙能力歌》《如也》&br&&br&丢火车:《晚安》《卡尔加里路》《火车日记》《茶底世界》《白兰鸽巡游记》 &br&&br&谢春花:《荒岛》《一棵会开花的树》《借我》《我一定会爱上你》《黑夜虽长,请别用来遗忘》《雀斑少女》《唱不了一首欢乐的歌》 &br&&br&马潇:《疯魔成性》马潇与灰杜鹃:《请你爱我或给我一把枪》《幸有一曲可回首》《春天》《兰花》《无处可逃》《断章》《四月的风》&br&&br& Hello Nico:《接下来如何》《辫子》《出走》《你是被抹去的那一段风景》《花》 《鱼》《荒芜》&br&&br&海龟先生:《男孩别哭》《内人广林》《微笑》《玛卡瑞纳》《她》《史努比》 &br&&br&陈鸿宇:《理想三旬》《途中》《浓烟下》《行歌》《霓虹深处》《你只是经过》 《早春的树》 《呼吸》&br&&br&花粥:《悲催了的姑娘》《二十岁的某一天》《说来说去》《给未来的你》《西安》《在路上》&br&&br&李志:《关于郑州的记忆》《天空之城》《梵高先生》《墙上的向日葵》《热河》《山阴路的夏天》《定西》《杭州》《这个世界会好吗》《下雨》&br&&br&王梵瑞:《时间一枪打在我身上》《青春》《鼓楼先生》《鸽子》《城堡》&br&&br&万能青年旅店:《揪心的玩笑与漫长的白日梦》《秦皇岛》《喜剧》&br&&br&赵雷:《青春无处安放》《已经是两条路上的人》《未给姐姐递出的信》《成都》《吉姆餐厅》《浮游》《夏天》《少年锦时》《民谣》《辞行》《南方姑娘》《理想》《画》&br&&br&曹方:《海鸥》《冰川》《门》《珊瑚》《丁香》《雨虹》《南部小城》&br&&br&鹿先生乐队:《春风十里》&br&&br&生祥与瓦窑坑3:《临暗》(这首歌是客家话,翻译过来大概是这个意思:又这么晚这么晚下班,一个人住在都市,我的眼睛醉醉,脑袋昏昏,好像自己已经灰飞脑散;散步时我失了神,在小街小巷走来走去,就是想听听,母亲叫小孩洗澡的声音,就是想闻闻,灶头传出的煎鱼炒菜的气味这么晚了,想起爷爷讲的家族史,我们这家每带都种田,现在我在都市打拼,要学“开基祖”……)我特别特别喜欢!就不知道大家觉得怎么样了。&br&&br&最后分享几首最近喜欢听的歌:&br&许美静:《荡漾》&br&Agnes obel : Riverside,Dorian &br&中岛美嘉:仆が死のうと思ったのは(曾经我也想过一了百了)&br&RSP:さくら ~あなたに出会えてよかった~(樱花樱花,想见你)&br&王晰:Besame Mucho &br&&br&好紧张,潜水这么久,第一次在知乎答题,希望有帮助。&br&&br&&br&&img src=&/920a897dcbf5cda4dbfcb9a68daf9984_b.png& data-rawheight=&85& data-rawwidth=&600& class=&origin_image zh-lightbox-thumb& width=&600& data-original=&/920a897dcbf5cda4dbfcb9a68daf9984_r.png&&&br&&br&&br&感谢大家的点赞和收藏首更:&br&更新之前声明两点:&br&1、每个人的经历以及当时的心境不同,所以喜欢的歌也不尽相同,就只收录了部分我喜欢的,还有少许别人比较喜欢的,见谅哈。另外谢谢评论里大家的建议。(比如我尤其不喜欢花粥的《老中医》,歌词我真的……我到现在大概说只说过三次脏话,都被骂女孩子家家的说什么脏话之后,就再也不说了。。。好吧扯远了。。总之类似这样放荡不羁粗犷歌的我欣赏不来,但存在即是合理,有很多人喜欢,我还是放了些,总之我要表达的就是,你们自己取舍吧。)&br&2、说到民谣和摇滚,我确实没有注意到这点,不过我想大多数人听歌可能都是听的一种情怀,一些回忆,能触动心弦就够了,听民谣的人不一定就不听摇滚,反正我的歌单各种风格的歌都有,只是某类多一些少罢了,硬要区分民谣跟摇滚的话,让民谣摇滚(Folk Rock)情何以堪?&br&&br&燕池:《客从何处来》《人海》《北国》《黑暗是个温柔的胖子》《将进酒》《从前慢》这首歌的词是木心写的,大家应该都很熟悉:“从前的日色变得慢,车,马,邮件都慢,一生只够爱一个人。”&br&&br&尧十三:《北方的女王》《南方的女王》《旧情人,我是时间的新欢》《雨霖铃》《失之城》《不陌生的人》《让我弹琴给你听》《静夜》《忘不了》《美人》《宝贝说再见》《鸽子吧》《牧羊曲》还有这首超长名字的《如果下雨的时候……》也还行&br&&br&万晓利:《北方的北方》《女儿情》《姑娘啊,你真傻》《这一切没有想象那么糟》《狐狸》《陀螺》《鸟语》《孤独鸟》《妈妈》《初夏》《夏末》&br&&br&贰佰:《玫瑰》《妈说》《阿拉善》《狗日的青春》《我在太原和谁一起假装悲伤》除了玫瑰,最后两首不是特别喜欢。&br&&br&好妹妹乐队:《冬》《归乡》《西窗的雨》《往事只能回味》《你曾是少年》《一个人的北京》《我也可以是流浪的诗人》《普通人》《一封家书》《晚风》《送你一朵山茶花》《清平调》《昨天的你的现在的未来》(这歌名在荔枝FM上有个同名的电台,主播是背着吉他的蝙蝠女侠,我还挺喜欢的。)&br&&br&好就酱,最近找来听的就这些了,有机会再更,谢谢大家么么哒。(那些问我跟那个男生后来怎么样的朋友们,你们放错重点啦!并没有怎么样,我的重点是入了网易这个坑好吗!?我现在每天早上必点开签到,晚上必听歌入睡!还有我没有为网易写软文啦,我是无辜滴!)&br&只收藏不点赞的都是坏人~
这个问题我一定要回答啊!! 今年寒假坐火车回家时,认识一个比我大三岁的男生,挺聊得来的。之前我一直用的扣扣音乐或者酷狗音乐,听一些杂七八拉的大众流行音乐,他分享了我一首歌(丢火车的《晚安》)并推荐我用网易音乐,后来经常分享歌曲给我,都是民…
...sicp和csapp,算导都读过部分,按我自己的学习经验来看,初学者如果看这两本书...只能把原本对编程美好的愿景和兴趣全部磨灭,入门编程最好的方法是提高兴趣,做各种各样的小工具是个不错的方法,不如说简单的文件加密工具,图片处理工具 ,rss客户端,网页爬虫之类的。当你能在自己的主力语言上和熟练的使用各种标准io库,网络库,gui库的时候就基本入门了。然后对编程产生更深层次的兴趣,比如cpu的结构啊,exe是怎么样在cpu上跑起来的,在内存上是怎么布局的,计算密集型的程序怎么并行化处理啊,高级语言怎么变成exe的啊。这时候你就需要csapp,龙书,现代操作系统啊这样的书了.。。至于sicp..scheme确实能对我们这种cstyle程序员的三观进行冲击,但是个人不觉得不算必读...
...sicp和csapp,算导都读过部分,按我自己的学习经验来看,初学者如果看这两本书...只能把原本对编程美好的愿景和兴趣全部磨灭,入门编程最好的方法是提高兴趣,做各种各样的小工具是个不错的方法,不如说简单的文件加密工具,图片处理工具 ,rss客户端,…
&p&个人从事后台开发,当然是linux环境下的了。举几个常见的问题。&/p&&p&1. 数据结构基础。比如实现一个最简单的哈希表。&/p&&p&2. 操作系统基础。linux进程模型,堆/栈的区别,大概的位置,各往哪个方向生长,各类变量存储在哪些区域;更深一点可能会问动态库与静态库的区别,因为这个在生产环境中常见,动态库映射在进程模型的哪里;其他常见如僵尸进程、线程共享等问题。&/p&&p&3. tcp/ip基础。比如常问三次握手,四次挥手,为什么要四次;time_wait状态相关问题;mtu分片问题;现在一般不会问tcp/ip头大小这么蛋疼的问题了,但可能会问tcp头部几个状态字段,比如syn/psh/fin/rst/urg/ack....在什么情形下会置1,这个就问得比较深了;深入的还有滑动窗口与拥塞控制的大致原理。&/p&&p&4. socket编程。阻塞/非阻塞的区别;事件循环select/poll/epoll;常见的网络库read/write会怎样实现(可以参考muduo);有面试官会问客户端是否需要bind;tcp/udp 协议编程时的细微区别...&/p&&p&5.工具相关。vim/makefile/gdb/g++ ...&/p&&p&6. c++相关。免不了问虚函数;常见stl实现和操作;extern c 干嘛的。&/p&&p&7. 脚本相关。shell/perl/python 至少会一门吧,运维/部署都需要。&/p&&p&上述列举的都是比较常见,比较简单的问题。不过能把这些答好已经不容易了。&/p&&p&PS:评论中有人补充了一些问题,可以参考看看。&/p&
个人从事后台开发,当然是linux环境下的了。举几个常见的问题。1. 数据结构基础。比如实现一个最简单的哈希表。2. 操作系统基础。linux进程模型,堆/栈的区别,大概的位置,各往哪个方向生长,各类变量存储在哪些区域;更深一点可能会问动态库与静态库的区…
&p&正好最近做了一个豌豆荚研发管理的分享,稍微整理了一份分享到这里,一起交流学习。&/p&&br&&p&首先,画一下我们通常讲研发管理的范畴:确定如何立项,如何确定产品目标,如何把控项目进度,如何驱动产品一代代完善以及如何调动团队积极性等。&/p&&p&在时间周期上来说,我们归纳为 5 个关键步骤:选方向、定目标、控进度、带团队和排干扰。&/p&&p&相配套的,则是在这五个关键步骤的一些流程和工具的使用。&/p&&br&&p&&strong&一、高效研发的5个关键步骤&/strong&&/p&&p&&strong&第一步:立项——定方向&/strong&&/p&&p&在豌豆荚的整个研发过程中,立项称为ProductBrief或者Project Brief。团队的产品经理会撰写一个1-2页的文档,然后和执行团队进行评审,如果评审通过,立项就成功了。文档一般包含会包含以下内容:&/p&&p&1. 愿景:一句话表达清楚要做什么;&/p&&p&2. 分析市场机会和趋势,决定当前策略;&/p&&p&3. 确定目标用户的特征和核心需求;&/p&&p&4. 现存的解决方案和各自的优劣势;&/p&&p&5. 该项目对豌豆荚的利益点;如果不做该项目,哪些竞争对手会做,对竞争对手的利益点;&/p&&p&6. 需要哪些技术的支持和驱动,哪些技术是豌豆荚的弱项;&/p&&p&7. 人力需求;&/p&&p&8. 项目的紧急程度,是否需要快速推进;&/p&&p&9. 发布策略;&/p&&p&10.核心衡量指标,用来衡量成功的指标。&/p&&br&&p&&strong&第二步,OKR 体系——定目标&/strong&&/p&&p&对一个项目来说,设定目标是非常重要的,因为这决定了如何去做,以及能做到何种程度。豌豆荚采纳的目标管理是从 Google 引进的 OKR 体系(Objectives& Key Results,目标与关键成果),这跟传统的 KPI(Key Performance Indicator,关键绩效考核)稍微有些区别:&/p&&p&1. OKR 首先是沟通工具:豌豆荚共有 300 多人,每个人都要写 OKR。为了便于沟通,所有这些OKR都会放在一个文档里。任何员工都可以看到 CEO 的这个季度最重要的目标是什么,HR 团队这个季度的目标是什么。&/p&&p&2. OKR是努力的方向和目标:OKR代表你到底要去哪里,而不是你要去的地方具体在哪里。&/p&&p&3. OKR必须可量化。比如健身时设定锻炼目标,如果只是定义成「我们要努力提高身体素质」,肯定不是一个好的 OKR,因为无法衡量,好的OKR是「今年的跑步时间较去年增加一倍」。&/p&&p&4. 目标必须一致:制定者和执行者目标一致、团队和个人的目标一致。首先,制定公司的OKR;其次,每个团队定自己的 OKR;第三,每个工程师或设计师写各自的OKR。这三步各自独立完成,然后对照协调这三者的OKR。在豌豆荚,OKR跟个人绩效没有关系,因为OKR 系统的结果和每个人并不直接挂钩。&/p&&p&5. 通过月度会议Review ,时时跟进OKR: 在月度会议上需要确定如何去达到目标,是一个帮助达到目标的过程。&/p&&p&6. 通过季度会议 Review ,及时调整OKR:互联网的变化非常快,所以豌豆荚每季度有一个OKR 的 review,调整的原则是目标(Objectives)不变,只允许调整关键成果(Key Results)。&/p&&p&为了更好的理解如何制定OKR体系,我们看个例子:&/p&&br&&p&● 目标(Objectives):发布有影响力的新功能,将 XXX 产品做成用户可以每日使用的产品。&/p&&p&● 关键成果(Key Results):&/p&&ul&&li&日活跃用户量为XX;&br&&/li&&li&使用XX方式,提高XXX核心指标;&/li&&/ul&&br&&p&&strong&第三步,项目管理——控进度:&/strong&&/p&&p&目标设定以后,非常重要的就是执行,一般的项目管理实际上就是控制进度。&/p&&p&1. 任务/进度勤同步。整个公司所有人的 calender,包括会议、要做的事情、项目的时间节点都需要及时同步。在整个战略布局上,如果某个项目工期非常紧,就必须进行更多的沟通,确保每一个环节都没有问题。&/p&&img src=&/2d662a893cdf_b.jpg& data-rawwidth=&692& data-rawheight=&422& class=&origin_image zh-lightbox-thumb& width=&692& data-original=&/2d662a893cdf_r.jpg&&&br&&br&&p&2. 站立会议 (Daily Sync):每天进行站立会议,一般控制在十分钟之内,每个人说明自己今天要做的工作,需要什么帮助,有谁可以帮忙,可以更有效的调节资源和公关。&/p&&p&3. 多方位沟通(Google Docs / Gmail / Hangouts):对非紧急的事情,两个团队或者是两个人一起讨论所有的设计。Hangouts用于做快速响应。&/p&&img src=&/e1aa5d10e56b56bb866c33_b.jpg& data-rawwidth=&692& data-rawheight=&520& class=&origin_image zh-lightbox-thumb& width=&692& data-original=&/e1aa5d10e56b56bb866c33_r.jpg&&&br&&p&4. 周会(Weekly Report):每周总结。豌豆荚的团队产品经理要做周报,汇报这周的工作、发布、取得效果以及数据。&/p&&p&5. 数据系统:MUCE 是豌豆荚的数据系统,上面有全公司所有的产品数据和运营数据。MUCE 的数据能够用来验证产品的假设、方向等。&/p&&br&&p&&strong&第四步,人员管理——带团队:&/strong&&/p&&p&项目是由一个个具体的人来执行的,所以带团队非常重要,在人员管理上,豌豆荚有三个基本原则:&/p&&p&1、Re-Organization& 换组:公司鼓励员工换组,每个人都有机会到喜爱的团队做更有趣的事情。只要在原团队的绩效合格,每季度都可申请换团队或换工作内容。员工的绩效不与 OKR 挂钩,公司鼓励员工挑战难度、超越优秀,低 Level 的事情做不到优秀会被惩罚,做事不及格也会被惩罚。&/p&&p&2、One on One:在带人方面, One on One 非常重要。One on One 指的是每个团队的 manager 需要定期(最佳间隔是每周一次)与自己团队中的每个成员进行一对一讨论或者对话。在豌豆荚,manager 首先是一个教练,应该帮助自己团队的成员成长。通过 One on One,manager 需要了解每个团队成员现阶段的状态和遭遇的困扰,分享职业规划,帮助他们正确地处理问题,更好地实现个人成长。&/p&&p&3、个人 OKR 和 Performance 体系:每个员工在每个季度初需要确定自己本季度的 OKR,在一个季度结束后需要根据自己这个季度的工作完成情况给 OKR 打分。每半年公司会进行一次 Performance Review,主要是 review 员工过去半年的绩效,并根据 Performance Review 的结果变更 Job Ladder(业务职级)和薪酬。值得一提的是,在豌豆荚,所有的个人Performance Review 的成就内容及级别都是全公司共享公开的,如下图所示。这个对于很多公司来说是不可想象的,豌豆荚为什么要这么做?因为一方面对于豌豆荚来说可以做到更为公平和透明,另一方面也给每位豌豆提供了更好学习和成长自己的样本,激励大家在产品研发中更高质量的挑战和要求自己。&/p&&br&&img src=&/65b4aff41b45cae7a0a71_b.jpg& data-rawwidth=&585& data-rawheight=&902& class=&origin_image zh-lightbox-thumb& width=&585& data-original=&/65b4aff41b45cae7a0a71_r.jpg&&&br&&br&&p&&strong&第五步,兴趣管理——排干扰:&/strong&&/p&&p&1、激发兴趣:HackDay,是豌豆荚一个特殊的节日,开始于2010年,类似黑客马拉松。通常在春节假期回来的那一周,产品设计师和工程师们 3-5 人组成一队,在连续48小时的时间里,充分展现工程团队的创意和想像力,完成一些比日常开发更 geek、更有趣的东西。&/p&&p&豌豆荚为了鼓励大家更好的完成挑战,也会设计一些特别有特色的奖品,历史上2012 年提供的是苹果刚出 Macbook Retina,2013年是 Google Glass,2014 年则是程序员最爱的 Herman Miller 顶级座椅。&/p&&p&在历史的 Hackday 中,有不少作品最终都成了重要产品对外发布,比如 MUCE、豌豆洗白白和 IAS(应用内搜索),都成为了豌豆荚极具特色的产品。&/p&&img src=&/72a9c33a86f20f9defa26_b.jpg& data-rawwidth=&692& data-rawheight=&525& class=&origin_image zh-lightbox-thumb& width=&692& data-original=&/72a9c33a86f20f9defa26_r.jpg&&&br&&p&2、控制兴趣:PolishWeek,让公司慢下来,对已有产品的细节进行精细化的过程。在大量开发和新产品上线的过程中,我们会担心因为走得太快而对产品的细节关注不够。在连续3个工作周后,第4周通常是 PolishWeek。在 Polish Week 的这一周,豌豆荚内部不会进行新产品或新功能的开发,而主要是对现有的产品和服务进行打磨,解决一些细节问题和小 bug,譬如产品内一些字体的统一等等。平均每个 Polish Week 会解决产品中各种 Bug 大约 200 个。&/p&&img src=&/341aaddecfd745_b.jpg& data-rawwidth=&692& data-rawheight=&517& class=&origin_image zh-lightbox-thumb& width=&692& data-original=&/341aaddecfd745_r.jpg&&&br&&br&&p&&strong&二、高效研发的流程和工具&/strong&&/p&&p&过去几年豌豆荚做 Windows 版的时候,尝试过一个月、两个月、一个星期、两个星期的发布节奏,整个模式跟 Chrome 比较像,有功能发布就希望尽早的发。我们在服务端上每天都有更新,客户端会慢一点,现在大概是两周一个版本,如下图所示:&/p&&img src=&/8de531a61fdeaecaea6a099d_b.jpg& data-rawwidth=&720& data-rawheight=&165& class=&origin_image zh-lightbox-thumb& width=&720& data-original=&/8de531a61fdeaecaea6a099d_r.jpg&&&br&&p&在开发节奏上,前两周的时间用于开发,然后截取分支准备发布,接下来两周进行测试,同时进行另一个开发,每一个迭代都控制在两周之内。相对而言,服务端的发布比较好操作,可以做很多的回归测试和自动化测试,不太需要手工的测试来做发布,但是 Windows 和 Android 都会有一些 Beta 的发布,在内部很难模拟用户的使用场景和用户的环境,所以在 release 之后的过程中一般会抽样 1%、5%、10% 这样一个节奏来做验证,主要是看某些指标是否达标。&/p&&p&这个流程刚开始执行的时候问题特别多。比如在这周开发完成以后,测试发现根本测试不了,有很多很多的 Bug,工程师只好利用第二个研发周期去修 Bug,然后又会影响第二周期的开发,这样问题越来越多,就会导致流程很难进行,然后进入恶性循环。为了解决这个问题,首先在操作层面上一开始先用一个月的迭代来让大家适应,同时要求 Master 分支必须是可用的(比如某人提交了代码跑不起来,或者没有经过测试,给其他同事带来了阻碍,就会被要求请全团队喝咖啡)。其次加强单元测试和回归测试,确保每个迭代的研发质量是可控的,后面的测试主要是回归和校验,减轻相互重叠的压力问题。一个月的迭代跑顺了之后,再跑到两周、一周的节奏,整体来看,差不多用了半年的时间,豌豆荚就完全跑顺了这个流程,想快可以快,想慢也可以慢。&/p&&p&工欲善其事必先利其器,为了提升产品研发效率,豌豆荚内部开发了一款项目管理工具Wandoulabs。作为内部的沟通工具,它主要用来做跨团队沟通,全公司所有员工都会使用。重要的 roadmaps 必须在这里登记,登记了以后,一个项目需要多少设计师、需要多少marketing、每个阶段是什么样以及工程师的发布状态都可以在这里看得到。&/p&&img src=&/df850d78c55ce508582f_b.jpg& data-rawwidth=&692& data-rawheight=&402& class=&origin_image zh-lightbox-thumb& width=&692& data-original=&/df850d78c55ce508582f_r.jpg&&&br&&p&这就是前面提到的Wandoulabs,大概逻辑如下:不同的标记分别代表研发状态、发布状态、负责的团队及这个事情的重要级别。&/p&&br&&p&&strong&对于重要的发布,豌豆荚有三个最基本的要求:&/strong&&/p&&p&第一要获得 Product/Design Review 的批准。一个功能开发以后,无论是界面还是整个 UI,如果会影响到用户的操作,或者影响到商户的收入,比如我们的广告系统或者和合作伙伴的一些策略调整,这就需要做 Design Review。Design Review 在豌豆荚里面的时间大概是每周的周一、周三和周六,每次持续 1-2 个小时,包括Product(Review)、Design(Review)或Business(Review)。Product Design指的就是 PD,主要的视觉设计师或产品设计师必须全员参加。&/p&&p&第二要获得 EngineeringTech Review 的批准。这更接近于传统上的技术设计,主要是看某个功能在工程设计上是怎么做的。做这个设计的团队和所有工程师必须全员参加,也会有一个人来 host,还需要几个指标的 review。这个过程是帮助相关的工程师把设计考虑更全面,包括流量、游戏的带宽压力的需求等等。&/p&&p&第三要获得 MarketingReview 的批准,主要是看产品上需要如何引入 marketing 团队的配合,需不需要做一些传播,需不需要注意公关策略等等。&/p&&p&同时对于更小的一些 Beta 测试则不强制要求。这些 Review 实际上是帮助整个团队、整个公司去理解当前最重要是什么,其实也是建立一个高标准的过程。&/p&
正好最近做了一个豌豆荚研发管理的分享,稍微整理了一份分享到这里,一起交流学习。 首先,画一下我们通常讲研发管理的范畴:确定如何立项,如何确定产品目标,如何把控项目进度,如何驱动产品一代代完善以及如何调动团队积极性等。在时间周期上来说,我们…
已有帐号?
无法登录?
社交帐号登录
247 人关注
484 条内容
825 人关注
148 条内容
362 人关注
900 条内容
108 条内容今天这篇文章与前面两篇不同,是一次在阿里面试失败的经历。但是从失败的经历中,我们应该也能收获到很多经验和教训。
我们分享的上一篇文章是一位学长在大三的时候面试阿里实习生成功的经历的分享,其实就像学长在上一篇文章最后说的那样“面试并没有想的那么难,运气也会占一部分。”,其实我个人觉得,对于我们而言,自己越努力就会越幸运,西方有句谚语“上帝助自助者”,其实说的都是一个道理。对于怀有梦想的技术宅而言,既要仰望星空看世界浪潮,也要脚踏实地努力奋斗。
面试时对于技术人员而言,技术能力肯定是衡量优劣的标准,所以只有技术过硬,你才会“有料”,胸中“有料”你才能在面试时保持一种“不卑不亢”,这样就算是“有种”,而
技术与心态都到达一种适合的状态,才能真正体会到面试官题目中的智慧,当面试成为你和面试官对于技术问题的共同探讨,那么就能在面试中感到“有趣”。如此“有料,有种,有趣”,面试应该就没问题啦。
好了,接下来为大家分享的也是一个学姐面试阿里实习生的经历,不多说了,上文:
正文如下:
《阿里面试经历-研发实习生面试经历》
硕士期间的处女面给了阿里,感觉还是收获蛮多。我感觉如果面试做到了逻辑思维中罗胖子所说的“有种、有趣、有料”,那肯定就没问题了。有种就是回答面试官问题胆大心细、有自信;有趣就是要和面试官聊的很开心,有共同话题;有料当然是基础够牢固,代码能力够强,算法能力够扎实,项目经验够充分。话又说回来,如果自己没料,又怎能去有种和有趣,所以还是一句话能力最重要,其次要掌握一些面试技巧,应该就没问题了。
今天去参加阿里巴巴的面试,安排的时间是早上10点40,昨晚没睡好,不是因为面试,而是看网易新闻,看到太晚,最后看得太精神睡不着了。10点左右就赶过去了,然后签到,还发了水和早餐,接着在一个小会议室等待。等待期间听到几个中科大在聊天,他们3个中有一个进了2面,正在等2面,心想科大的都被刷成这样,我也就只能打个酱油了,从他们几个那了解到2面就是终面了(回来听师兄说,其实有些人会有3面的,估计都是神级别的)。基本准时工作人员让我去到另一个会议室面试。
来到面试官(简称他为罗吧)前,给了他简历,他没让我自我介绍,首先问了我下笔试感觉答的怎么样,我说除了选择中的概率题目其他选择题没问题,大题做的不太好,他说还是比较自信的啊,然后就没继续谈笔试了,在我说话的时候,他扫了下简历,然后让我讲了下我简历上的一个项目,然后在我讲的时候,罗说你们的项目其实涉及到了分布式,里面有个问题--单点故障,然后让我想一种处理这个单点故障的方法,我根据分布式数据库中的方法讲了下,他说也只能这样了。
接着罗问我熟悉哪些数据结构,我说从顺序表、链表、栈、队列、树、堆都有了解,他接着问顺序表和链式表有什么区别,为了将话题引向了C++,我说如果比较顺序表和链表的区别,可以从C++的vector和list比较下,vector顺序结构,list双向链表,没等我继续说下去,罗就说vector查找快O(1),list插入快O(1),C++容器里有没有一种插入和查找都是O(1),我想哪有这样的,说没有,他说map啊,没用过?我说map基于红黑树查找不是O(1)啊是logn的,罗说反正不是O(n),可能是我听问题的时候听错了吧。
然后问了些C++的东西,首先问我 C++为什么要继承,其实我感觉这种问题更不好回答,我说可以缩减代码量(居然忘了代码复用这个词),罗说还有多态嘛,然后问我多态是怎么实现的,其实这个问题我想肯定会被问到的,我说是通过虚函数表实现,然后罗写了三个类A、B、C,B、C均继承自A,均有虚函数f,然后定义了3个指针,让我画下虚表,其实很简单,不过我说错了一点,我说虚表保存在对象内存空间的最前面,然后罗说如果虚表保存在对象的最前面的话,那么每实例化一个对象都有一份拷贝,是不是有问题,接着说程序运行都有哪些内存空间,我说当然是栈、堆、全局、代码段,然后他问虚表应该放在哪,我突然发现自己理解错了,对象中保存的应该是指向虚表的指针,虚表在代码段啊(后来在群里讨论才知道虚表是放在rdata,虚表也是运行时不变的),虚表具体内容参见,不得不佩服面试官每句话都听的很清楚,而且能找出问题。
然后问我项目中用到多态的例子,我突然想到前段时间师兄要在项目中加一个小的内存池,里面对不同大小的类型内存分为不同的队列,为了便于管理,不同类型继承自同一个基类,通过虚函数实现各自的内存分配,介绍的时候我说到了里面用到了工厂模式和单例模式,罗问我还熟悉其他设计模式,我说就是从gof23的了解了下,平时也就是使用单例和工厂模式,还问我看了多久gof23。
后面话题到了智能指针,他问我auto_ptr与shared_ptr的不同,我从转移权和共享说了下,然后说让我写一下auto_ptr的实现,这个对看过C++primer和BOOST的来说不难,我写好后他说,你是不是看过实现代码,我说是的,然后问我auto_ptr有什么问题,我从作为函数参数会发生指针管理权转移和不能管理数组,因为析够调用的是delete说了下。
然后话题转向了算法,问我算法怎么样,我居然很诚实的回答很一般,感觉有点犯2,然后他说那好,我们来玩个游戏,问我玩过扫雷没,我说没怎么玩过,他说那不影响回答这个问题,问题是在一个保存了0、1的矩阵中,现在给一个坐标i,j,和(i,j)在同一个连通块内(即数字相同)的数字个数:如下图,输入(i,j)=(2,2)返回5,(i,j)=(4,5)返回1,我想到的是按数据结构书中讲解迷宫求解的方法,分四个方向进行深度优先搜索(根据坐标和来的方向判断剩下3个方向是否被访问过),然后简单写了下递归实现的代码。
写完后,他看了下,然后看了看表,说我给你的时间只能到这了,问我有问题问他不,我问了阿里是不是Java很多,C++的很少,他说不是,不要看笔试题附加题是道Java题就这样想,还是很多做C++的,然后闲聊了几句,就出去了。一面持续了1个多小时,结束都快12点了,整体聊的很开心,出来工作人员要我等一下,我想应该是进2面了,大概不到5分钟,就被叫去2面。
2面是两个面试官,感觉一个是技术(简称为唐),一个是HR,接下来的一个1小时就是被虐啊。首先还是要我介绍下我们采集组的项目,然后唐得出的结论就是我们的项目就是在买来的硬件上面稍微加了点代码,感觉自己太不会吹项目了,然后就是问项目中涉及到的多线程,居然又问到了线程和进程的区别,还有就是什么时候用线程,什么时候用进程,这个问题平时还真没认真思考过,感觉好难回答,可以参见这篇博客,仅仅从线程和进程的区别回答了下,然后唐问我多进程和多线程程序的代码量,我说千行级别(在一面的时候也有问到我C++的代码量)。
然后又转到了C++上面,唐问我看过哪些书,我说C++primer、BOOST,然后就让我实现下boost里面的shared_ptr,在写的时候将引用计数部分写错了,改好引用计数后,又被告诉线程不安全,问我如何解决线程安全,我说对引用计数操作加锁,然后唐要我写下线程安全的shared_ptr的reset成员函数,唐在这他提示我当引用计数到0后,析够是在锁外还在锁内,我简单写了代码,然后他又问我加锁的代价,这个我直接回答了没关注过这个问题,然后唐说他的问题完了,女hr开始发问,首先她先问了下我本科学校,然后问是个专科?着实鄙视了我下,接着问题就是认为本科和现在的自己最大的区别是什么,我实话实说地告诉她,忍耐力强多了,现在所里面的活全是没技术的,很是不喜欢干,自己还是忍下来,耐心做好了,不像本科那样,感觉回答地太不合女面试官的口味了,唉~~,第三个问题是以后打算做那个方向,我居然说想去做游戏开发,感觉说错了,说实话自己真没想好做哪个方向,所里面的项目太坑,真的是迷失了方向,然后就是乱谈。接着问我有什么问题,我问了唐对我整体评价,还有该如何学习C++,他的意思我感觉还是要注重项目中多用,不要空学。
二面大概也是持续了1个小时左右,整体感觉一面还可以,二面就被虐了,女hr的问题也没回答好,回来后去官网看结果:终面未通过,已在意料之中。
这次面试的收获:
技术方面:
(1)要有解决实际问题的能力。面试官可能会提出一个问题,要你给出解决方案;
(2)要注重细节,技术要理解透彻,比如这次的“引用计数只能指针”,不仅会用,而且自己能实现。我们看C++方面的书,经常看到一句话“避免重复造轮子”,记得Boost程序库完全开发指南的作者说过,这句话应该这样理解:非不能也,是不为也。
(3)算法和代码都很重要,代码量确实能反映一个码农的水平。
要能适当的吹嘘下自己的项目,让面试官感觉项目有技术含量。还有要准备一些常用问题的回答方法,尤其是最后hr的问题,要回答的有水准。看别人的面经都说,面试不能太诚实啊,不能暴露太多缺点,感觉确实如此。
有话要说:我首先很佩服这位学姐,虽然她面试没有最终通过,这次经历是一次失败的经历,但是她还是把整个在阿里的面试的过程都记录了下来,给自己和他人都作为一次经验的积累。
学姐面试的是C++方向,与前两位童鞋的面试方向不同,估计对于C++的技术人员,算法问题会更多一些,对于Java技术人员,工程项目问题会更多一些吧,首先我认为学姐前一天的准备有点欠缺,明明第二天就要面试了,还熬夜看新闻,这一点真的不可取,睡眠质量直接会影响第二天的思维能力和表现,所以在没有事情的情况下还是尽量不要熬夜(毕竟对于IT行业来说,以后熬夜的日子还多着呢)。其次,学姐在文章中第二段就说“心想科大的都被刷成这样,我也就只能打个酱油了”,这样的心态不能要呀!!!这不是还没开始面试就在心里上输给人家了么…小伙伴们,千万不要给自己这样的心理暗示,多一点自信,少一点忧虑。
其次学姐在文章中说“首先问我 C++为什么要继承,其实我感觉这种问题更不好回答,我说可以缩减代码量(居然忘了代码复用这个词)”,天哪噜,这告诉我们啥问题,我们需要对学习的技术有深刻的理解和体会,学习不也是这样么,不要仅仅将知识停留在会用上,应该知其然并且知其所以然,这样才叫真正学会了知识。
之后面试官问的类似于扫雷的问题,学姐说没玩过,我也真是汗…看来生活处处皆学问,码农处处找算法呀…我们要多学习,不光光是课堂上,还要有生活中。
之后学姐二面的经历就没有什么值得说的东西了,但是对于学姐最后的总结,我觉的对于技术人员而言,代码量的确是我们应该积累的,它的确能反应我们的一些东西(起码勤奋与否),但是我个人不是很赞同学姐所说的对于自己做的项目要吹嘘,我觉的还是实事求是就行,明明没做,你说做了,人家问你一个关键问题你就回答不上来,再说这样还没进入公司就不诚实,滥竽充数感觉就没意思了。但是我要说的是你做的什么你一定要说出来,因为你做了不说没人知道,你要敢于表现真实的自己,敢于表现最好的自己。
好了,今天就扯这么多。下次再见。
本系列文章:
版权声明:本文内容由互联网用户自发贡献,本社区不拥有所有权,也不承担相关法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至: 进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
用云栖社区APP,舒服~
【云栖快讯】数据库技术天团集体亮相,分享一线生产实践经验,告诉你踩过的坑、走过的路,都是老司机,靠谱!干货分享,不可错过!&&
超过10,000,000域名在这里注册
一站式提供企业即时通讯、销售管理、协同办公。
国内建站市场NO.1
为您提供简单高效、处理能力可弹性伸缩的计算服务,帮助您快速构建更稳定、安全的应用,提升运维效率,降低 IT 成本...
2017杭州云栖大会火热抢票
Loading...

我要回帖

 

随机推荐