如果感觉自己能力不强,又想去BATJ,我的经验对你将很有用!

京东lanqiao 发表了文章 • 0 个评论 • 39 次浏览 • 21 小时前 • 来自相关话题

    作者:xiaodong1015 作为一个渣渣的小硕,学校我就不说,不然就又要被发现了(上次就被人在牛客网发现了,我也是无语)。好了,言归正传。 我知道,现在牛客网上有很多人发面经, ...查看全部
 
 
作者:xiaodong1015
作为一个渣渣的小硕,学校我就不说,不然就又要被发现了(上次就被人在牛客网发现了,我也是无语)。好了,言归正传。

我知道,现在牛客网上有很多人发面经,真的很好,很有参考价值。

但是希望大家注意下,有些面经或者说是学习经历是不可以复制的比如:我之前看到一个大牛发的帖子(介绍了下他大一,大二都去哪里实习了,什么样的实习经历。。。然后,现在拿到哪些公司的offer,)我很崇拜这样的人。如果说,你还没到毕业找工作的时候,大一,大二,研一,我希望大家去看这些类似的帖子。比如:某神。但是 ,如果说你快毕业了,应届生,需要需要求一份工作,不知道怎么去准备面试,希望你来这里,看我的帖子。我的准备经验应该能给你很高的帮助。
3月左右
阿里电面 一面挂了:第一次,不懂怎么去面试,也没去准备,啥都不知道。阿里面试官其实挺不错的,聊了一会人生,然后就问我一个技术题目:“你怎么向你的师弟师妹形容一下翻墙的原理”。当时
我就懵了,翻墙! 我都是用 蓝灯的啊。原理,代理?不懂。然后就 挂了。
从这里开始我就深刻的认识到自己的不足,啥都不懂。太菜了。
从此,我就走上了准备 面试的道路上。。。。。
由于我投的都是Java岗。所以,我要准备都是和Java相关的知识。
1,深入理解Java虚拟机。--必考。
2,并发编程--推荐 《Java并发编程的艺术》--必考
3,Spring ,Hibernate ,Struts2,MyBatis。 --如果时间不够可以 深入理解 SpringMVC。最起码 需要知道SpringMvc的原理。
然后,大家还需要深入理解Java基础,比如:
Hashmap,HashTable,的区别,使用场景,还有其他的什么解决并发的方案吗?
4,针对并发问题:推荐 深入 研读 Java.util.concurrent包下的所有 并发类的区别是啥。原理是什么,有什么优缺点。推荐一个网站:http://ifeve.com/

-------------------------------------上面只是Java基础,但还远远不够------------------------------------------------------
你确实懂Java基础了。但是校招是很重视基础的。所以,你还需要把本科学习所有数据结构,和基础算法熟悉一遍,牛客网里的题目是很好的锻炼方式。
1,队列,栈,散列,树最重要的应用领域 (比如B*,B+树), 图。
2,还有几类查找算法 排序算法,时间复杂度,是多少,? 推荐个人博客:http://blog.csdn.net/sjyttkl/article/category/6849017

-------------------------------------上面还是基础,还远远不够---------------------------------------------
既然是面Java相关,也是做偏向后台开发咯。所以你肯定懂数据库,一种数据库就够了。比如:msyql。但是,我觉得,现在做后台开发,
大家千万不要忘记一个 最重要的一点就是:均衡负载,均衡负载,均衡负载。重要的事情说三遍。。。。。
推荐一本书:《高性能Mysql》。
你需要注意以下重点:1,有哪几种Mysql集群模型,有什么区别,应用的场合是什么。比如:主-从模式。主要应用在 读大于写上,比如淘宝
“一个人去淘宝买东西,肯定是先浏览很多次,然后在去购买。”反映到数据库上去就是读-写,好了,不深入写了,大家看《高性能Mysql》吧!
还有几个重点:也是关于均衡负载的东西:CDN ,方向代理,正向代理,TCP滑动窗口和拥塞控制?。外加上 网络的三次握手四次挥手。最后大家就继续刷点题目吧:从 《剑指offer》开始,看看左神的视频就好。
现在就来继续面试吧。
7月中旬, 我刚刚从三星南京研发大楼出来,阿里给电话了。阿里一面还是挂。
1,项目相关的问题:项目太水真是拿不出手。就不展开细节了。但是项目问题聊了很久时间。我也是无语。
2,SpringMvc原理。
3,HashMap原理,
4,队列,栈,快排。
5,虚拟机的内存模型。怎么可以实现同步?
。。。。。。。。。。。。忘记了,大多都是些基础的问题。
原因:看的太多忘记了也多。本人记忆不是很好。在面试的时候有一个问题没有回答上来:面试官问我 线程池原理。而我说成 数据库连接池!最后,他说,基础不错。线程这块差了点。
没办法了,因为当时在南京实习,所以只有白天偷偷看面经,复习知识点。晚上继续看到2点左右睡觉。
7月底,突然收到京东提前批的面试:
一面:
1,自我介绍。
2,面试官,问:你会什么?,我:Java。面试官:你说说Java运行时区域。我:balabalabala说完。
3,内存模型
4,虚拟机
5,插一句:面试官让我说说数据结构,我直接介绍 查找算法,面试官懵了。他说:我是问你数据结构比如:堆栈什么的。我恍然大悟,估计当时是有点紧张了。
6,介绍线程和进程的区别。这个回忆下当时我考研得时候复习的内容。重点问题是:分析下线程是存储在哪个地方。当时我也是懵了,经过自己现场的推断的得出结论是:栈里。回去查了下,好像对了。
7,怎么判断一个链表有环。这个刷过题的都知道了。
8,怎么达到同步:介绍下voliate,cycleBarrier.countlauntch 等等,。
9,Voliate原理。我没回答对。
10 ,了解下项目的知识:SpringMvc原理什么的。
11,但是,但是面试官很想问我关于机器学习的知识(最后我收到offer才知道,我的职位是算法工程师):我只说了解。简单的知道神经网络,循环神经网络什么的。
12,ArrayList,HashMap,等基础问题,也是被问的,这都没啥好说的了。
二面:
1,自我介绍--这次的自我介绍我可是准备好了的。从公司我二楼走到一楼都没说完。
2,项目介绍--重点介绍我之前和队友参加的一个京东的算法比赛。介绍完了,之后,我就说自己对机器学习并不是特别深入理解,只能说是了解。-----当时差点就说了,自己是抱大腿的。
3,上一个一样,会什么啊?Java。又来了
4,快排描述,时间复杂度,是否稳定---答案是:我测过啊。当时都笑了。
5,同步,还是同步,线程的问题,这个很重要。。。一直被问。
6,线程池的问题--这次一点都不慌了。当听到这个问题,我是真的笑了。
7,在线程同步上估计说了20分钟(一共 55分钟)
8,介绍对机器学习的理解。比如:卷积神经网络,坦诚的说:没具体的用过,只是 做个小demo,识别下小图片而已。理由是:电脑配置差。
然后又问我 RNN 。我直接说,我不懂RNN,我只懂CNN,现在想想也是好笑。很无奈啊
9,怎么在一亿个数里找出前几名数字:我首先说的是桶排序:因为再大的数字位数也是有限的。。最后才知道,他想让我利用 散列表搞定。
10,其他的问题,我也不怎么记起来了。大概总共能时间就是 55分钟。
HR面:
我也是全忘记了。反正最后收到offer,白菜价咯。谁让我水呢?

秋招面经合集前端大作战!

百度lanqiao 发表了文章 • 0 个评论 • 12 次浏览 • 21 小时前 • 来自相关话题

作者:天黑啃树皮 经历了将近一个月的选offer的焦心过程,最终决定去拼多多了,现在决定回馈一波牛友们,就是靠着牛友们的分享拿到了还不错的offer,当然不能和985的大佬们比,小菜鸡自己觉得秋招的结果还算是满意的了。 ...查看全部
作者:天黑啃树皮

经历了将近一个月的选offer的焦心过程,最终决定去拼多多了,现在决定回馈一波牛友们,就是靠着牛友们的分享拿到了还不错的offer,当然不能和985的大佬们比,小菜鸡自己觉得秋招的结果还算是满意的了。
 
offer情况:拼多多、华为(小sp)、地平线(sp)、360企业安全、滴滴(只给北京的offer,再三确认,杭州没有hc了,直接拒了 )。
 
秋招面试的公司:BAT、TWD、有赞,以及其他拿到offer的4家公司。按照我面试的时间顺序开始记录面经吧。
 
阿里(内推,有两次面试,一个是在阿里的班导给我找了阿里的前端负责人直接面的,是非正式的面试,就是帮我评估实力的)
 
阿里非正式面试(秋招第一家面试,7.15号面的,在西溪园区)
1、讲一下继承,有点紧张,讲了继承方法的名字,着重问了原型链和构造函数,组合构造函数,寄生组合构造函数,讲了代码级别上的实现。
2、说到继承,又问了我class了解不了解,我说了解一下,问了我class继承,这个没有答上来。
3、讲了一下项目,better-scoll的实现原理,为什么要用better-scoll,能不能用原生的css实现这个滚动效果,这个没有回答上来,被评价css基础薄弱
4、问了vue的双向绑定实现的原理,我回答出来了,但是讲的不够流畅,还是基础不够扎实
5、问了webpack的理解
6、html5的新特性和css3的新特性,html5讲了webstorage,webscoket,然后就问了我客户端的存储有哪些,讲了webstorage的localstorage、sessionstorage、globalstorage(html5用localstorage被取代掉了),还有cookie,问了我cookie和localstorage的区别,cookie还没讲完,又出了个场景,,浏览一个网站,选择条件的存储,用cookie还是localstorage,我答了localstorage,问了理解,我说是因为cookie要发送到服务器,,面试官说主要原因是过期时间
7、问了webpack的理解
8、vue父子组件通信的实现机理,,这个刚开始讲错了,,然后才讲对的,问了我如果有多层的父子组件,用什么通信,知道vue里面有这个东西,但是实现想不起来了名字了,就讲了如果自己来设计这个功能的实现思路。
 
被评价:原生js基础不错,和浏览器交互有一定理解,css基础薄弱,社区的东西了解的不多,代码深度也还不够,,目前的水平和简历想以前端开发进阿里,几乎不太可能,但是拿到实习offer还是没问题,问我愿意不愿意来实习,我拒绝了,因为实验室不让实习
当然啦,在我眼里,自己全世界最牛逼,不接受反驳,,哈哈哈哈,开玩笑啦,,还是要给自己打打气的,我觉得我还可以再抢救一下,各位牛友们,加油加油!(也是当时的心情了,真是无知得可爱呀,之前一直在看书,而且觉得自己都似乎会了,回过头来看,这次面试,让我看到了大厂要求和自己实力的差距,我觉得帮了我很多,让我对面试的深度,和问什么,都有了进一步的理解)
 
 
阿里正式内推面试
阿里一面(8月13号)
1、问项目,第一个项目vue做的web app,整体大概的讲了一下,问了遇到的最大的问题是什么
2、问了vue组件之间的通信
3、问了webpack配置的一些东西,
4、问项目,问我的业务建模项目,这个是杭电、阿里、浙大三方合作的项目,然后讲了一下,问了个开放式问题,如果leader对建模的思想和你完全不一样,怎么半
5、讲一下页面请求的整个过程,讲了下,讲得非常的细节,讲到了浏览器收到响应报文,,就被打乱了,说不用讲了
6、问了es6,问我那些比较熟悉,讲了let、const、箭头函数、promise一些名词,然后说那你说一下Generator吧,我大致讲了一下,,这块觉得讲的不好,主要讲了语法的一些东西,没有讲得很深
7、问我css掌握的怎么样,了解到什么程度了,我就说对各式布局比较熟悉,尤其flex布局,还讲了css 继承、优先级、层叠啥的,还讲了一些css用到的一些技能,margin-left负值这些
 
差不多面了1个小时吧,大部分都是开放式的问题,问你了解不了解,然后你讲了,再继续深入问,总体来说,我觉得问的不深,比较简单。
 
阿里二面(8月18号)
当时没有做记录,能想起来的不多了,其实,阿里的二面是我当时面到当时,觉得回答的最流畅的一面了,真的是信心满满的有三面的,不过也是二面挂
只能记得问我es6了解不?我整本书都讲了一下。
面试结束的适合,,我问面试官我表现怎么样,有希望进行下一环节嘛,面试官说我基本还不错,不过项目开发经验太少了,而且社区的东西了解较少,也没有源码阅读经验。。。估计就是因为这些挂了/
 
华为(7月18号吧,我们是参加了比赛,参加了华为的优招)
一面(业务面)
只聊了项目,我花了项目的框架图吧,就是讲了一下,然后我想讲一下技术的东西,也不需要,评价我思路很清晰,就过了,真的很easy~
 
二面
有点小波折,刚开始面了中央软件园,但是面试官一拿到我的简历就说,我们这边不需要前端呀,你怎么报名了我们的部门,我当时心里一紧,马上镇定,我说,功课没有做到位,是我的失误,不管这不影响面试的,您先面我,如果觉得我不错,再把我安利给其他的部门,我也是今天才知道cloud bu前端需求蛮大的,您到时候可以安利我过去。面试官忙说,,面试还是要面的。
1、进程和线程的区别
2、多线程,其实前端没有多线程,js是单线程的,我就讲了浏览器的多线程这块
3、问了编译原理,我不会,本科也没有学过,面试官表示计算机专业没有学过这个很不应该,我表示,我本科是财经院校的计算机专业,有些课程做了一些删减了。
 
其实,感觉面试官真的不想要我,结束的时候,我说,感觉你们真的不需要前端诶,,要不,您到时候就把我安利给cloud bu吧,,面试官感觉一下子放松下来了,说,对对对,我们确实不需要前端,,这样子吧,我把你的简历拿到他们看一下,如果ok的话,你再面一次他们部门好了,然后我等了一会,又面了一次cloud bu,问的问题都比较简单的,就是项目,然后为何选择华为,很轻松的通过了。。
 
tips:我自己觉得自己是一个做事非常主动出击的人,百度、华为的面试都体现了这点,,甚至我360面试的时候,hr问了我面了哪些其他公司,我就讲了这些公司的面试坎坷趣事,尤其百度的乌龙,hr说觉得我做事很主动,这点很好,他蛮欣赏我的做事风格的,我一直以为是自己脸皮厚呢,当时心里觉得蛮高校的。反正,,秋招主动点,不要怕丢人。
 
 
百度(内推,8月16号面的,一天面完3面,都是视频面试)
一面
1、问我有没有用过 git,尴尬的回答没有
2、问我有没有和后端联调过,比如跨域,回答了跨域很多方法
3、问了我闭包,回答了一下,问我闭包怎么实现模块化,这里也回答了一下,回答着回答 着想起了 es6 的模块化,觉得有异曲同工之妙,就一起讲了
4、vue,问了我钩子函数吧,created 和 mounted 的区别,讲了后,问了我$refs 是用***嘛 的,写在 mounted 还是 created 里面,我回答了写在 mounted,并说明了原因,5、问了 Object.assign 的用法,
6、vue.computed 和 watch 了解不了解
7、npm run dev 是干嘛的
8、平时通过什么学习,用过 w3c school 嘛,了解 MDN(一个前端学习网站,老高推荐 过)
9、一面没有问任何项目!!!
二面
1、先问我一面问了啥,说一面评价很好,但是没有写问题,

从零基础到拿到网易Java实习offer,我做对了哪些事

网易lanqiao 发表了文章 • 0 个评论 • 31 次浏览 • 21 小时前 • 来自相关话题

    作者:公众号:程序员江湖 秋招结束了,接下来轮到找实习和找补招的同学来忙活了,今天分享一下找实习的经验。   作为一个非科班小白,我在读研期间基本是自学Java,从一 ...查看全部
 
 
作者:公众号:程序员江湖

秋招结束了,接下来轮到找实习和找补招的同学来忙活了,今天分享一下找实习的经验。
 
作为一个非科班小白,我在读研期间基本是自学Java,从一开始几乎零基础,只有一点点数据结构和Java方面的基础,到最终获得网易游戏的Java实习offer,我大概用了半年左右的时间。本文将会讲到我在这半年里做对了哪些事情。 前言
研究生时期的方向选择
 
对于即将读研的同学来说,一般有两件事很重要,一件事是选择导师,一件事是选择方向。
 
我就读于华中科技大学,主修软件工程专业,我在刚读研的时候最头疼的也是这两件事情。首先说明一下,我读的是专硕,所以实验室一般不搞科研,有部分导师会带项目,由于我不打算在实验室做项目(因为我更希望去大公司里锻炼几年),所以我当时本着想要找实习的想法选择了导师,事实证明我的选择还是很正确的,我在研二有大段时间去参加实习,让我在大厂里有足够的时间去锻炼和学习。
 
而选择方向这件事,我倒是折腾了好久。研一期间我做的最多的事情就是看书了,当时自己的方向还不明确,所以找了很多书来看。当别人都在专研数据挖掘和机器学习时,我还在各种方向之间摇摆不定。
 
我在读研之前想做游戏开发和Android开发,但我以前也学过Java Web开发。于是我在网上了解对应方向的资讯,发现游戏研发的就业面比较窄。
 
最后,我综合公司的岗位情况,个人兴趣,以及我之前的学习经历等因素,选定了Java开发方向。
 
于是,我在学校的实训项目中选择了Java Web项目,从此也真正意义上地踏上了Java的学习之路。笨鸟先飞,勤能补拙
 
尽管我的入学成绩是全学院的top3,但是,我发现,作为非科班出身的我,和很多科班同学相比,还是有一定差距的。
 
大部分同学本科都上过计算机专业的相关课程,比如计算机网络,操作系统,数据结构等等,而我以前连听都没听过,除此之外,他们一般都会几段比较完整的项目经验,至少在Java Web方面已经算是比较熟悉了。而我在当时,只学了数据结构,另外接触过一些Java基础,有一部分项目经验,基本上就是入门水平。
 
于是我痛定思痛,决定好好弥补我的不足,平时一有空就去图书馆找些书来看,不论是操作系统,计算机网络,还是数据库等本科课程,我都会找一些对应的书籍来看,当时不太清楚其实有些课程其实不需要特地去补,以至于我连计算机组成原理,编译原理,软件测试等方面的书都特地找来看,现在想想也是挺逗比的。
 
由于我们上的课比较水,所以上课时间反而变成了我自学基础课程的大好时光了。所以我平时上课的时候都会带两三本书,一到两周内看完一本,虽然可能吸收的不是特别好,但是对当时的我来说还是有很大帮助的。
 
除此之外,有时候我还会偷偷去旁听有一些本科生的课程,这也是因为我在自学一些课程的时候遇到了困难,比如《操作系统》,《数据库原理》等等。于是我花时间研究了一下本科生的课表,趁着自己没课的时候赶紧去旁听课程。有时候感觉自己在课堂中显得非常突兀,尴尬地想要逃跑,但总算是坚持地听完了一门数据库的课程。
 
此外,我还在各种视频网站上看网课,比亦或是看中国MOOC的计算机基础课程,里面的操作系统,数据库等课程也让我印象深刻。
 
就这样,每天我都把自己的时间填满,愣是在研一上学期看了好几本书,当时书的版本现在有的记不清了,主要是计算机网络,操作系统,计算机组成原理,另外还有软件工程,软件测试,设计模式,等书籍。就这样,我靠着这段时间的坚持把计算机基础课程补上来了一些。历尽艰辛,终得实习
 
时间来到研一下半页,这时候我刚刚结束了学校的Java Web的项目实训课程,在做这个项目期间,我发现自己暴露出了很多问题,技术实践能力不足,Java基础不扎实。这件事情也给我自己敲响了警钟,因为我计划在春招期间找一份大厂的实习,但是目前看来我的水平还远远不够。
 
压力之下,只有努力一条出路。于是,从那时候起,我开始了“留守“实验室的学习生活。为什么要在实验室学习,一是因为学习气氛好,二是因为平时大家也可以互相交流问题。
 
每天早上9点到实验室打开电脑,晚上9点背电脑回寝室。大部分时间我会花在看书上,这段时间主要看的都是Java相关的书籍,借鉴的是江南白衣大佬的“Java后端书架”,比如《深入理解JVM虚拟机》,《Java并发编程艺术》,《深入分析Java Web技术内幕》,《深入剖析Spring源码》等等。
 
另外一部分时间我会用来看一些技术博客,我主要是根据面经上的知识点按图索骥,找到对应讲解该知识点的文章,那时候主要还是通过搜索引擎来找文章,当然有时候看到一些重点难点也会自己写一些博客。不过这个时期并不是我大量写博客的阶段,主要还是看一些讲解面试知识点的技术博客为主。
 
除此之外在面试前几天我会花时间去看这家公司的面经,搞懂每一个面经上的知识点,并且记录在我的笔记上,光是面经相关的笔记我就记了100多篇,这样的学习习惯我一直坚持到了秋招,确保每个面试知识点都能被我记住,消化,直至完全理解。
 
慢慢的,笔记越来越多,我参加面试的公司也越来越多,于是我开始不断完善自己的简历,总结自己的面试技巧,选择合适的网申时机。从头到尾我大概花了3个月的时间在找实习上,期间大大小小参加了20多次面试,我也从一开始面试一问三不知的菜鸟,逐渐变成了面霸,到复习末期,我对Java常见面试知识点已经了然于胸,同时也越来越自信,不管面什么大厂都不慌不忙。
 
这样的日子持续了好几个月,所谓世上无难事,只怕有心人。到最后,实验室里每个人都拿到了心仪的实习offer。实习面试回顾
 
当初找实习的时候投简历比较暴力,基本上就是海投,好几个网站一起投,当时根本不知道有什么面试黑名单(冷却期),所以经常毫无准备地去面试大厂,结果可想而知。可惜当时还没有养成记录面经的习惯,所以大致地大家分享一下面试经历吧。
 
下面我按照面试时间先后记录一下面试流程,时间历程大概是从11月初到第二年3月初。
 
百度:此时的我还处于零基础状态,一问三不知,面试官语气和缓地劝退。
(深受打击,开始疯狂学习,刷面经,打基础)
 
新浪,搜狐,爱奇艺等巴拉巴拉:基本一轮游,偶尔能过一面。
(自我否定自我怀疑中,然后开始看书,学原理和进阶内容)
 
网易,头条(作死),去哪儿,携程等:虽然进步了一些,但是还是没有拿到最后的offer。
(继续疯狂看书,刷博客,刷面经,然后开始做总结,写博客)
到第二年的春天,我继续新的征程。
 
美丽联合,CVTE,美团,网易游戏:都拿了offer。
重点说一下拿了offer的这几家的面试经历吧。
 
美丽联合:当时是视频面试,技术问题比较基础,就是常见的Java基础问题,比如集合类,多线程,JVM等等。同时还问了一些场景问题,算是比较有难度的了。当时经历了两次面试,大概面了一个多小时,最终收获offer。
 
CVTE:这个是现场面试,技术面试就问了几道数据库的问题,总监面则是让我把简历项目的数据库设计讲清楚,可以说是很简单了。hr面则聊了半个小时,最后得到了offer。
 
美团:当时参加的是远程面试,应该是电话面试,问的问题比较有难度,除了Java基础问题,还会问一些多线程啊,锁和同步之类的问题,面试持续一个多小时,最后给了offer。
 
网易游戏:当时是两轮电话面试。第一轮是技术面试,持续时间一个小时,基本把我之前复习的内容都问了一遍,从Java基础,集合类,再到并发编程,设计模式,数据库等等,另外还问了后端架构相关的问题。总体答得还不错,二面只出了两道智力题,答出来一道,然后面试官问我玩哪些网易游戏,emmm这个我懂。
 
详细面经我在牛客网发过,大家可以进我主页看一下。
 找实习的经验总结
 
1、写好你的简历,要实事求是。找实习对项目的要求不会很高,但是基础要比较扎实。
 
2、夯实你的基础,多看书和博客,勤做总结,面经可以用于查缺补漏,但不是全部。
 
3、同一家公司的面试一般有记录(冷却期),做好准备再去面试,否则可能浪费机会。
 
4、春招的实习生叫做统招实习生,非春招的实习生叫做日常实习生,一般前者的面试难度比较大,后者面试难度比较小,所以,两者有一定区别,可能在后续实习内容和转正难度上会体现出差异,大家可以权衡一下。
 
5 、找实习有几个网站你需要知道:实习僧,牛客网,拉勾。
 
6、面试过程中记得问清楚能不能转正,这对你后续的选择影响重大。
 
最后说一点:其实实习没那么难找,一般岗位要求也会比校招低,所以你可以“挑剔”一点,有机会最好选择你喜欢的部门,我当时没太注意这一点,所以特地补充。后记
现在是11月份,找实习的小伙伴们开始着手准备了吗,要知道,复习这种事,宜早不宜迟呀,学弟学妹们赶紧开始吧。
 
另外,本文可能没有把找实习的技巧和经验讲的很仔细,后面会继续推出这方面的文章。
 
除此之外,关于在网易游戏和百度实习的那些事,我也会写一篇文章,让大家提前了解实习生活是什样的。

看完这篇面经,我再也不用担心面试了!

腾讯lanqiao 发表了文章 • 0 个评论 • 10 次浏览 • 21 小时前 • 来自相关话题

  作者:全国花式撸管大赛总冠军 截止目前面试,除了阿里跪了以外(他的笔试我实在是不会。。。),其他的都是sp,分享一下经验吧: 最高的是快手,接近50W   先自我介绍一下 ...查看全部
 
作者:全国花式撸管大赛总冠军

截止目前面试,除了阿里跪了以外(他的笔试我实在是不会。。。),其他的都是sp,分享一下经验吧:
最高的是快手,接近50W
 
先自我介绍一下,双非本科计算机专业,986硕士通信专业。成绩年纪倒数..... 研一下册开始学Java,开启了我的Java后端人生.....
 
首先我觉得学习技术分三个过程:
 
1、要会用,熟练使用 ,例如你可以比较熟练的使用Java的各种容器拉,像LinkedList ArrayList Hashmap Set啥的,当然你要是学了框架,也要会用spring 的依赖注入啦,AOP之类的。这是用的层面。
 
2、理解运行原理:只是会用,是完全达不到面试要求的,面试官要求我们不但要会用,而且要知道其运行原理,例如你要知道LinkedList 底层是链表,ArrayList底层是数组啥的,要知道谁是线程安全的容器,哪些不是,知道线程池的运行原理,拒绝策略之类的。这些是面试官问的比较多的,考察候选人对知识是不是有仔细去钻研过。
 
3、理解为什么原理是这样,或者说为什么会这样设计:例如你知道HashMap的运行原理了,你肯定知道底层是一个数组+很多条链表实现的,那人家为什么要这样设计呢?想一想HashMap设计的初衷,想用key通过时间复杂度O(1)内拿到对应的Value,对吧,那现实中是会有hash冲突的,那有冲突咱们必须解决啊,所以链表就形成了,对吧?为什么要设计链表,知道了吧?因为要解决冲突,那链表的出现带来了一个问题,HashMap设计的初衷,想用key通过时间复杂度O(1)内拿到对应的Value,但是链表变长是不是就对时间复杂度O(1)相违背了呢(因为定位到一个数组之后,还需要遍历一下链表才能通过key拿到value)?于是乎有了链表长度达到8之后 会进行转红黑树,对吧?所以转红黑树这个事情其实 服务于HashMap设计初衷:用key通过时间复杂度O(1)内拿到对应的Value。这些东西可能需要看一下源码,你才能理解得更清楚。比如java的锁,synchronized 为什么反编译后 只有一个moniter enter,但是却有两个moiter exit?对吧,需要你琢磨一下,这样可能才会明白一个东西为什么这样设计。
 
上面三个过程
对于第一个过程:会用,我觉得看视频是最直观的了,对于这种实践的东西,别拿书来啃,弱智才会做这样的事情。有视频,跟着搞 一会儿就搞定了。看书 枯燥无味,总之凡是需要实战的,项目的 我都看视频,才不会去看书.....
 
关于看视频
2、看视频,我推荐我看过的慕课网的视频,慕课网上有很多好视频,但价格昂贵,但是建议去淘宝搜吧,10-20元就能买一个非常好的视频:
 
Java:
如果您什么Java基础都没有,推荐看 传智播客的 基础班+就业班,淘宝买吧 估计1元就能买到 哈哈哈哈
如果要提高和面试下面的教程不错,都是慕课网的
Java并发编程入门与高并发面试
一站式学习Redis 从入门到高可用分布式实践
Java开发企业级权限管理系统
Java秒杀系统方案优化 高性能高并发实战
Java从零到企业级电商项目实战-服务端
算法:
推荐三个:
牛客网左神教的算法
看得见的算法 7个经典应用诠释算法精髓
学习算法思想 修炼编程内功
算法看完了 还得多练
 
 
书籍:
深入理解JVM虚拟机 必看
Java并发编程艺术 or Java并发编程实战(注意!不是Java并发编程实战手册) 两个选一本看 我看的前者
 
欢迎加我qq交流:Cindy_ababy
啥牛客网 leetcode多刷一刷。
 
如果三面三个步骤都做到了,我相信一线互联网离你就不远了
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
补充一下 忘了说:
计算机网络  操作系统 问得也比较多, 数据结构多数以笔试的形式出现
计算机网络问得比较多的有:TCP 3次握手4次挥手   拥塞控制 流量控制 快重传 这一系列的
操作系统:啥线程进程区别 烂大街的问题了。。。还有内存分配  有些面试官还会问问协程
 
还有一点需要注意,我上面说的看书,例如《深入理解JVM虚拟机》  之前看到网上有人说,这个书一定要看完 多看几遍,我想说:放你妈的屁,如果为了面试,不要全部看完!!!太浪费时间 就把常见的问题看好 理解好就行了!!!!! 谁tm再说这本书需要看完 我跟谁急!!!!!!
听我说,就看看 垃圾回收算法 垃圾回收原理 常见垃圾回收器 类加载机制,双亲委派模型 然后 Java的逻辑分区 堆 栈 方法区啥的 搞清楚 一个对象在哪里 一个成员变量存在哪里 一个局部变量存在哪里 如果是局部变量是一个对象的 引用呢 存在哪里?

这不仅是一篇面经,更是一份秋招过程指导!

阿里lanqiao 发表了文章 • 0 个评论 • 10 次浏览 • 22 小时前 • 来自相关话题

校招真的是段劳心伤神的经历,我把这一路的体会,写在秋招前,也许能给那些和我一样迷茫过,怀疑过,失落过的人一些帮助。(这篇文章有点长,可能需要点耐心)。 写在前面 首先呢我的面试经历和一些面霸和收割机的大神相比绝不算丰富,但 ...查看全部
校招真的是段劳心伤神的经历,我把这一路的体会,写在秋招前,也许能给那些和我一样迷茫过,怀疑过,失落过的人一些帮助。(这篇文章有点长,可能需要点耐心)。

写在前面
首先呢我的面试经历和一些面霸和收割机的大神相比绝不算丰富,但我这三个月应该能代表很大一部分人的心路历程:
从无忧无虑也无知的状态,然后遭遇挫败,跌入低谷,连续数天的黑暗,慢慢调整,逼着自己不能松懈,看到改变,收获肯定,分享经历。  
先大概说下自己的面试经历吧详细的面试过程和面试题解析在最后
相关的公司有四类
  • 笔试就挂了的:网易、头条。(对于笔试这个东西我到现在都没太多经验)
网易是第一家参加笔试的,面试会报销费用去总部,所以还是有难度,这个公司呢,内推不内推都要参加笔试。所以笔试要好好准备(当然笔试也不好准备)头条只有四道编程题,一个人做确实难度挺大的,尤其是工程为主,不太专搞算法的同学。笔试过了但因为时间地点原因没去面试的:京东、小米、去哪、携程、招银。这几个公司面试一定要现场,很多都要求去总部,还不报销路费。所以在遇到这种情况时,大家要有选择的安排,毕竟时间和精力都是有限的。
  • 最终参加面试的:
阿里(电话2面,很轻松地就挂了)腾讯(现场2面,很久之后hr电话说要转C++,就只能算了)百度(电话2面+经理面,offer)滴滴(视频2面+现场终面,offer)360 (视频2面+hr面,offer)美团(电话2面+hr面,offer)。阿里呢大家都知道,恨不得把全国学生都面一个遍,对于这种策略我只想说三个字,晚点投(下面会解释)。腾讯的面试体验还是很好的,会在酒店的房间里,安静舒适。只是java的同学可能要被问到很多C++和网络的知识,建议还是提前准备一下。百度内推都是电话面,会在某网站实时写代码,感觉百度的面试官都很不错,给我的体验也很好。内推的时候最好注意下部门,在一个好的部门和边缘部门还是差别很大的。滴滴面试比较晚,外地可以先视频面,最后会有现场面,报销花费。工作体验很不错,内部氛围很好,因为成立时间短业务扩展太快,技术方面正在沉淀期,工作还是比较有挑战性的。360要先笔试,然后可以视频面试。这个公司比较稳定,业务也都很成型,实习的话留用率还是比较高的。美团的话印象比较深,因为我是二月底内推的美团,然后内推没面我,三月正常笔试通过,然后待面试两个多月。估计是补招了才给我打的电话(我都已经准备入职了)。经验就是一定要选一个事业群,最开始选都喜欢的大多是以为这样机会多,相反这样很多部门由于自己的简历池太满而顾不上捞你。还有一投简历就沉的外企:Amazon、FreeWheel(不知道是他们只收北京生源,还是我英文简历写的太烂了)文章最后的面经当然只包括第三种因为笔试这东西真的不好讲,杂七杂八什么题都有,编程题大多人也要看发挥。然后这是我最直观的感受:offer = 心态 * (实力 + 面试技巧) + 缘分运气 我就从左到右说起吧。
  • 心态

其实每个阶段的改变,也都是心态转变的过程,所以首先要说的一点,就是心态。在上面这种公式里,心态作为一个因子存在。没错,心态可以影响你面试的准备,笔试的状态,实力的发挥,可以影响一个面试过程的方方面面。心态崩了,就只剩运气了,offer估计也就走远了。
那怎么调整自己的心态呢?
1、[b]首先是要正视自己的能力。不轻视,不高估。[/b]
不轻视指的是我们都要对自己有信心,毕竟选了这个行业和方向,说句不好听的话,机会那么多,就算你不怎么努力也会有个差不多的offer不是么?千千万万的初中创公司,各种拥有垂直领域稳定份额的二三线公司甚至有些已经上市,除此之外还有银行,投资,金融的IT岗,还有各行各业为了互联网+的策略而扩展的互联网分支(当然像链家这种已经算互联网+传统行业的典范了,我前些天还瞅到了像万达德勤一类的各行业巨头也在招程序开发...)所以啊,要对自己有信心,在这个行业十分缺人的年代里(当然各个层次的公司缺人的标准是不一样的),总不至于会失业吧。
不高估就是要清楚自己的能力范围,不是说期望过高不好,但过高的期望会让你的心理变得脆弱,稍有不顺心态就有崩掉的趋势。因为面试毕竟有太大的偶然性,就算你达到了一定的水平,相应水平的岗位也不是百发百中的,更不要说身边有那么多大神和收割机,天天拿offer拒offer,对心理都是不小的冲击。
2、[b]不要总给自己消极的暗示,心态差了积极调整。[/b]
大多数的人,总暗示自己说什么时间不多了,怎么每天过这么快效率怎么这么低。到笔试了,跟自己说这个算法太难了,肯定做不出来;临到面试了,跟自己说千万别问我linux内核,别问我分布式,问我肯定完;面试过之后,没有结果,就天天想肯定又挂了,唉我怎么这么菜。
如果这一系列的表现形成习惯,那心态这个系数最多0.5,能发挥出来的东西也都打了一半的折扣。凡事都不要太悲观,一个offer没拿到,正常情况是这个失败的经历产生的经验和总结是会让下一次的成功率提高的,千万别因为这些消极的暗示,反而让该有的提高都没有了。
心态差的时候反而要停下你重复而没有效率的工作,去调整一下,可以出去玩一玩,吃吃喝喝,不要把这几个月看得有多么不一样,好像耽搁两小时就要来生再见一样。
3、对于身边的同学,多交流,不比较。
有一些一起准备的好伙伴是件非常好的事情,不仅可以互相督促,而且可以在交流和分享的过程中取长补短。(哪怕是偶尔一起吐吐槽发泄一下也比一个人崩溃要好得多)。但对于每一次面试,只跟自己比就行了,面试的整个过程都是最怕比较的,偶然性大,而且每个人适合的方向和技术栈都不一样,结果不能说明一切问题。如果身边有些收割机,那更不要太在意这些天天拿offer的(尤其是拿一个就跑过来讲一句的,他们也许没有恶意,但他们可能真的想不到这种方式会对别人产生怎样的冲击)。
对自己的水平有个很清楚的认识,并选择自己合适的公司,好好准备自己的笔试、面试,不怕失败,但保证每次面试都有收获和提高,那满意的offer早晚会来。
实力
这里说的实力指的是硬实力,也就是技术上的真实积累(当然产品岗的就是对于产品相关知识的积累),而其实呢软实力在面试过程中也尤为重要(有时候真的要更重要),主要是指和面试官的沟通,对一个问题的阐述方式和表达方式,逻辑思维能力以及的价值观和为人等。
如果你平时有些项目积累,不擅长也从来没有怎么系统地总结过;如果你学习呢不算那么认真刻苦,研究搞得也不算出众,但是你该努力的时候也会努力,可以为了一个好的工作逼自己一把。
那也许下面说的实力和技巧都可以在一定程度上帮到你。(因为我就是这样的情况)
实力怎么能体现出来
这么说是因为很多人其实在这些年的项目或是学习中有一些积累,但是在刚开始面试的时候完全感觉使不出力,就是有种你问的我都能讲上一点,但根本说不清楚的感觉。(往深了问自然是完蛋)
知识面或者或者说技术栈都是有宽度和深度的,我们要做的就是在短时间内提升宽度,抓住以往本身就熟悉或是感兴趣的几个点去深入。
我是认为知识的宽度可以很大程度上决定你能不能通过面试(这里说的宽度并不是简历上了解、知道或者你都没往简历上写,仅仅是听说过的层面修饰的方面,而是写熟悉的那种,通俗地说是可以讲清原理,不涉及横向对比和优化的方面)
一两个点的深度呢在保证你能通过面试的同时(尤其是你的点正好cover了对方部门的技术栈),并且还是影响offer等级的关键因素。(达到足够的深度,不只能说出原理,还能进行横向技术对比,纵向的延伸技术,优劣点及优化,或者在这个点写了几篇很透彻的博文,更厉害的同学甚至有相关的开源项目的参与与贡献)
关于怎么提升宽度和深度可以看下面的积累(其实说真的短期内宽度是好补的,深度确实要看个人,是代价较高,性价比不一定高的一方面,看自己的决定吧)
所以我的建议是,先把宽度提上来,把你能cover的知识点及原理搞懂是第一步。建议对自己之前的项目和技术积累做一个总结和分类(可以参考下面的技术路线),然后对已经了解的方面尽可能延伸,对盲区或是薄弱的地方进行针对性的学习和练习。
当你的知识面覆盖到一定程度的时候,你自然会把他们的联系搞明白,慢慢理解这整个技术体系,在面试的过程中结合表达技巧可以关联起来说各个方面,也就可以很大程度上展现自己的真实实力(更厉害的同学甚至可以有超出自己真实实力的表现。)
 面试中的技巧和经验
 
好好对着自己写的简历一行一行看一遍,这都是你挖的坑,是准备给面试官作为切入点交流的,并不是自己往里跳的。(对每一行都要有足够了解和把握)
面试过程不要紧张,尤其是前几次,建议先从小公司入手锻炼下面试经验
面试方式不同,侧重点不同(无非是电话、视频、现场三种)。
电话面试建议找个人少安静的地方坐着回答,并且建议拿纸笔多做记录多画多写。(当然如果你觉得身边很多朋友可以让你越聊越嗨那也可以,坐着是让你整个节奏慢下来,说话明显更加沉稳,亲身体会过站着走来走去和坐着的区别)
视频面试其实和电话类似,只是可以实时写代码,面试官能看到你的表情。这里还是要放松,如果你比较紧张,可以不直视镜头,好好想问题就是了,因为很多面试官你答得好也会面无表情(因为他们也不常视频,表情都很尴尬),然后你看到他们没表情的表情肯定会受影响。
现场面试,最重要的是和面试官互动了,说几个点:语气要轻松点,多点肢体动作有助表达,多笑;不太好说清的就用笔在纸上画,一遍画一边讲,面试官也会更容易和你交流;如果你可以时不时幽默一下开开玩笑是更好了;见面和离开记得礼貌地握个手说声谢谢。
 面试过程详述
 
下面是面试的详细过程,包含面经:
按时间顺序,详细叙述一下我面试的过程,包括面经和心态的转变:
(括号里是对问题的补充,如果感觉有知识点的盲区,大家正好可以去深入学习一下。这里说一下我投的大多是Java研发岗,所以其他语言的可以忽略java问题)  
首先说一点,复习准备一定要早(当然这是说给19届师弟师妹们听的,嗯你们看到这里已经可以开始复习了),有同学去年暑假剑指offer都刷了一遍,然后我竟然今年3月才买这本书。还有同学前一年冬天就已经去实习了,这种机会也不错。但寒假如果不实习的,一定要进入到学习状态。我准备的就有点晚,寒假完全没看书,真正开始准备,大概是2月中旬号玩了一晚上狼人杀之后。
就是那个时候发现校招就要开始了,然后开始慌了。大概看了一周的书(基本上都是java基础),然后师兄说阿里内推了,心想赶紧投吧要不人家招够了就不招了(后来发现都5月6月了还在招。),然后就慌慌忙忙投了简历。
这里我要说一点最重要的事情一定不要在没有面试经验的情况下先面大厂,或者是你想去的公司。
我是下午三点半在阿里的官网完善的简历,5点电话就过来了。作为一个java coder,阿里是个很好的平台,(当然C++的岗可以好好准备腾讯),一定还是准备充分了再投,你先面的结果很可能是焦急地等一两个月然后被后来准备充分再来面试的人取代
阿里 (二面)
两天各面了一面(投的蚂蚁金服,第一天面的就不太好,第二天又把我捞起来面,并且面完感觉就走远了,但当时却没有reject,这就导致之后一个月一直在流程中,阿里其他事业部的师兄师姐没办法把我的简历提走,最终到要笔试了然后变成了rejected)
那个时候就是处于我所说的无知状态,知识点掌握的不够牢,简历写的乱七八糟,面试经验为零(这应该是我上学以来的第一次面试),面试技巧就更不懂了。
然后当时两次都感觉聊得很差(尤其是聊算法模型的时候都想自爆了),也根本没有记录面经的想法。所以有些问题我都记不起来了,大概说一下吧。
1、hashMap的扩容原理,初始有13个,要怎么new?(达到了负载因子,直接手动>>1)
2、Integer的常量缓存池的问题(-127~128范围有个cache)
3、ConcurrentHashMap的size()怎么做的(并没有完全加锁,而是先乐观的认为不会有写,通过modCount判断是否更改,这个我当时记不清就用了很多可能、大概、应该这种词,事实证明直接说不清楚会更好)
4、Spring的AOP关于拦截private方法一些问题.(细节忘记了,当时答得也不好)
5、项目中数据字典怎么做的缓存,如何做的通信,有没有用什么模块。(说了自己的做法,用的全局的HashMap,然后他会延伸到高并发的场景,分布式缓存怎么做等等,由于没实际操作经验提前也没准备,并且还没有直接说不会,又是用很多模棱两可的语句答得)
6、讲讲你的论文相关的模型吧(这个其实在简历上根本没写,只是写了数学建模的奖,然后面试官就开始问机器学习的算法,很多都是我没准备的,并且我心想我投的也不是算法岗啊。。。所以说对于简历上的每一条一定要熟悉,做足准备,并且遇到简历上没有都扯到的方面,要想办法转移,不要在这耗着
7、讲完算法的问题,面试官很尴尬的说了句,你这自己的研究方向你都搞不清楚吗?我当时预感就差不多走远了。。。
8、其他问题真的太久远了,我当时也没有记面经的习惯,所以就没有了。但是最大的感受是面阿里的时候整个人都是紧张的状态,语速特别快,恨不得把知道的都说出来,没有条理,并且把自己姿态放得特别低,还在楼道不停走来走去。(对,以上说的这几点全都是不应该的,但主要原因还是当时准备太不充分,简历方面的准备以及知识点的积累都不够;另外一点,还是要强调不会的就是不会,千万别说大概是,我觉得吧这种东西,说的不好很容易让面试官认作不懂装懂,虽然你只是很想向面试官表达点什么,哪怕只是积极的态度)
从阿里面完试开始我的心态基本上就崩掉了,对自己极度怀疑,加上今年诸事不顺,心情直接跌到了低谷。然后整个三月基本上都是黑暗的,整个一个月都没再投内推,每天从早晨起来,大多时间就在看书刷题,晚上十点回宿舍躺在床上,还要刷两个小时的面经。一个月下来很少说话,提升肯定是有,但是这个过程,其实完全可以用更好的心态去经历。
然后这段极其黑暗痛苦的日子持续了好几个月,一个师兄想帮我内推百度,因为之前因为没信心也错过了腾讯的内推,就心想要不试一下吧。
百度(三面)
一面 
1、自我介绍,印象最深最费心的项目(这个一套可以提前准备,在某些亮点可以估计抛出等面试官来问)
2、讲讲项目中的爬虫和优化怎么做的,为什么选用jsoup而没有用python的urllib
3、说说你了解的反爬虫措施,和针对异常的处理。
4、那你觉的你来做一个网站要从哪些方面考虑反爬虫。
这里可以提前和学习,即使你真正使用的只是一点,也可以在相关问题上做更深的了解。
1、最简单只分析请求,拦截所有非浏览器的直接请求(可以通过添加伪报头解决);查看refer页做防盗链接(可以改refer项);基于用户行为的策略,同一ip相似请求判定(代理或ip池,或间隔请求解决);基于用户session的策略(模拟多用户登录解决);封装前端数据,用js渲染生成(通过探取和模拟异步ajax请求解决);对ajax请求进行加密等等方法。
2、讲讲项目中怎么实现的充值,锁的机制和事务注解,如何保证了事务的一致性。
3、spring层面做事务和数据库层面做的区别,各自实现方式。
4、聊了事务的传播性和隔离级别,问了mysql的默认隔离级别(可重复读)
5、spring中事务传播性怎么配置(xml方式和注解方式,还有关于savepoint的使用)
6、算法:O(1)删除执行链表结点,做分析(其实是要指出剑指offer中那个直接copy值的方法的缺陷和隐患)
7、算法:二叉树的最长距离(递归的思想)
二面
1、聊项目(这次是针对项目中的加密算法和安全性做了阐述,大概20分钟吧,之前爬虫那个例子已经说了项目亮点要怎么准备了,这里我就不多说了)
2、详细聊了聊spring的IOC和AOP思想
3、关于AOP在spring的应用(比如事务,通知,aspectJ,slf4j的原理,和log4j的对比)
4、关于jdk代理和cglib第三方代理(说出对接口代理和子类继承的区别)
5、用的什么数据库,Mysql。
6、最大的数据量多大,用了索引没有,怎么用的(聊了前缀索引,对于varchar类型的值,又聊了聊char,varchar,text,blob的关系和区别)。
7、为什么索引不能随便用,什么时候用(什么时候失效,什么时候最高效)。
8、如何达到索引开销和性能的平衡,用了一个表去举例。(方法就是,根据情境看经常做的查询是哪些,然后依次是什么查询条件,保证最高效索引的同时,也保证索引不失效,避免无效开销,并且根据show profile和explain功能进行对比分析)
9、数据库用了缓存没有,讲讲redis的理解(用作缓存,队列,也可做存储)。
10、redis是单线程还是多线程的,举个例子(做计数器,rank排行榜)
11、讲讲hbase的原理,CloumnFamily包含哪些,region什么情况做分割,对于版本号这个第四维度的使用方式(一般默认三个版本)等。
12、让我等消息,说经理会联系我。
三面 
1、经理面其实更加放松,不只是技术方面,还有生活,性格多方面,感觉是个技术+hr的综合面
2、聊家庭,家乡,工作意愿,爱好等等(聊了十几分钟,感觉都很不错,然后之后的面试也就很轻松了,基本是我在讲他在听)
3、讲了讲项目的设计,包括异常的处理,数据库设计,通信模型的设计。
4、讲讲你理解的JVM吧(从内存划分说到了GC算法、分代思想,CMS和G1 collector,到类加载模型,tomcat的非双亲委派、线程上下文加载器,到JVM调优的策略,gc参数设置策略,如何找死锁,读快照,发现内存泄漏等等吧)
5、然后说了下部门的技术栈和部门介绍,说了部门可能没有留用的hc,问我介不介意(当时还没offer当然说不介意只是希望去学习)
6、然后就说把我简历锁了,之后会给我发offer。
其实到现在我都很感谢百度,虽然最后因为部门和留用hc的原因没有去,但是这次面试收获最大的就是信心。并且经理电话里就给了口头offer,这个让我悬了一个多月的心一下子就放下来了,接下来的几天乃至之后的面试整个人都是放松的状态。(真的很难形容,这种转变就在这一个电话的前后)
所以,其实大家也早晚会有这一天,没必要一直那么紧张的状态,太痛苦了。(虽然我知道这种话说得简单),另外一点就是三月份确实有了很大的提高,这个告诉我们,该逼自己的时候还是要狠心一点。
360(三面)
有了信心或者说有一个offer之后,你就会越来越顺利,从这之后的每次面试都会有不同程度的收获。360的流程是走得最顺利的,笔试+面试,三次面试一天完成,但是360的面经可能写得稍微简单一点,因为很多知识点在后面的面试中也出现了,就没有做过多解释,腾讯滴滴美团的面经要详细一些。
一面 
1、自我介绍加项目
2、线程池如何优化的爬虫,数据规模
3、网络时延如何处理
4、同名影片如何选取,有没有更好的方式。
5、反爬虫的原理,从低级到高级说一下,分别如何应对
6、收获了什么
7、线程进程区别
8、说下资源方面的区别,共享,不共享
9、共享的具体哪些资源
10、jvm内存模型
11、堆区的特点
12、数据库左连接右连接,场景
13、给200个200个数的数组,找到最大的200个
14、git 常用的操作,git rebase和git merge区别
15、分布式数据库怎么调用
16、linux常用命令,查看内存,查看磁盘使用率
二面  
1、聊项目,介绍下背景,怎么谈的
2、印象最深的模块及解决,其他项目呢,跟着老师做的,还有简历上没写的项目
3、项目经验还可以那基础怎么样自己觉得,
4、说下jvm吧你知道的,中间会问
5、jvm详细如下
6、内存模型
7、垃圾回收
8、分代及回收算法
9、哪些作为gc root
10、收集器的特点分类
11、类加载机制和双亲委派模型
12、几个加载器
13、tomcat类加载有什么不同,说加载顺序并不是双亲模型,具体顺序说一下
14、并发注意什么,线程实现同步的方式,通信
15、几种同步的区别
16、悲观锁乐观锁,底层怎么实现的,越详细越好
17、单例模式的特点,几种实现,容易引发的问题
18、如何防止内存泄露,哪些会容易造成
19、jvm调优如何检查内存泄露,如何优化gc参数
20、写sql  查询带日期多次考试成绩表中,每个学生的每门课最高成绩,日期要准确
21、分别用having子句写和用子查询写
22、写代码 旋转数组中查找某一个值
三面 
这是唯一一篇hr面经,因为我只面过这一次hr,其他的三面要么是技术,要么只是打个电话说说情况,还没问问题就挂了电话(比如腾讯的)。
1、讲一下项目怎么接的,怎么跟甲方沟通,遇到的最大问题,怎么克服的
2、自己的项目和老师的项目和安排怎么协调。
3、平时有什么爱好,怎么安排自己的时间
4、摄影都去哪拍,喜欢什么运动,什么时候运动
5、为什么选我们部门,其他部门你怎么看
6、我们是做移动端后台的,喜欢玩手机吗
7、说说常用的app平时怎么用,频率
8、以后会不会创业,为什么
9、以后的规划,职业技术和生活两方面
hr面没有太多经验,个人生活爱好这类我感觉就是放轻松聊,规划方向这些可以自己提前准备准备,但是比如创业,offer(之前说过了),价值观一类的问题,其实你也不知道对方想要什么样的回答,干脆随缘吧。
腾讯 (二面)
腾讯的面试有一点印象很深,很考察思维能力,经常会有一些意想不到的问题,或者智力题。挺有意思。
一面 
1、上来看了我的简历问我会不会C++,我心想虽然学过,但是好几年不写,还是说不会吧,然后面试官很好,就不问了。
2、hashmap底层结构画一下,手写代码做一个url解析器,用正则方式和hashMap的数据结构。
3、识别2的n次方,写个函数。(最快的是用位操作,大家应该都知道n&(n-1)可以去掉二进制最右的1,那2的n次幂&之后便为0)
4、自己实现http response响应头的结构及解析,用buffer(写个伪代码)
5、resp头中都有什么(主要考察http相关知识)
6、海量数据找到出现次数最多的100个(内存不足的时候可以先做hash分片,最后多路merge,每次操作可以用hashMap计数,也可以自己做hash函数计数)
7、redis底层实现,zset数据结构(问到了SkipList跳表这种结构)
8、jvm内存模型,分代,cpu100% 怎么排查(我以为问Jconsole的使用,其实是想问linux性能监测和调优)
9、用int值表示ip如何做(刚好32位bit一对一映射),写个伪代码做transfer
10、nio模型说一下
11、selector中的wakeup什么含义(这个答得不是很好)
12、select poll epoll (linux内核相关的知识)
13、arraylist.sort怎么实现的(这个可以看看TimSort的思想)
14、怎么看待java跟c++(说下区别和自己的感受)
15、能实习多久(这个好说)
16、去深圳工作怎么看(这个真没想过,不过当时说也可以吧)
二面
二面其实就两个大问题,但一直往很深的地方问。
1、100亿个数找最大1000个(说了分片,用堆,再归并)
2、问你确定吗?(我一想是最大的1000个不是出现次数最多的,其实是可以顺序读取,还是用堆实现)
3、有什么缺点,分布不均匀(说一下堆的复杂度由来)
4、有没有其他思路(用hash散列,计数排序)
5、这个更慢,还有更快的吗(我心想我平时就都是答得堆啊,怎么这次还有更快的?)
6、然后讲了基于partition的划分思想(找到第k个开始partition,在左边就在右面递归,在右面就在左边递归,最后确定partition出最大的k个)
7、这种思想了解了,但最坏情况太差,不稳定,还有更快的吗
8、是不是要用概率统计学,抽样估计?
9、说下思想。。
10、不够精确,还有又精确又稳定的吗?
11、那又给你一个数,你怎么快速告诉我是不是在这100亿个数中?
12、这个我知道有可能是想问Bloom Filter,但是具体到hash函数去几个怎么算,怎么判断误差等细节,我也记不太清了,就说了说思想。
然后进入第二个问题:
1、一个进程最多申请多大空间(看机器cpu的处理位数看情况)‘
2、怎么保证进程间数据的安全?线程呢?
3、安全方面有没有做过一些研究?
4、登录验证怎么做的,为什么用md5,有没有改进(+salt使md5库难解出),微信用的什么方式你知道吗?你想想应该用什么方式?(这里可能是问SSO单点登录的原理吧,可以讲讲SSO JWT token等技术的原理,这个也是我实习之后了解到的,当时答得一般)
5、那说到通信安全,怎么保证http的安全性,幂等性,回调同一个会话怎么标识不同请求,不同会话怎么区分(这个每个问题都画图叙述了下)
6、TCP 3次握手和timewait讲一下原理
7、讲一下滑动窗口,饱和了怎么处理
8、http安全吗?https说一下?
9、get和post请求
10、linux怎么查看网络状态(vmstat)
11、查看udp的性能,udp端口多少,什么时候用udp?
12、为什么tcp不行?
13、qq里哪些用的tcp哪些用udp?分别针对每种情况说一下为什么?
可以看到腾讯还是很爱问网络通信、大数据处理的(当然C、C++也很爱问,只不过我说了别问,他们就真没问,当然你做java的也不要期望他们会问你多少java问题)
然后当时并没有hr面,我心想应该是挂了,但是微信的状态又迟迟没挂,结果到了一个月之后五月底我都回家准备入职了(绝对又是补招的备胎),然后打电话问问个人情况(也没说是不是准备给offer),问可不可以去深圳,转C++方向。
当时也有比较好的机会了,并且实习转岗,如果不确定能留下,绝对是不建议做的一件事,所以就实话实说了。
滴滴新锐(三面)
 
1、说说你对现有Web开发框架的理解(从各个层入手横向对比优缺点,印象中说了SpringMVC和Struts,mybatis和hibernate及jpa)
2、mybatis和hibernate各自的缓存原理和比较,hibernate的一级二级和查询缓存,还有针对缓存的miss率,置换策略,容量设置和性能的平衡问了自己的理解。
3、要你设计的话,如何实现一个线程池(就讲线程池的原理,从初始线程数,核心线程数,然后到任务队列,满了继续到最大线程数,再满了到饱和策略handler,饱和策略一般有哪几种,基本上要理解ThreadPoolExcuter的构造方法那几个参数)
4、synchronized关键字,实现原理(和Lock对比着说,说到各自的优缺点,synchronized从最初性能差到jdk高版本后的锁膨胀机制,大大提高性能,再说底层实现,Lock的乐观锁机制,通过AQS队列同步器,调用了unsafe的CAS操作,CAS函数的参数及意义;同时可以说说synchronized底层原理,jvm层的moniter监视器,对于方法级和代码块级,互斥原理的不同,+1-1可重入的原理等)
5、算法:手写一个ArrayList类,实现add,remove,等基本的方法(主要考扩容的原理和实现,重点写出扩容机制以及扩容时的copy过程)
6、然后让对这个ArrayList进行改进,使之可以应对并发的场景
7、算法:手写字符串的正则匹配,实现*和.的功能,用的递归(写了一半他说时间差不多了,思想大概了解了)。
二面
1、说说你认为项目中技术最薄弱的一个地方(答了IO网络监控和通信模块,短连接性能太差)
2、举例说说在什么情况下会出现性能瓶颈,如何优化(答了用NIO的方式)
3、NIO的原理,jdk中有哪些工具和类去实现,如何实现(selector和channel的用法),真的好用吗?还可以用什么?(面试官应该是想问netty,因为没有实际用过,只能给他讲了netty的原理)
4、那来说说AIO吧,和NIO什么区别(对异步的理解),AIO在工程中如何实现的?(大概说了下ajax的回调函数),又问回调函数具体是怎么实现的(传递函数指针)。
5、然后借着异步IO想问消息队列,讲了一下几种模型和原理。(面试中没有用过没关系,只要你懂原理还是可以跟面试官讲,起码可以证明你是爱学习的)
6、项目中非技术上的困难(和甲方沟通需求,没有规范化的项目设计,需求变更太频繁等),问了我解决的方法还有以后希望怎么改进。(变相问互联网公司里面各个team以及需求方是如何合作和分工的)
7、讲讲Spring中怎么对初始化的bean做其他操作。(这里有三种方式,@PostConstruct注解方式,init-method的XML配置方式,InitializingBean接口方式)
8、三种实现上有什么区别(还好看过点源码,其实前两种是一个意思,都是通过反射的方式用aop思想实现,可以消除对spring的依赖;接口方式是直接调用afterPropertiesSet方法,效率更高点。spring加载bean时先判断接口方式,再执行配置注解方式)
9、算法题,一个先减后增的数组,查找目标值。(这里并不是查找最值,也不是剑指offer上的旋转数组,但是思想上也可以用二分的方式)
10、算法题,两个大数求和,要按高到低位的输入,实时输出结果的对应位,空间O,时间O(n),不借助工具类。(要考虑实时的进位标识,以及多个9之后的连续进位标识。
两面完了电话让去参加新锐的现场终面,很有诚意地报销了所有的花销。新锐的三面还是有难度,基本上围着算法在问。
三面 
1算法:int范围的随机数的阶乘编码实现。(这个题如果直接按最简单的算法题肯定是不行的)
2、首先考虑要用字符串做运算(因为中间数太大了,只有String能保存,当然你可以借助BigInteger或BigDecimal类去辅助实现)。
3、阶乘直接计算代价太大,循环太多,考虑设计中间缓存。(正常算复杂度太高,本身就是阶乘级的,所以正常想到用时间换空间)
4、只用空间换时间的话缓存也不能覆盖全部,如果把所有的中间值保存,空间是eb级别,不现实。(这里就要达到一个空间和时间复杂度的平衡点)
5、存部分中间值用部分空间换取时间,达到空间复杂度和时间复杂度的最优平衡。(开始说的二分做分割存储之后改为等间隔做分隔存储,间隔选取多长为好?我觉得要首先确定空间复杂度的接受极限,然后尽可能减小时间复杂度,因为空间复杂度是可以有预估值的,而时间复杂度当然我们是希望约小越好的)
(这里说一下,我并不是一开始都想到了,只是面试官一直在提示我思路,给我时间思考,没有否定过我)
1、因为头一次手写白板,返回类型有错误,面试官说你这个编译器会提示什么?
2、又问了异常体系,checked unchecked虚拟机原理怎么做。
3、解释下iaas.paas.saas和之间的关系,外呼接口和服务怎么调用的。
4、数据库主从备和读写分离原理,ibatis怎么配置。(这个只讲了数据库层面的原理,比如监听线程,主机和从机的同步方式等,但是具体代码层面的配置,由于没亲自做过,就说不太知道。)
5、算法,股票最长增长区间,优化
6、算法,最长递增子序列,一个dp数组一个max数组,最优情况
这个面试官应该是面试过程中遇到最nice的一个,也是我现在的老大。其实面试除了自身的因素也有面试官的因素,一个好的面试官不会随便地否定和质疑你(当然有专门压力面的),而是可以让你在放松的环境下,挖掘你真正对于一个方面的深度和理解。
最后的十几分钟他并没有问我问题,只是在跟我聊天,他跟我说不管是哪个公司,真正的发展还是跟部门的方向和氛围有关系,选择的时候不要只看公司,做的业务部门方向和leader才是该去了解和考虑的。
作为应届生很多时候不那么了解,这就要靠我们(指面试官)多去了解你想发展的方向。然后聊了很多成长路径和规划的事。
真正实习到现在一个多月,深深觉得面试就是面试,很多知识和题目都是可以准备的,而工作中面对各种情况解决问题的能力和方式才是更重要的。为了面试准备了很多,工作了发现要学的东西更多,我们真的还有很长的路要走。
美团(三面)
一面 
1、java基础,从头到尾问了个遍,都是大家准备的,但是也挺深的,包括:
2、hashMap,红黑树处理冲突,jdk7和jdk8有什么区别
3、JUC相关的集合,ConcurrentHashMap jdk7和jdk8的区别,Collections.sort函数jdk7 和 jdk8 分别怎么实现的。(总感觉这个面试官在某段时间肯定纠结过两个版本)
4、CopyOnWriteList底层是什么,适用的情况,vector的特点,实现的是List接口吗。
5、并发的问题,线程间通信三种方式
6、锁的膨胀过程,Synchronized和Lock的区别,底层的monitor实现和unsafe类的CAS函数,参数表示什么,寄存器cpu如何做)
7、volatile cpu和寄存器层面是怎么实现的。
8、线程池构造函数参数,各种类型的预设池各自的特点,ForkJoinPool是怎么实现的,多线程等等问了一个遍。
9、为什么匿名内部类的变量必须用final修饰,编译器为什么要这么做,否则会出现什么问题
数据库:
1、索引的分类。
2、主键索引和普通索引的区别,组合索引怎么用会失效。
3、索引的前缀匹配的原理,从B树的结构上具体分析一下。
4、聚集索引在底层怎么实现的,数据和关键字是怎么存的。
5、组合索引和唯一性索引在底层实现上的区别(这个是整个一面感觉答得不好的一个问题,不太明白面试官想问啥)
6、sql的优化策略,慢查询日志怎么操作,参数含义。
7、explain 每个列代表什么含义(关于优化级别 ref 和 all,什么时候应该用到index却没用到,关于extra列出现了usetempory 和 filesort分别的原因和如何着手优化等)
8、show profile 怎么使用。
二面
1、一个url到页面全过程(让我能说多详细说多详细,最好从OSI七层的每一层去扩展)
2、http的请求头格式(这个真的记不太清了,只说了几个有印象的标志位)
3、getpost区别,post可不可以用url的方式传参。
4、说到了url有最大长度,就问长度有限制是get的原因还是url的原因,为什么长度会有限制,是http数据包的头的字段原因还是内容字段的原因,详细说明。(在他一步步追问下答了个差不多)
5、关于幂等性的详细介绍。
6、幂等性是http层面的问题吗,还是服务器要处理和解决的内容。(就是看你对幂等性的定性是怎么理解的)
7、后台服务器对于一个请求是如何做负载均衡的,有哪些策略,会出现什么样的问题,怎么解决。(说了一致性hash算法,分布式hash的特性,具体的应用场景,又非要问我知不知道这个最早在哪个公司使用的...我说这个真不知道。好像是amazon?)
8、说说http的缺点,无状态,明文传输。
9、那https是怎么做的,如何实现的?ca认证机构。
10、然后问我https ssl tcp三者关系,其中哪些用到了对称加密,哪些用到了非对称加密,非对称加密密钥是如何实现的。(还好我项目中涉及到了一些加密)
11、关于加密的私钥和公钥各自如何分配(客户端拿公钥,服务器拿私钥)
12、那客户端是如何认证服务器的真实身份,详细说明一下过程,包括公钥如何申请,哪一层加密哪一层解密。
13、java的优先级队列,如果让你设计一个数据结构实现优先级队列如何做?
14、用TreeMap复杂度太高,有没有更好的方法。
15、hash方法,但是队列不是定长的,如果改变了大小要rehash代价太大,还有什么方法?
16、用堆实现,那每次get put复杂度是多少(lgN)
(思想就是并不一定要按优先级排队列的所有对象,复杂度太高,但每次保证能取最大的就行,剩下的顺序不用保证,用堆调整最为合适)
17、在线编程题:敲一个字串匹配问题,写了常规代码。问kmp的代码思想,最后问了下正则中用的改进后的BM算法。(还有个比较新奇的Sunday算法,有兴趣的同学也可以看一下)
三面 
1、其实写了3面,感觉根本不算面试了,就是随便介绍了下部门,然后商量实习时间(大概补招都这样吧)。因为已经决定去滴滴新锐了,就跟她说可能暑期不能实习,然后说可以秋招再联系。
2、另外美团这家要跟师弟师妹们说一声,投简历一定还是要选事业群的,千万不要选都喜欢,否则就算过了笔试,也会像我这样等两个月大概是补招才会联系到你。
写在最后
 
其实大家可以从这个过程中看出来,随着时间的推进,自己的知识储备和各方面的经验和能力都是上升的。
总结几句
1、对自己要有个定位
2、准备永远都不嫌早不嫌多
3、心态差了及时调整
4、面试挂了及时总结
5、这么多年也该逼自己一把了
一两次甚至一系列的失败并不可拍,成功之后反而没有失败总结得透彻,收获的多。失败的经历会让你不断提升能力,成功的经历会让你不断提升信心。而不管成功失败都会提升你的经验,都会有收获。
这不仅是一篇面经,更是一份秋招过程指导!

拒绝了网易华为有赞,我去做了一名高中老师

华为lanqiao 发表了文章 • 0 个评论 • 59 次浏览 • 2 天前 • 来自相关话题

作者:檀唱 一名艺术生,岗位是…… 非技术岗中的技术岗---设计师。   关于今年找工作比较难,技术岗的数量也算不少了,非技术岗是少之又少,加上设计师比较饱和,互联网公司以及国企都有面过,除了华为数量感觉上多一 ...查看全部
作者:檀唱

一名艺术生,岗位是…… 非技术岗中的技术岗---设计师。
 
关于今年找工作比较难,技术岗的数量也算不少了,非技术岗是少之又少,加上设计师比较饱和,互联网公司以及国企都有面过,除了华为数量感觉上多一点,其他公司的某个部门最多都是3到4个名额,竞争非常激烈。
 
7-10月在腾讯实习,9月中旬才得知hc不够未能留下,自此正式踏上了秋招之路。
 
此前只报了阿里和网易,阿里8月31号面hr,9月18显示被回绝。因此整个9月都是非常绝望的。开始到处投简历,只是时间太晚,坑位基本满了,难以捡漏。
 
10月18上午去华为面试,1小时结束两轮面试,然后赶去杭州的高铁,晚上抵达。
 
10月19号去杭州滨江网易大厦面试。早上去的时候整个厅都是人,从上午9点到下午5点,求职的同学越来越少,hr面的时候,只剩下零星的一些人,hr说hc数量在3到4个后,我更是心灰意冷,走出大厦的那一刻,看着这个陌生的城市不知所措……  
 
10月27号 去深圳一所公立高中面了美术教师 很幸运的被选中 
11月2号 收到网易的offer
11月5号 收到华为的签约通知
11月7号 收到有赞科技的offer call
 
在重新审视了自己之后,觉得自己不适合在公司里工作,不喜欢总是加班,不喜欢每天工作的没有生活,或者说没办法把工作当作自己的生活的一部分,喜欢校园里简简单单的状态,相比来看,压力不那么大,我也能有更多的时间安排自己的生活。在拒绝offer的时候,我非常认真的说出了原因,hr们都统一的笑了,可能会觉得这孩纸怎么这么傻 互联网公司放着不进去做老师了……   不过我还是比较满足的,父母为了我的健康着想,也不愿我进公司,即便华为薪资诱人,他们也坚定的鼓励我选择人民教师这个职位。
 
接下来是一些面经
 
其实都差不多,就挑网易来讲讲吧。我面的是考拉视觉设计岗,一共一轮笔试+三轮面试。
 
第一轮是设计师+主管两个人,很温柔
 
1.介绍自己 
基本信息+实习经历+项目经历+个人爱好
2.问作品
3.列举出自己熟悉的软件,会根据软件提问
4.选一个项目进行详细介绍
5.你对考拉有多少了解
6.一个人的头有多重
算是脑洞题,我思考了下,说:我生病的时候感觉头很重,健康的时候觉得没有重量。
五分钟后,显示通过进入下一轮
 
第二轮是总监,很端庄,不爱笑
 
1.介绍自己 
2.选出两个满意的作品讲述设计思维
3.你有什么缺点
4.你认为考拉的设计风格怎么样,还可以怎么优化
 
第三轮hr 很严肃了
 
1.介绍自己
2.讲讲经历
3.还有呢?再讲一些
4.还有呢?
5.还有呢?
6.你最讨厌什么样的人
7.一个球体上有多少钝角三角形
又是脑洞题,在hr的细微助攻下,我答:小于二分之一。(因为减去了直角三角形和锐角三角形)
 
结束。
 
 

美团华为旷视拼多多等算法面经

美团lanqiao 发表了文章 • 0 个评论 • 61 次浏览 • 3 天前 • 来自相关话题

作者:algorithmers 目前已拿到几家的offer。   1. 旷视face++   电面一面:上海研究院院长危老师 开始是介绍项目,问个人以后的发展规 ...查看全部
作者:algorithmers

目前已拿到几家的offer。
 
1. 旷视face++
 
电面一面:上海研究院院长危老师
开始是介绍项目,问个人以后的发展规划,后来回归从alexnet到最近的image classification的网络结构的发展历史
电面二面:coding面
线上做了一道题,应该是输出树的不同层次之类的题目,比较简单
电面三面:模型组组长
介绍项目,根据项目中出现的问题主要追问了两块,一块是图像生成式任务中的loss结构设计,另一块是海量人脸识别数据下基于分类的训练模型并行的方案
电面四面:hr(可能不算面试)
和hr简单聊了学习生涯和职业发展
现场一面:危老师
因为电话聊过一次技术,所以现场面就聊聊天
现场二面:孙剑老师
介绍一个自己觉得做的最好的东西
 
2. 华为优招
 
业务面:
介绍项目,然后介绍一个传统的机器学习算法,推导两层以上的fc网络的梯度,问了点python的基础知识,比如2和3的区别等
专家面:
专家面比较快,介绍一个比较完整的落地项目,然后就机器学习和深度学习的关系和不同撕了一会
综合面:
聊天流,对加班怎么看,对华为终端怎么看,个人有没有经历什么挫折。。。
 
3. 美团点评
 
现场一面:
介绍项目30分钟,然后大概是leetcode medium题
现场二面:
全程介绍项目,二面面完表示不知道我已经面过一面。。。。
复试面试:
应该是组长面,掏出大众点评app,介绍了一下他们做的功能,给了一个场景题,如何给商家选择头图,以及topk的实现
hr面:
手上有哪些offer,发展规划。。。
 
4. 拼多多
 
一面:
介绍项目,手写3sum,树的非递归遍历
二面:
介绍项目,介绍lr算法和svm
hr面;
职业发展,家庭情况,未来打算
 
5. 银联
 
一面:群面
十几个人谈p2p暴雷问题,没说几句话,给过了
二面:技术面
给个需求,如果规划工期,多久能上线,需要多少人,什么是有监督,有哪些无监督算法,介绍kmeans和改进算法
(投了算法被调岗开发,拒)
 
6. 腾讯优图
 
一面:
项目,如何防止过拟合,如何计算光流等
二面:
项目,对传统视觉有没有了解,训练集为什么要shuffle,不shuffle会导致loss如何变化(没有论文被嫌弃,然后挂)
 
7. cvte
 
一面:挂
介绍gan的基本原理,介绍dcgan的改进(论文早忘了gg),介绍后续gan的发展,讲解batch norm的作用,讨论人脸识别不同loss的优缺点

双非渣硕的算法求职路(百度SP、京东SP)

京东lanqiao 发表了文章 • 0 个评论 • 38 次浏览 • 3 天前 • 来自相关话题

作者:无名小卒23 本人本科硕士皆双非,和大佬们没得比,目前拿到的还可以的offer就是百度SP和京东SP,都是做的推荐算法,其他的不说了。 先说一下个人经历吧,学校比较水,实验室没有项目,实习经历:腾讯实习+滴滴实习  ...查看全部
作者:无名小卒23

本人本科硕士皆双非,和大佬们没得比,目前拿到的还可以的offer就是百度SP和京东SP,都是做的推荐算法,其他的不说了。
先说一下个人经历吧,学校比较水,实验室没有项目,实习经历:腾讯实习+滴滴实习   比赛经历:几个数据挖掘竞赛Top5的名次。
个人感觉,算法岗确实看学校,但如果简历还可以的话,还是有面试机会的,内推投的简历,80%都给了面试机会吧。
 
百度提前批(feed部):
3轮电话面,远程桌面coding。
百度的面试风格其实是比较好把控的,基本就是项目问答、coding、机器学习算法、CS基础,偶尔会有些概率题智力题。
算法题:
1. 两个有序数组求中位数(leetcode)
2. 判断平衡二叉树(剑指offer)
3. 最长上升子序列(lintcode)
4. 二叉树转双向链表(剑指offer)
5. LRU cache实现(leetcode)
6. House Robber(leetcode)
机器学习问题:无非就是树模型(gbdt、xgboost、rf、lightgbm)原理,LR、FM原理,w2v原理,深度学习在推荐系统上应用(和面试官讨论了google的两篇paper,其中wide&deep network讲的时间比较长),神经网络embedding层和w2v中的embedding的实现区别,其他的记不清了。
CS基础:进程线程区别,多线程实现方式,线程冲突是什么、怎么解决,TCP三次握手细节,海量数据排序(分治),其他的不记得。
 
京东提前批(广告部):
2轮电话面,远程写code。
京东的面试个人觉得不是太难,广告部今年招人比较多,面试内容的话也是围绕项目+机器学习算法来问的,本人有京东算法赛Top20,可能也是个加分项吧。
算法题:链表翻转、判断平衡二叉树、最长公共子序列、海量数据topk问题、蓄水池抽样算法
机器学习问题:也是简历上写的算法来问的,以及问了一些DL的基础,不难。
 
蘑菇街:
2轮电话面+1轮CTO面。
蘑菇街的面试只是围绕项目进行的,2轮各30分钟左右,都是在问项目,以及项目中用到的技术、算法,不难。
 
腾讯:
对实习所在部门的工作不感兴趣,于是提前离职参加了提前批。面了AI平台部,感觉是经历过最难的面试,面试官的问题一个接着一个,有点咄咄逼人,无奈水平不够,跪了,校招时候,做了笔试没被通知面试。
1. 项目介绍
2. 你这个项目中间哪些地方提升,中间过程分别提升了多少CTR?
3. 你项目用的分布式LR的是用什么优化方法,参数怎么调的,mini-batch的batch是多少? parameter-server原理,如何解决数据一致性?
4. 会分布式么,hadoop,spark会么,说说hadoop的灾难处理机制
5. hadoop一个节点数据量太大拖垮reduce,怎么办,Hadoop本身的处理机制是怎么样的,手工的话可以怎么调
6. hadoop数据倾斜问题如何解决
7. L1、L2的区别,L1为什么可以保证稀疏?
8. 各种最优化方法比较 拟牛顿法和牛顿法区别,哪个收敛快?为什么?
9. 深度学习的优化方法有哪些? sgd、adam、adgrad区别? adagrad详细说一下?为什么adagrad适合处理稀疏梯度?
10. DL常用的激活函数有哪些?
11. relu和sigmoid有什么区别,优点有哪些?
12. 什么是梯度消失,标准的定义是什么?
13. DNN的初始化方法有哪些? 为什么要做初始化? kaiming初始化方法的过程是怎样的?
14. xgboost里面的lambdarank的损失函数是什么?
15. xgboost在什么地方做的剪枝,怎么做的?
16. xgboost如何分布式?特征分布式和数据分布式? 各有什么存在的问题?
17. lightgbm和xgboost有什么区别?他们的loss一样么? 算法层面有什么区别?
18 lightgbm有哪些实现,各有什么区别?
阿里的话二面跪了,内推的阿里妈妈,难度比较高,跪了也是意料之中。
还有一些公司的面试没有参加,滴滴(面试时间和腾讯笔试冲突了,放弃),网易(2次笔试都过了,不过拿到百度后就没有去面了),搜狗(电话面了1面后,让去现场面二面,放弃),拼多多(二面被面试官放鸽子)。
 
其他的offer就是一些小公司了,蘑菇街、YY、Bigo这些,主要还是问项目,参考意义不大。
PS:Bigo的推荐算法团队非常厉害,都是百度高T出来的,而且今年待遇非常给力。
 
 
下面说一下个人的学习经历吧。
虽然是CS专业,但实验室做的方向和ML半毛钱关系没有,且实验室也只有我一个人在搞ML,所以也算是野路子出身了。
理论基础:CS229视频、西瓜书、统计学习方法、数据挖掘导论、推荐系统实践、深度学习实践基础:机器学习实战(研一时候照着书上代码打了一遍)、利用Python进行数据分析(照着书敲过一遍)
完成了这些基本功之后就是参加一些比赛了,刚开始入门的时候搞天池和Datacastle比赛,成绩都很水,并且是孤军作战,个中心酸只有亲身经历才能体会,后来研二后开始和一些外校的大神组队,拿了几个还可以的名次,也在大神身上学到了不少东西,所以个人感觉做比赛最好还是要组队,思维更加开阔,一个人闷头做很容易放弃。研二上学期末开始去实习,实习做的也是搜索引擎、NLP、推荐算法相关。
 
再说一下面试需要准备哪些吧。
算法工程师的面试其实就是围绕几项来展开的。
1. 机器学习算法理论:LR、SVM、树模型、FM/FFM、EM、LDA、word2vec、推荐算法等等,都会被问到,需要懂得算法的推导、适用场景、使用的Trick、分布式实现。
2. 深度学习相关:CNN、RNN、LSTM的基本原理,不同激活函数的差异等等,如果是面的传统机器学习岗的话,DL问的不深,但一定会问。
3. 数据结构与算法:leetcode高频题、lintcode高频题、剑指offer,大概这三样准备好就够了,校招前保证100多道题的积累量,面试时候写code应该就手到擒来了。
4. CS基础:计算机网络、操作系统,推荐书籍:王道程序员面试宝典,这本书对于突击面试很有帮助。
5. 分布式:Hadoop/Spark这些,属于加分项,会问点基本原理,还是需要看一下。
6. 编程语言:虽然做比赛都是用的Python,但C++或者Java必须掌握其中一个,面试也会问一些语言相关的,我是Java党,面试想速成的话推荐一个Github:https://github.com/it-interview/easy-job,里面知识弄懂基本Java面试问题这块就没问题了。
7. 海量数据处理:经常问的就是海量数据排序,推荐博客:http://blog.csdn.net/v_july_v/article/details/6279498/,弄懂这块就基本没问题。
 
Anyway,个人的秋招结束了(其实结束很久了),虽然有些遗憾,但拿的offer和薪资也都挺满意了,知足,开始弄毕业论文了,希望能顺利毕业吧,就写到着吧,语序有点混乱,凑合着看吧。
 
PS:最近私信我的朋友太多,这里再补充点吧。
对于学校不那么好的、又立志找算法工作的同学,这里给点建议:
一、尽快去实习!如果是3年学硕的话,研二上学期中下(11月-次年2月) 就可以去进厂里实习了,这样做的好处是可以避开春招实习生的招聘高峰,比较容易进大厂,据我所知,像百度、滴滴、头条这些公司都有常年在招实习生的,当然了,大部分是在北京。那么怎么找这种实习呢,推荐几种投简历的渠道:1. 实习僧 2. nlp job 3. 北邮人论坛的实习板块(对于非北邮同学,可以通过:http://bbs.cloud.icybee.cn/default 这个镜像进入)。对于学校不那么好的同学,如果简历上有一二线公司的实习经历,那么内推简历通过筛选的可能性就大的多了。
 
二、 关于数据挖掘比赛,很多同学问我如何入门这块,我的建议是分步进行,1. 先熟悉python的基本语法、numpy、pandas、sklearn、gensim、keras这几个比赛中常用的库的使用;2. 精读优秀比赛选手的代码,学习比赛的套路,推荐wepon的git:https://github.com/wepe;3. 做完以上两步,就可以开始参与比赛了,天池、CCF、DataCaslte、Kaggle等平台的比赛都可以,不要贪多,同一个时间段最多参加2个比赛就可以,然后每天坚持优化结果,虽然过程可能会有点枯燥,但是最终会有收获的,经过观察与亲身实践,这类比赛比较吃经验(套路),要想取得比较好的名次,通常需要参加几次比赛积累失败的经验才行,过程少则半年,多则一年。
 
三、算法题一定要刷! 如果时间紧,就刷上面说的三件套(leetcode高频题、lintcode高频题、剑指offer),当然,要多刷几遍,做到看到题目立刻想到思路并写出bug free的代码。如果时间比较充裕,可以刷刷leetcode中medium和hard的题目,锻炼思维与编码熟练度,总之,刷题是一个持之以恒的过程,切忌三天打鱼两天晒网!
 
四、专注于一个方向! 发现有些同学(包括我年轻时候),总喜欢这搞点那搞点,今天学一下机器学习,明天学一下Java后台,后台再学一下前端。这种方法对于大部分人来说是错误的(大牛忽略)!你要搞机器学习就专心搞,三条线并行搞:1. python -> 刷比赛  2. java -> hadoop/mapreduce/spark 3. python -> 深度学习,工作没你想象中那么难找。

一个非科班普通211硕士如何拿到腾讯、百度等offer

百度lanqiao 发表了文章 • 0 个评论 • 53 次浏览 • 3 天前 • 来自相关话题

作者:一棵向阳树_ 背景介绍 北交大的一名通信专业的硕士研究生,实验室做的方向是信息网络,找工作的方向是C++工程师。整个找工作的收获是这样的:春招拿到了腾讯和百度的实习offer,秋招拿到了腾讯、百度、美团、小米、京东、搜狗、爱奇 ...查看全部
作者:一棵向阳树_
背景介绍
北交大的一名通信专业的硕士研究生,实验室做的方向是信息网络,找工作的方向是C++工程师。整个找工作的收获是这样的:春招拿到了腾讯和百度的实习offer,秋招拿到了腾讯、百度、美团、小米、京东、搜狗、爱奇艺的offer,其中腾讯是白菜、百度是SP+、其他都是SSP。我是从去年10月份开始准备秋招的,整个过程比较漫长,期间也看了许多牛客大佬的分享,收益良多,所以希望能够在这里回馈一波,从个人经历以及如何备战秋招两个方面来探讨怎样才能找到一个好的工作。
个人经历楼主本科是哈工程的一名通信专业学生,综合成绩在全学院是前5%的水平。本科期间对于计算机软件可以说是一个彻彻底底的小白,只是自学了一点c++、java语言。后来保研到北交大以后,基本抛弃学业,开始积累实战经验,由于自己爱好广泛,硕士期间自学了很多东西包括Android、大数据、机器学习、linux服务器等等。参加的比赛包括两个机器学习的算法比赛以及研究生数学建模。可以说在备战秋招之前,除了完成实验室安排的任务以外其他时间都是在丰富个人经历以及填充知识空白。总体上感觉个人经历这一块在找工作的过程中确实是有加分的,所以建议非科班的学生,实验室没有相关项目,就靠参加比赛来丰富经历吧。
如何备战秋招 其实对于后台方向的工程师,秋招备战真的十分简单,把时间规划好,一步一步来就可以。下面先罗列一下相关书籍:
语言:
《c++ primer》《stl源码剖析》《深度探索C++对象模型》,面试考点集中在虚函数、虚继承、vector等容器的底层实现以及一些c++新特性上。对于面试来说除了以上三本其他书都没必要读,因为楼主读过《effective c++》等其他书,在面试的过程中几乎没遇到过相关考题。网络:
谢希仁的《计算机网络》,这本书足够应对所有面试了,主要考点在TCP和UDP区别,TCP三次握手、四次挥手。
操作系统:《现代操作系统》,我的经验是有时间就看书,没时间就看网上博客,因为操作系统的书一般都讲的比较晦涩难懂,不如一些好的博客讲的更容易让人理解。面试题主要集中在文件系统、进程线程、进程间通信、线程同步、程序内存空间这几个方面。
数据结构与算法:
《大话数据结构》以及牛客网《剑指offer》和《leetcode经典编程题》,一句话:看书+刷题。就个人经验来说,面试中二叉树和排序相关算法考的最多,其次是深度优先遍历、回溯和动态规划。排序算法比较常考的是快排、堆排、归并排,还有基于快排和堆排思想的topK算法(这些都要会手写)。二叉树主要是树的前、中、后序遍历(递归和非递归,最好能手写),层次遍历,树上两个节点最远距离、树和有序链表互相转化,两节点最近公共父节点,其他还有许多,暂时想不起来了。深度优先遍历(dfs)、回溯、动态规划主要是笔试题用的多,不过最好能够手写一些经典算法,比如01背包、最长公共子序列以及其推导公式。如果感兴趣的话可以了解一下dfs、回溯、贪心以及动态规划之前的联系和区别。
Linux服务器:《linux多线程服务器编程》,这本书主要是可以多了解一些概念,包括socket编程、各种同步锁。除此之外可以看看博客学习一下io多路复用、负载均衡、一致性哈希、线程池、对象池、任务队列等等
数据库:《redis设计与实现》《高性能mysql》,c++面试对于数据库的要求没有java高,我遇到的面试题主要是,redis的5种数据类型、redis的单线程实现、redis集群高可用;mysql引擎、索引、事务特性、隔离级别、脏读、幻读等。
大数据和机器学习:这两点只是面试中的加分项,时间充裕的话可以了解一下,在面试中如果有相关经历,面试官会觉得你是一个很全面的人,适合以后培养。
 
对于以上内容可以这样安排自己的学习计划:
一个月学习语言,两个月学习数据结构以及刷题,再剩下三个月学习其他知识顺带刷博客和面经,半年时间差不多就可以找个比较不错的工作了。根据个人实际情况,可以调整自己的学习计划,我在这里只是一个很初步的建议。对于想要拿到BAT级别以及更好的offer的同学可以在在自己感兴趣的方向深挖一下,面试的时候主动引导面试官往自己擅长的方向提问。
总结想和科班出身的同学同场竞技,真的需要更多的努力,花出比别人更多的时间。这个过程中孤独感,恐慌感,挫败感都会有,无聊感也会有,不过坚持下来收获还是很明显的。哈哈,最后再说一下面试技巧,1.逻辑清晰;2.突出自身亮点;3.学会引导面试官;4.有耐心、谦逊、懂礼貌。
PS:这里把我的经验拿出来给大家作为一个参考,观点可能并不完全正确,只是希望可以帮助到和我差不多背景的同学。
 
最后的最后,祝大家都有满意的offer~

送你一个励志故事——涵盖20多所互联网公司的校招C++面经

网易lanqiao 发表了文章 • 0 个评论 • 29 次浏览 • 3 天前 • 来自相关话题

作者:守望者1028 首先交代背景,我是个非科班的硕士生,水平很有限,真正开始准备工作需要的技能与知识是在一年前,具体专业的话,这么说吧,我是舒克也是贝塔,院系(本4硕17)。因为本科研究生都做了不少硬件的事情,所以软件方面需要加强的东西极其多, ...查看全部
作者:守望者1028
首先交代背景,我是个非科班的硕士生,水平很有限,真正开始准备工作需要的技能与知识是在一年前,具体专业的话,这么说吧,我是舒克也是贝塔,院系(本4硕17)。因为本科研究生都做了不少硬件的事情,所以软件方面需要加强的东西极其多,复习期间都是白天做项目,晚上学习,凌晨1点之前都不可能回到宿舍。并且在七八月份,找工作的关键时间,被导师要求写SCI文章(撰写加来回修改30+遍),更是直接只能忍着所有的困意与疲倦,奔波在各个面试地点,回来迅速转换思维写文章。如果你现在还是秋招,因为找不到工作很低落,那么我想跟你说,曾经的我,比你要痛苦得多,我只是知道,当我熬过去那段一躺下睡觉就会觉得心脏隐痛,感觉随时猝死的时间,我就会重生,命运不会抛弃愿意自我抗争的人。(说到这里,想到之前大家讨论的导师和学校,我只能说我航这个问题从来都是重灾区,可是吐槽是没有任何作用的,如果你厌恶你的生活,那就付出十倍百倍的努力来改变的下一步的生活吧,那才是我们要关注的重点。)
扯远了,收回来。我本科和研究生都做了很多嵌入式的事情,所以部分offer也与此相关。但是个人在接触硬软件清楚自己的意向是软件开发,所以主要往C++开发方向发展了。求职主要面向的是C++软件开发,后台开发,服务器开发。
学习了大佬的排版,我也照着这个写好了。https://www.nowcoder.com/discuss/29890 (大佬写的比我好好多)
offer情况是:
1) Get offer 或者offer流程中
腾讯(后台开发,offer,薪资各方面都算满意)
网易(C++开发,offer,三面面试官说前面的评价都是优秀,可能sp)
完美世界(服务器开发,sp offer,薪资不低)
趋势科技(软件开发,offer)
寒武纪(软件开发,offer,薪资还可以)
恒润(这一家可能只有北京高校知道一点,我航和我理去的比较多,sp offer)
多益网络(游戏开发,offer)
涂鸦移动(软件开发,offer)
CVTE(软件开发,终面,拒绝)
shopee(后台开发,offer,月薪不错)
远景能源(软件开发,终面,但不知道是不是被我说出的腾讯offer情况吓走了)
美团(后台开发,内推的三面完成,应该是G了)
深鉴科技(C++开发,offer,薪资很高,比普通的sp要高)
招银网络(软件开发,offer)
招商金融(软件开发,终面谈了所有offer情况,CTO坦言给不了我那么高工资)
中兴(软件开发,offer,谈薪后直接拒)
新华三(软件开发,终面谈薪后拒offer)
华为(IT软件开发,终面,面试官加了微信..)
4399(游戏后端开发,offer,谈薪后拒绝)
2)GG的公司
阿里巴巴(三面,挂)
京东(玄学面试,一面挂)
360(面试官很专业,但不容忍错误,挂)
58(后台开发,一面挂,所有面试中体验最差的公司,没有之一,没有之一,没有之一)
商汤科技(笔试好难,应该挂)
小米(笔试后没消息,挂)
携程(玄学笔试,至今没通知,挂)
3)待面试中
头条
4)放弃的公司
放弃面试:百度,滴滴,海康,好未来、蘑菇街(这么晚才接到电话也是醉了)
放弃笔试:类似去哪儿、深信服、TPlink之类
错过新浪网申。
没错,列举这些,就是想说明一点:我是几乎混迹所有互联网大厂笔面试的非科班学生    此处没有任何别的意思,列举公司名字方便牛油们对于以上某家公司有兴趣或者有问题咨询,可以回复问我。另外,给大家介绍一位大佬@young_for_you,妥妥的大厂offer收割机,百度(sp)、京东(sp),搜狐(sp),腾讯(offer),网易(口头 sp offer),新浪(口头 sp offer),头条(目前正在实习,转正也是妥妥的)。如果大家有问题也可以找他(哈哈,职业坑队友)
本面试主要分成三块内容:
第一部分:知识水平的提升方法与面试技巧,针对非科班或者知识面薄弱的同学,讲解准备校招与校招过程中应该具备的能力与技巧,包括但不限于推荐书单,技能说明,面试技巧等。
第二部分:大体上描述C++研发或者后台开发在笔试面试中高频出现的问题;
第三部分:挑选其中20家公司,描述自己的面试经历,说说不同公司的面试题目与感受(因为面试公司太多,所以我过程中基本上都没有做记录,只能凭着记忆写,但是重要问题都会提及)
1. 提升知识水平的学习建议
1.1 提升硬实力
校招是对面试者的种种考核与展示机会,在没有实力之前去面对,是很无能为力的,结局往往也不会是可喜的。所以首先前提在于提升自己的知识水平,在本身实力不足的前提下,过得的强调技巧,一门心思想走捷径,很可能是会酿下苦果。
所以,最重要的是你要有足够的硬实力。语言基础,操作系统,计算机网络,数据库,设计模式,算法,我认为都应该学习,扩展自身的知识宽度。如果跟我一样是非科班的同学,毫无疑问你要花时间将这些基础都有侧重点的学习一遍或者几遍,这样不至于面试官提出的一些问题你完全不知所谓。不需要什么都懂得很深,但是基础的东西要能够说明白,并且在某些关键问题中尽可能地挖深,研究透彻。假设你C11特性就是了解得特别多,用一个同学的说法就是,C11的知识点早就刻入骨子里了,闭着眼睛都写得出来,那么我相信你在其他保证基础没问题的前提下,一定可以获得一个很不错的offer。
下面我说说基础的学习资料。我认为在有时间的前提下,应该将基础知识都先补全了,保证知识全面的前提下,再做深度研究。而且由于非科班同学对于大部分东西都是第一次接触,本身没有一个特别好的框架或者概念,往往不知道这些知识的内在联系与实际应用场景,不要担心,先安心扩展自己的知识宽度,在慢慢将这些知识融会贯通的时候,自然而然你自己就会有答案,甚至你会在笔试面试或者与同学的交流中得到答案。顿悟的前提一定是大量知识的积累。
读书的建议:
(1)读每一本书都建议一定要读取书的源码,自己敲一遍,相信我,读没读过源码,是否自己能够写出代码差别还是很大的。
(2)强烈建议处于校招或者准备校招的各位,要有一个读书计划,上面不仅要有读每本书的计划时间(10天或者两周),并且记载读完每本书的感受或者问题。如果可能,可以记录读书过程中发现的问题,并且在很多博客上去查找答案。如果一番读书过程,受益匪浅。
C++:
C++ primer 5(不建议C++ primer plus),基础书籍,必读
深度探索C++对象模型 基础书籍,必读
STL源码剖析 STL方面的神书,建议读
Effective C++
More Effective C++ 推荐
侯捷老师的书籍与视频都很推荐,之前有个牛油给出了侯捷老师的视频,我下下来了,但是忘记是哪位同学了。在最后我将我的所有学习资料都打包放在百度云盘上,有喜欢的同学可以下载。
操作系统:
深入理解计算机基础(CSAPP,神书,极度推荐,号称比同等质量的金子更加之前的书,这个评价一点也不为过,必读)
现代操作系统(在读完上一本书后读,讲述操作系统的概念,可以配套网易云盘北大或者清华的操作系统课程视频)
UNIX环境高级编程(APUE,强烈推荐,如果想进腾讯,建议此书列为必读,如果能够理解这本书的内容,网络编程不会是你拿到offer的拦路石)
还有一个是之前一个师兄推荐的,MIT6.828的这门课,要求自己设计出一个简易的操作系统,是一个极好的实践项目(7个lab)。
计算机网络:
计算机网络(谢希仁,基础书籍,必读)
图解TCP/IP(简单明了,花上三四天时间读读这本书,挺有好处的,基础书籍,非必读)
TCP/IP详解(卷一,进阶书籍,必读)
UNIX网络编程(卷一,神书,进阶书籍,强烈推荐,跟APUE一样,腾讯的敲门砖)
图解HTTP(非必读,面试过程中http问的问题一般偏多,可以考虑在http方面详细研究,作为自己的亮点)
数据结构:
网易云课堂浙大的数据结构课程(推荐,0基础学生的必备良药,基础视频,每节课的配套题目必须独立完成)
大话数据结构(推荐,但是个人感觉不如浙大的视频讲解)
算法4(推荐,书籍代码是java语言,不影响理解)
以上三种不建议都详读,建议浙大视频+作业,过程中快速读算法4即可。没有太多时间,可以学习完视频,完成所有课程作业之后直接学习算法。
算法:
剑指offer(准备校招刷一遍,校招过程再刷一遍,哪里不会刷哪里)
程序员代码面试指南(左程云,好书,配套左神的视频使用效果更佳)
Leetcode(后面会给出部分leetcode题目详解的电子版,题目牛客就可以刷,但是不太全,如果你想进阶的话可以刷,我并没有刷,在不能确保自己其他基础水平达到的情况下,不建议贪多只花时间刷算法)
数据库:
数据库概论(基础,快速读,重在了解概念与基础)
Mysql必知必会(基础,快速了解mysql的好书,推荐)
高性能mysql(建议读前面索引和性能的部分即可)
数据库面试问题不会太多,而校招时间有限,所以建议基础先打好,后续再学习更深入的部分。
设计模式:
大话设计模式
设计模式能够在笔/面试中用到的不多(大牛除外),所以可以扩展这方面的基础,对其进行了解即可,重点研究单例模式,工厂模式等常见的设计模式。
Linux:
鸟哥的linux家常菜(基础书籍,必读)
如果有兴趣看linux内核的话,可以看看
深入理解linux内核
Linux内核设计与实现(LKD)
Linux内核完全剖析——基于0.12内核
校招基础准备:
王道程序员面试宝典(好书,将大部分的基础都进行了讲解,基础问题基本上都涉及到了,可以很好的应对面试上的小问题,推荐面试前期或者基础不扎实的同学看一遍,后面有电子版。)
个人学习的电子书或者视频都在http://pan.baidu.com/s/1nuAX6Ff 密码:ksjb
感兴趣的可以下载。
3.2 提升软实力与笔/面试技巧
笔试很多题目就是面试出的基础题目,语言基础、网络、数据库、linux,这些都是必考的,所以在校招之前和校招过程中,最好保持每天刷一定量的题(50起),注意查漏补缺,重点刷自己的短板(去刷2000题吧~)。但前提是,以上书单或者相似的内容都已经学会,否则很容易在笔/面试中铩羽而归。
提升软实力:
面试是一场个人show,是对自己目前已有知识与项目的一种展示,更是对面试者的全面审查。所以不只是硬实力的比拼,也考虑个人的综合素质,也就是所谓的软实力。我认为软实力这方面主要就是每个人的情商表现了,性格方面的东西是很难取改变的,由此每个人的作风也有所区别。但是在面试过程适当的掩盖自己的锋芒与说话的技巧还是极其重要的。大体可以总结为:
(1)保持自信的姿态,相信自己能够胜任这一份工作,语言有力,连贯并富有力量感
(2)保持谦卑的态度,认可面试官的知识能力,能够坦然接受面试官的所有评价,即使是嘲讽,切忌强烈反驳(双选过程,实在不开心不外乎就不去了)
(3)适当展示自己的价值观与人生观,每个公司都喜欢找契合自己公司文化的人,所以适当展示这方面,会给面试官一种很舒服的柑橘
(4)锻炼自己的反应能力,面试问题是不可控的,面试官会问到什么问题大都是无法预测的,所以保持绝对的热情与饱满的精神状态去面对,即使遇到不懂的问题很多时候也能够凭借本身的实力与灵活的现场反应能力回答上一二,加上面试官的提示,是完全可能回答好的。
(5)专注的注意力,在面试过程中,有时候是会有前后联系的,能判断到面试官擅长或者感兴趣的内容时,可以尽量往哪方面描述,可能会有意想不到的效果。
准备笔试的技巧:
(1) 学习过程中,注意总结笔/面试会可能会问到的问题,重点研究。举个栗子,鸟哥的linux家常菜这本书通俗易懂,看过一遍,估计也就一周。推荐边看边刷题(赞一波牛客的题库),即使刷题耽误了看书时间,也能慢慢让你培养出笔试的感觉,看完了你自然而然就知道这本书哪一块是重点,哪一块过一遍即可,然后再去刷题,看面经里面出现的linux命令的题目(如果分数ok,题目也都会,那么下一本)。
(2) 笔试过程中注重归纳与总结,记录每一类高频问题,可以在牛客上先找别人列出的问题,但是一定要将每个问题研究透彻,随时对其进行补充。
(3) 算法题除了多刷图以外,可以在自己电脑上将自己平时练习的算法题目进行总结,写一些通用的小算法,例如字符串题目、数组题目,dp问题,有些问题经常只是意境变换了,实际算法还是用得上的。
一言以蔽之,多看多练多总结,笔试不能高分也会通过。
另外:如果有线下笔试,都推荐线下笔试,难度会降低。
面试的准备与技巧:
面试是一个考核的现场,在实力之外,是需要技巧来支撑的,能够掌控面试节奏与放任面试节奏绝对是两个感受。。而校招本身就是一场战役,如果大厂岗位逐年减少,而IT学生越来越多,僧多粥少,没有准备的站会输得很惨。
(1)简历问题:互联网简历最重要的就是技能树和项目,其他都是锦上添花的东西。所以写上简历的东西一定要极其熟悉,自己深入项目,考虑面试官会询问什么问题,如果面试官问到你没有考虑到的地方,可以尝试发散思维去想去说,最好不要什么都说,甚至可以说你自己理解的但是其实不太相关的东西,至少要让他知道你是考虑过项目的整体框架,内在联系,存在问题以及改进空间的。另外,在面试几次之后,项目你也介绍过几遍了,面试官可能也提出一些问题,基于这些问题,重新润色简历上的项目描述,并且重新熟悉自己介绍项目的说辞,对面试官可能提出的问题做到心中有数。
简历上的技能,对自己写的每一项做到心中有数,例如,你写上“熟悉TCP/IP协议及其编程”,那么面试官问你建立服务器的socket函数有哪些,分别什么作用,你总不能不会吧?我最开始对数据库不太熟,没有系统复习过,简历上就没写数据库,然后美团面试的时候,一直问JAVA和数据库,我都直说不会/不太熟,面试官没有过分刁难,虽然还是问了很多。
(2)面试的准备
面试之前,前面简历的问题要熟透,嚼烂已知的项目的坑,并在后面面试中慢慢补全。知识技能方面,多看面经,首先将面试岗位的高频面试题都事先熟悉,用面经上面的题目自我考核,判断自己能不能很流利地回答出来。何谓流利地说出来,就是富有条理性的,透彻的,横向纵向结合的描述。并且在看面经的过程,可以扩展的看,每个问题的延伸问题,最后都花时间去琢磨(博客是个好东西,多看)。后面我会给出我知道的C++研发高频题目。
(3)面试过程的技巧
首先如果可以现场面,推荐现场面试,优势在于能够让面试官看到你的精气神,确保面试期间精神饱满,富有交流欲,尤其和面试官保持眼神交流,让他看到你的态度,并且对于每个问题,不管会不会,多问问面试官总是没错的。这个我认为是最重要的,每次面试官问的问题,我一般都是紧盯这面试官说,我是这么考虑的,您看看对不对/我对这一块不是特别熟悉,但我是这么想的,麻烦您指点一下/对于这个问题,我们分成三部分考虑,首先…
有人说面试变成了一站到底,这是很难避免的,面试官为了追求效率,考察你是否具备他们所要的技能,那么语言基础、网络、数据库、算法、linux基础,都必须至少两三个问题,于是他们就一个一个蹦出来。这种时候,你最好要稳住节奏,表现出足够的表现欲,对擅长的问题进行扩展,深挖,让面试官意识到你在某一方面很厉害,促使他去按照你想的方向去了解。聚个栗子,面试官问是否了解linux的IO模型,我一般是这么回答的,“对于这个问题,我们首先要理解同步异步、阻塞非阻塞的概念,balabala,他们之间的区别可以类比为XXX。在理解这些之后,我们将IO模型分为五类,分别是XXX”,讲完这些估计就要五分钟,相比你不咸不谈说,有五种,是XXX,面试官不详细问它们的特点你就不说,是不是差距很大。假设我有点忘记了IO模型的分类,那么前面的铺垫是不是也可以给自己时间去回忆。我经常是在面试期间忘了某个问题的答案,于是一边打打擦边球,一边大脑快速回忆这个问题,很可能在讲着讲着就想起来了。即是你想不起来,也绝对你比支支吾吾说不了几个字强太多了。
(4)面试的心态
前面说到了,精神一定要饱满,尽可能有信心一点。当然,我觉得对于前面几次面试的同学或者手上还没有靠谱offer的同学,紧张无可避免,那么就告诉自己,上次我面到了一面,这次我只要一面过了就好,一点一点目标往上提。
面试中自己的面试尽可能不要太受面试官影响,毕竟有些面试官确实不太负责,在面试期间时不时做一点别的事情,我们要做的就是做到自己的最好,描述清晰而流利,控制语速(我中兴面试的时候自我介绍实在太熟了,说得太快,被面试官提了一下)。
非科班同学面试经常碰到的一个问题就是,你不是这个计算机专业的呀/你的专业跟我们不匹配啊。这个问题很现实也很尖锐,毕竟科班出身的人就那么多,我凭什么要你不要他们,所以你要展示的就是你得计算机技能不比别人差,你的自学能力比普通人要强,或者你做的项目比别人牛逼,或者你比别人更能坚持,语言是很无力的,即使你说了,面试官也不一定就相信,所以在后面的面试拿出实力来表现自己。放在这里是想说,首先你自己心态要摆正,非科班对面试是正buff还是负buff,重点还在面试者自己身上,大公司一般不会卡这方面,更不会因此鄙视你,所以坦然一些,用实力告诉他们我们能行。
(5)面试后的总结与再准备
面试后,最关键是什么?还是总结。很多时候其实面试完毕你就大致知道结果了,至少你知道你能够根据面试官的反馈知道你自己的缺陷在哪里,记录下来。如果可能,每天都用word或者博客进行记录,短暂时间的将重点问题记录在手机备忘录上,然后找时间将这些问题一个一个克服。我个人是将问题都分类,分类总结记录,并且查资料将问题彻底弄明白。在经历三四次这个过程之后,你应该会很赞同这样一句话:面试是提高能力的最好途径。没错,你最初的总结一般都是很片面的,或者不符合面试需求的,但是在实战几次之后,你就会明白哪里才是重点,哪里是次要的,也明白自己的优势或者擅长的地方是哪些。在知道这些之后,面试过程中,就可以尽可能的避重就轻,引导面试官往你擅长的方面去说。还是聚个栗子,腾讯面试的时候,问了我http的状态码,我当时真的完全忘记了,就说这个我记得不太清楚,但是我了解的http是应用层上的XXX,版本有http1.0 1.1 2.0,动作一般有…,为了安全会用https来代替http。这样过渡掉这个问题,引导面试官来到你说的这些问题上(当然前提是你说这些可不能不会,不然就是自己挖坑自己跳了)。
还是回归面试后的心态,面试后就尽量不要过度去考虑这一场面试通过与否,最重要的是总结和准备下一场面试。这里也适用于笔试,校招时候公司太多,每天面试笔试往往都很多,没有太多时间给你感伤或者惊喜,在没有确定秋招结束之前,这里一直都是战场,不能松懈否则你可能就输了下一场。尤其是,如果面试失败了,那种低落情绪几乎避免不了,我们要做的就是尽可能缩短这个低落时间。我一直很看重京东的面试,抱了很大的期望,面试过程中感觉也很不错,但是当天就挂了,当时表示完全理解不了,非常低落,甚至开始怀疑自己的能力。这个时候,就必须和家人朋友聊一聊,放松一下,然后重新开始(有个信念,就是这是千万人都在争的路,输了也正常,但是我们都没有退路,没有任何办法,总结总结重新开始吧)
面试过程,真的不是学习或者工程能力强就能够拿到offer的,自身软实力也极其重要。心态,反应能力,态度,甚至状态都是能否通过一场面试至关重要的因素,这些就要靠我们自己去慢慢摸索与准备。我在拿到一些offer之后,跟同学讨论过,发现挺多人存在一个问题就是:对于很平常的问题,他们表现出不知道应该怎么回答,例如专业面的你在项目过程中最大的难点是什么,怎么克服的;HR面的你怎么评价你的研究生/本科生涯等等。这些问题说白了都是情商,无关技术,但是又很影响面试官对你的看法。这些问题没有标准答案,但是,保持诚恳的态度与真实的描述(当然实现要有所准备)是总是能够拉近和面试官的距离的。
2. C++研发高频笔/面试题目
笔试:
笔试这一块想不到特别好说的,很多时候只是公司筛选人的第一步,分数高低代表意义不大(尤其是大公司,现身说法,我的腾讯笔试真的是呵呵哒),当然笔试是一个门槛,不过后面很可能就不用谈了。我笔试经验也不足,感觉笔试考察最重点的就是算法的熟悉程度,代码能力,我笔试成绩通常不太高,原因是我编程题速度比较慢,往往都做不完。
以C++开放举例,粗略说说笔试一般会考哪些内容:
(1) 语言基础,C++中的定义,指针,模板,多态,重载等(尤其是多态,给定一个程序,基类子类有不同实现,考虑输出结果,这一类的题目面试题也极为高频)
(2) TCP/IP协议及其编程:计算机网络基础,socket编程,其中子网划分,七层协议(例如交换机属于数据链路层一类题目),五层协议,协议名称及其作用,常用端口号,https1.0 1.1特性与区别,三次握手四次挥手(可能出现的服务器攻击),加密(对称,非对称),IO复用等
(3) 操作系统:进程通信方式(linux/windows,每种方式的特点),线程通信(linux/windows),进程与线程区别,页面置换策略(考察置换几次),进/线程状态转换图,进程调度方式,死锁(必要条件,哲学家就餐,银行家,读者写者问题),
(4) 数据库:索引作用,应该/不应该创建索引的列,索引底层实现,sql语法,常见引擎特点,事务特点,隔离级别(引擎默认级别),隔离级别的问题,锁等
(5) Linux方面:IO模型,linux常见命令(grep,awk,sed),文件系统,
(6) 智力题:智力题是大公司笔试面试很喜欢出的题目,重在考察思维能力,也是为了选出潜力更大的人来吧。我没有刷过这类题,如果自我感觉这方面有欠缺的话可以自己在牛客上刷题。
(7) 算法:剑指offer,leetcode,左神的书和视频,任意两个搞定你都没有问题
那么说说面试的硬实力。
面试高频题:
校招过程中参考过牛客诸位大佬的面经,但是具体哪一块是参考谁的我也忘记了,如果您看到有些熟悉,那么可能就是您的,如果您觉得侵权,请告诉我,我撤回。
1语言基础(C++)
(1) 指针和引用的区别
(2) 堆和栈的区别
(3) new和delete是如何实现的,new 与 malloc的异同处
(4) C和C++的区别
(5) C++、Java的联系与区别,包括语言特性、垃圾回收、应用场景等(java的垃圾回收机制)
(6) Struct和class的区别
(7) define 和const的区别(编译阶段、安全性、内存占用等)
(8) 在C++中const和static的用法(定义,用途)
(9) const和static在类中使用的注意事项(定义、初始化和使用)
(10) C++中的const类成员函数(用法和意义)
(11) 计算下面几个类的大小:
class A {};: sizeof(A) = 1;
class A { virtual Fun(){} };: sizeof(A) = 4(32位机器)/8(64位机器);
class A { static int a; };: sizeof(A) = 1;
class A { int a; };: sizeof(A) = 4;
class A { static int a; int b; };: sizeof(A) = 4;
(12) 给一个代码,求输出结果
class A
{
public:
A(int x){}
}
问:A a = 1;是否正确, 如果正确, 那么它调用了哪些函数?
这类题目更常见的是在基类和子类有不同实现方法。(虚函数相关,栗子很多,不多说了)
(13) C++的STL介绍(这个系列也很重要,建议侯捷老师的这方面的书籍与视频),其中包括内存管理allocator,函数,实现机理,多线程实现等
(14) STL源码中的hash表的实现
(15) STL中unordered_map和map的区别
(16) STL中vector的实现
(17) vector使用的注意点及其原因,频繁对vector调用push_back()对性能的影响和原因。
(18) C++中的重载和重写的区别:
(19) C ++内存管理(热门问题)
(20) 介绍面向对象的三大特性,并且举例说明每一个。
(21) 多态的实现(和下个问题一起回答)
(22) C++虚函数相关(虚函数表,虚函数指针),虚函数的实现原理(热门,重要)
(23) 实现编译器处理虚函数表应该如何处理
(24) 析构函数一般写成虚函数的原因
(25) 构造函数为什么一般不定义为虚函数
(26) 构造函数或者析构函数中调用虚函数会怎样
(27) 纯虚函数
(28) 静态绑定和动态绑定的介绍
(29) 引用是否能实现动态绑定,为什么引用可以实现
(30) 深拷贝和浅拷贝的区别(举例说明深拷贝的安全性)
(31) 对象复用的了解,零拷贝的了解
(32) 介绍C++所有的构造函数
(33) 什么情况下会调用拷贝构造函数(三种情况)
(34) 结构体内存对齐方式和为什么要进行内存对齐?
(35) 内存泄露的定义,如何检测与避免?
(36) 手写实现智能指针类(34-37我没遇见过)
(37) 调试程序的方法
(38) 遇到coredump要怎么调试
(39) 内存检查工具的了解
(40) 模板的用法与适用场景
(41) 成员初始化列表的概念,为什么用成员初始化列表会快一些(性能优势)?
(42) 用过C11吗,知道C11新特性吗?(有面试官建议熟悉C11)
(43) C++的调用惯例(简单一点C++函数调用的压栈过程)
(44) C++的四种强制转换
2计算机网络(TCP/IP)
(1) 建立TCP服务器的各个系统调用
(2) 继上一题,说明socket网络编程有哪些系统调用?其中close是一次就能直接关闭的吗,半关闭状态是怎么产生的?
(3) 对路由协议的了解与介绍。内部网关协议IGP包括RIP,OSPF,和外部网关协议EGP和BGP.
(4) 路由协议所使用的算法。
(5) TCP和UDP的区别
(6) TCP和UDP相关的协议与端口号
(7) TCP(UDP,IP)等首部的认识(http请求报文构成)
(8) 网页解析的过程与实现方法
(9)    在浏览器中输入URL后执行的全部过程(如www.baidu.com
(10) 网络层分片的原因与具体实现
(11) TCP的三次握手与四次挥手的详细介绍(TCP连接建立与断开是热门问题)
(12) TCP握手以及每一次握手客户端和服务器端处于哪个状态(11种状态)
(13) 为什么使用三次握手,两次握手可不可以?
(14) TIME_WAIT的意义(为什么要等于2MSL)
(15) 超时重传机制(不太高频)
(16) TCP怎么保证可靠性(面向字节流,超时重传,应答机制,滑动窗口,拥塞控制,校验等)?
(17) 流量控制的介绍,采用滑动窗口会有什么问题(死锁可能,糊涂窗口综合征)?
(18) tcp滑动窗口协议
(19) 拥塞控制和流量控制的区别
(20) TCP拥塞控制,算法名字?(极其重要)
(21) http协议与TCP联系
(22) http/1.0和http/1.1的区别
(23) http的请求方法有哪些?get和post的区别。
(24) http的状态码
(25) http和https的区别,由http升级为https需要做哪些操作
(26) https的具体实现,怎么确保安全性
(27) http中浏览器一个URL的流程,这个过程中浏览器做了什么,URL包括哪三个部分?
(28) 一个机器能够使用的端口号上限是多少,为什么?可以改变吗?那如果想要用的端口超过这个限制怎么办?
(29) 对称密码和非对称密码体系
(30) 数字证书的了解(高频)
(31) 客户端为什么信任第三方证书
(32) RSA加密算法,MD5原理(MD5不算加密算法)
(33) 单条记录高并发访问的优化
(34) 介绍一下ping的过程,分别用到了哪些协议
(35) TCP/IP的分片粘包过程
(36) 有没有抓过TCP包,描述一下
(37) 一个ip配置多个域名,靠什么识别?
(38) 服务器攻击(DDos攻击)
3数据库(MySQL)
数据库我自身不是特别熟,面试的时候一般也都坦言了,所以面试官都只是问一些基础题目。
(1) 关系型和非关系型数据库的区别(各自优点)
(2) 常用SQL语句(DDL,DML,DCL,TCL)
(3) 数据库中join的类型与区别(inner join, outer join, cross join, natural join, self join),注意适用场景和sql语句的编写
(4) 数据库的索引类型
(5) 聚集索引和非聚集索引的区别(叶节点存储内容)
(6) 唯一性索引和主码索引的区别
(7) 索引的优缺点,什么时候使用索引,什么时候不能使用索引(重点)
(8) 索引的底层实现(B+树,为何不采用红黑树,B树)
(9) B树和B+树具体实现
(10) 索引最左前缀问题
(11) Mysql的优化(高频,索引优化,性能优化)
(12) 数据库引擎介绍,innodb和myisam的特点与区别
(13) 数据库中事务的ACID(四大特性都要能够举例说明,理解透彻,比如原子性和一致性的关联,隔离性不好会出现的问题)
(14) 数据库隔离性设置不同会出现的问题(脏读、不可重复读、丢失修改、幻读)
(15) 数据库的隔离级别,mysql和Oracle的隔离级别分别是什么
(16) 数据库连接池的作用
(17) Mysql的表空间方式,各自特点
(18) 分布式事务
(19) 数据库的范式
(20) 数据的锁的种类,加锁的方式
(21) 视图的作用与使用方法(如何删除等)
(22) 分库分表,主从复制,读写分离。(我不会,也没碰到过)
(23) 项目中哪里用到了数据库,怎么用的
4Linux基础
Linux这一块如果不太熟,可以直接说,但是因为开发岗位一般都是在Linux平台下的,所以几个基础问题还是要会的。
(1) Linux的I/O模型介绍以及同步异步阻塞非阻塞的区别(超级重要)
(2) 文件系统的理解(EXT4,XFS,BTRFS)
(3) 文件处理grep,awk,sed这三个命令必知必会
(4) IO复用的三种方法(select,poll,epoll)深入理解,包括三者区别,内部原理实现?
(5) Epoll的ET模式和LT模式(ET的非阻塞)
(6) 查询进程占用CPU的命令(注意要了解到used,buf,cache代表意义)
(7) linux的其他常见命令(kill,find,cp等等)
(8) shell脚本用法
(9) 硬连接和软连接的区别
(10) 文件权限怎么看(rwx)
(11) 文件的三种时间(mtime, atime,ctime),分别在什么时候会改变
(12) Linux监控网络带宽的命令,查看特定进程的占用网络资源情况命令
5操作系统
(1) 进程与线程的区别和联系
(2) 一个进程可以创建多少线程,和什么有关
(3) 一个程序从开始运行到结束的完整过程(四个过程)
(4) 进程通信方法(Linux和windows下),线程通信方法(Linux和windows下)
(5) 进程调度方法详细介绍
(6) 页面置换方法详细介绍
(7) 能否实现一个LRU算法
(8) 死锁的必要条件(怎么检测死锁,解决死锁问题)
(9) 哲学家就餐,银行家,读者写者,生产者消费者(怎么加锁解锁,伪代码)
(10) 海量数据的bitmap使用原理
(11) 布隆过滤器原理与优点
(12) 布隆过滤器处理大规模问题时的持久化,包括内存大小受限、磁盘换入换出问题
(13) 同步IO和异步IO
(14) 文件读写使用的系统调用
(15) 线程池的了解、优点、调度处理方式和保护任务队列的方式
(16) 怎么回收线程
(17) 僵尸进程问题
(18) 多线程同步(尤其是如果项目中用到了多线程,很大可能会结合讨论)
(19) memcache了解
(20) 异常和中断的区别
(21) 一般情况下在Linux/windows平台下栈空间的大小
6设计模式和算法
设计模式一般都不会考太多,除非你明确说自己懂。我基本上就不涉及到设计模式的东西,所以只是简要说说。当然,单例模式和简单工厂模式的概念和使用场景还是要知道的。
(1) 介绍熟悉的设计模式(单例,简单工厂模式)
(2) 写单例模式(饿汉模式和懒汉模式),线程安全版本
(3) MVC设计模式
算法这一块太过庞大,几乎都有可能,牛油们最好还是去刷剑指offer(level 1),leetcode(如果能够刷到最高难度,算法对你来说已经不是什么了,或者说面试对你来说简直就是吃饭喝水的难度),左神的书《程序源代码面试指南》(字符串,数组,dp,海量数据问题,搞定它们也就搞定面试的一半)。
下面还是简单的列举一些吧(包括一些数据结构题目,只列举简单的,面试的算法一半不会太难,但是现在一般都是需要比较好的思维,或者曾经接触过这方面的题,建议就是多刷题,做题感觉是刷出来的)
(1) 红黑树的了解(平衡树,二叉搜索树),使用场景
(2) 红黑树在STL上的应用
(3) 了解并查集吗?(低频)
(4) 贪心算法和动态规划的区别
(5) 判断一个链表是否有环,如何找到这个环的起点
(6) 实现一个strcpy函数(或者memcpy),如果内存可能重叠呢
(7) 实现一个循环队列
(8) 排序算法(写快排,归并排序,堆排序),算法的时间复杂度,空间复杂度,是否稳定等
(9) 快排存在的问题,如何优化
(10) 反转一个链表
(11) Top K问题(可以采取的方法有哪些,各自优点?)
(12) Bitmap的使用,存储和插入方法
(13) 二叉树的先序、中序、后序遍历(非递归实现)
(14) 二叉树的公共祖先(简单地说,剑指offer上的题大都是高频题)
(15) 1-n中有多少个1
(16) 字典树的理解以及在统计上的应用
(17) 数组的全排列
(18) N个骰子出现和为m的概率
(19) 海量数据问题(可参考左神的书)
(20) 一致性哈希
7智力题
我特别把智力题单独拿出来讲,是因为这一块其实有些公司很看重(例如腾讯),但是我基本上也没刷过这类题目,接触不多,牛油们自行补充吧。
(1) 100层楼,只有2个鸡蛋,想要判断出那一层刚好让鸡蛋碎掉,给出策略(滴滴笔试中两个铁球跟这个是一类题)
(2) 毒药问题,n拼毒药,要快速找出哪一瓶有毒,需要几只小白鼠
(3) 博弈论问题
(4) 先手必胜策略问题:n本书,每次能够拿X-X本,怎么拿必胜
(5) 放n只蚂蚁在一条树枝上,蚂蚁与蚂蚁之间碰到就各自往反方向走,问总距离或者时间。
(6) 瓶子换饮料问题:多少个瓶子能够换1瓶饮料,问最多能喝几瓶
3. 面试经历(包含面经)
阿里巴巴(菜鸟)
内推,时间较早,结果比较可惜,都是电面
一面:
  1. 项目深挖,聊了30分钟的项目,然而我项目跟软件开发并没有太大关系,反而跟自动驾驶关联性大一些(当我意识到可以投递百度无人驾驶部门的时候已经太晚了)面试官貌似对我的项目还挺感兴趣,项目聊得很深,具体到项目的硬件实现上。因为我是擅长C++,所以后面就问C++的基础,当时答得好烂。
  2. C++内存管理有哪些
  3. 指针和引用的区别
  4. define和const有什么区别?
  5. define和const分别在什么时候编译,哪个更安全
  6. 在类中,基类的析构函数为什么要设置成虚函数
  7. 虚函数的实现8.有什么问题要问我一面之后以为挂了,然而很意外的还收到了二面,二面正好跟导师在谈论文的时候,所以往后推迟了,就又换了一个面试官。这里说一下,对于大厂的面试,可以不推迟就不要推迟,尽可能去,有时候你一旦说刚好有事,岗位就变成不合适了。二面
  8. 面向对象的三个特性是什么?
  9. 详细介绍一下多态
  10. 如果我拿一个父类指针,指向一个子类的数组,要找这个数组的三个元素,应该怎么使用多态来实现
  11. (上个问题我想不出特别好的答案,然后说将这个指针转换成子类的,在+3找出这个对象)面试官询问如果不强制转换呢?
  12. 聊聊STL,如果我用一个int类型的指针,指向一个vector<int>中的元素,会怎么样?
  13. 在vector里面有一个find函数,那如果我用find==-1,会发生什么(这个问题记不太清楚,只记得什么等于-1)
  14. 用过gcc吧,问你几个gcc的问题
  15. 在Linux中一个目的函数的生成过程或者说编译过程是怎么样的
  16. 编译有哪些方式
  17. 那在linux中,对于一个已经动态编译后的文件,怎么查找出它用了哪些动态库?
  18. Linux共享库的搜索路径先后顺序
  19. 如果一个动态编译后的文件,可能缺少了某些动态库,我们应该怎么把它们添加上?
  20. 在Linux中,线程的同步方式有哪些
  21. 我问一些数据结构和算法的题目吧,知道红黑树吗
  22. 能说说单源最短路径dijkstra算法吗
  23. 那dijkstra算法能够找到最短路径的原因是什么
  24. 说说最小生成树吧
  25. 贪心算法和动态规划有什么区别?
  26. 设计题:设计一个爬虫,去爬一些论坛,有一些论坛可以直接爬,有一些论坛需要登录,有一些论坛需要注册,有一些论坛只让你检索固定数量的字符(例如你要爬20个,但是只让你爬15个),请问怎么设计这样一个类?
  27. 那有这样一种情况,如果刚开始给你100个论坛,你实现了,但是又给你100个,怎么办,不可能一直编译然后实现?
  28. 聊聊项目,花25分钟聊了项目
  29. 岗位在杭州,能够接收吗?三面:二面其实回答的很烂,感觉上是挂了,但是收到三面,三面很短,记不清问了什么了,没太多实质问题。

美团 后台开发
美团重点就是数据库、linux、java上,感觉只要你的java和数据库好就能进,恰巧,我是搞C++的,数据库不咋熟悉。
一面(面试官感觉也比较青涩,可能也刚毕业不久吧,人挺好的,问题超级多,面了一个多小时):
  1. 自我介绍
  2. 详细介绍项目
  3. Linux命令(问了接近10个小问题吧):怎么修改一个文件的权限、怎么查询一个文件的最后10行(tail),那怎么找出含有关键字的行的前后4行(不会了),怎么查询一个网络情况
  4. 数据库熟悉吗?(不熟悉啊,没关系,我问几个问题)知道索引吗?在什么场景下用索引,索引有什么好处,有什么缺点?
  5. 面试官感觉我回答索引部分还可以,给了一个具体场景,问应该怎么做(不会)
  6. 计算机网络:TCP/IP的三次握手、四次挥手,为什么要用三次握手,两次可不可以,四次挥手有没有可能改成三次挥手
  7. 操作系统:进程和线程的联系和区别,Linux下进程的通信方式IPC,进程调度的算法(讲了先来先服务、短作业优先、轮转、最高响应比),分别分析每一种的优缺点,死锁的产生条件,怎么解决死锁问题,怎么检测出死锁(怎么检测出死锁不知道)
  8. 近程的通信里面的管道通信,有哪几种(命名和非命名)。写一个管道通信的命令,问第一个进程的输出传递给第二个进程的输入,那么它还保存这个数据吗
  9. 知道数据证书吗?(从非对称的加密算法,公钥私钥的使用,数字签名,CA给的数字证书来避免冒认)对称加密算法包括哪几类?MD5是加密算法吗(不算,原因是)
  10. 数据结构:堆栈和队列各有什么特点,队列有什么应用场景(美团真心超级喜欢问这个问题的,不管是啥都问有什么应用场景)画一下单链表,双链表和循环链表,他们的查找,插入,删除的复杂度分别是多少?
  11. 算法:给一个二叉树,找出其中最长的距离,给出路径
  12. 学过java吗?C++和JAVA的区别是啥?能接受java吗
  13. 一般怎么学习技术
  14. 说一个你最近看的博客

二面:(这个面试官不苟言笑,跟他交流找不到鼓励,而且他一直否定我的思路,最后能过也是万幸)
  1. (一直看我的简历),介绍一下做的项目,详细说说其中软件的实现(项目真的很重要,面试面一定要将自己的项目介绍练习到能够详细透彻地讲解所有实现细节)
  2. 项目里用到了生产者想飞这,面试官让讲讲这个模型(感谢这次面试,让我更透彻理解我项目里面的缺陷与改进方法)
  3. 生产者消费者用在什么场景下(单生产单消费,多生产多消费)
  4. 项目里线程是如何同步的
  5. 项目里数据的保存(面试官见我答得不好,开启教育模式)
  6. 简历里写了linux(这个坑有点大),现在网络流量比较大,那我想查看那个IP的网络流量比较大(我答netstate),面试官说如果是查看端口的状态的话是这样,但是我的意思是说导致网络流量变得很大的是哪个IP。
  7. 用过sed命令吗?对linux了解多吗?
  8. 写过shell脚本吗
  9. 回归线程问题,说说多线程的出现是为了解决什么问题(回答不满意)
  10. 线程的状态有几种,画出状态转换图
  11. 你做过硬件的东西,那为什么要转软件
  12. 软件的高吞吐量考虑因素
  13. 除了C和C++,还了解过其他语言吗?有没有考虑学习Python
  14. 能不能说两个你最熟悉的数据结构?
  15. 找一个你最不熟悉的给我讲一下?balabala,一般用在哪里(又是应用场景,好烦)
  16. 你印象中C/C++和Java或者python的区别是啥,如果让你学习java或者Python,你会如何学习,有什么学习计划?
  17. 说一下你自己的亮点吧

二面比较煎熬,而且面试实在太少,回答的时候支支吾吾,结结巴巴,给人感觉极差,即使是原先可以很好回答的问题,也因为缺乏信心而在面试官中失色不少。
三面:
  1. linux的IO模型可以说说吗
  2. 项目里数据是怎么传输的,是在哪一层协议?
  3. 看过GPL相关的东西吗
  4. 我们后台开发都是用java写的,你这一块怎么样
  5. 详细介绍项目的设计
  6. 项目里面用到的缓存区,那什么时候释放
  7. 设计题:假设一个输入框,可以输入中文姓名,我们要设计一个评分系统,给输入的姓名打一个分,姓名越符合取名的习惯分数越高,否则分数越低?要考虑名字很长的情况,名字中两个字本身都挺好,但是合在一起就语义就有问题的情况(深挖,回答不好)
  8. 写一个整数翻转的算法(考虑溢出)
  9. 写一个生产者消费者的伪代码
  10. 你最近在看哪些书啊?
  11. 你以前看了哪些计算机的书啊
  12. 职业规划
  13. 能不能转JAVA
  14. 有什么要问我的

美团有一点很不好,就是不管过不过完全不告诉你,而且面试的时候也是没有HR的,从通知面试,接我去面试的都是一面面试官。我差点以为你们是不需要HR的呢。
腾讯 后台开发
特地把鹅厂先提出来说,因为可能还有人在面鹅厂吧。首先,我腾讯也是霸面出来的。和大部分同学相比,我比较幸运的是我大概11:10去霸面(想着感觉太早去也不会给我机会面试,但实际上不是这样的),然后扫码放上简历,差不多10分钟简历就被拿走了,5分钟后就被叫去面试了。当时面试官筛掉一堆简历,我亲眼看着他最后只拿了我的简历走了,感觉幸运值MAX(后来发现可能是由于我内推的时候,接到一个简短的电面(20分钟),也是SNG事业群的,然后没有继续内推面试,放到校招面试了)
关于霸面这里也说说这方面技巧,首先霸面基本上只适用于这些支持霸面的公司,其他公司最好不要死缠烂打。霸面之前,再次修饰一下自己的简历,让自己的简历亮点更加突出,能够在5秒的快速浏览中让面试官get到他们想要的内容。可以在放简历处或者面试厅外面守面试官,在他们空闲之际,快速递上简历推销自己,如果简历足够出色,机会要比直接放在那里等人去拿好得多。但是如果面试官不感兴趣,切忌死缠烂打,只会起到反作用。
电面
这一面试比较久远,我能够记得的就只有几个问题了
  1. linux中的僵尸进程,怎么产生,怎么处理
  2. top K问题,有哪些方法可以做(快排,建堆,分成小文件,然后败者树)
  3. 快排思想,复杂度
  4. 快排和堆排对比

一面
  1. 自我介绍
  2. 因为是霸面,上来就给了一张纸,让我看看做几道题,其中一道是C++中多态相关的,就是那种询问输出结果的题;一道是循环fork,问有多少个输出行的题,还有一道忘了。感觉应该是如果这几道题没答上来就可以回去了
  3. set,map和vector的插入复杂度
  4. 讲讲static的用法
  5. 全局变量和局部的静态变量除了可见区域不同还有什么不同?
  6. 什么时候要有拷贝构造函数
  7. C++里面的红黑树
  8. C++类里面函数加const的原因和实现?能不能在函数前面加上static,为什么
  9. linux基本命令,权限查询,cpu和内存的情况,查询出来后的结果怎么看
  10. 排序算法比较,复杂度,稳定性等11.智力题:有100本书,每次拿1-5本书,要先手赢,怎么拿?12.智力题:蚂蚁在树枝上的问题面试完感觉好开心啊,根本没去想过不过,只是觉得能够面到我最喜欢的公司啦,即是只有一面也值了,开心~(于是,当天晚上状态改变,通知复试)

二面:
二面我是当天第一个面试,感觉面试官还没有进入状态,所以前小段的面试比较冷场
  1. 介绍项目
  2. (发现项目没啥问的),出了几道计算机网络基础问题,例如描述三次握手四次挥手的11种状态,还有两三个忘了。三次握手之间可能存在什么攻击(DDos攻击)
  3. 说说DNS的原理,具体工作原理(我没说清楚)
  4. 讲讲ping的具体工作,用到哪些协议(这一块要熟一点,不要只记住用了哪些协议,要深挖怎么工作)
  5. 讲讲http的状态码,403,201什么意思
  6. 中间穿插了一些别的问题,例如C++的多态,虚函数,排序算法啊
  7. C++中加入构造函数里面有虚函数,会怎样8:智力题(在他电脑上)9:在他电脑上看两道题,说答案
  8. (看着电脑,上面有我的笔试题每道题的得分情况)你怎么看腾讯这次的笔试题,难度怎么样,笔试完有没有去查你不确定或者不会的题目怎么做啊?
  9. 你笔试编程题做得不好啊,什么原因啊
  10. 那你挑一道编程题重新去做吧,哦,我给你选吧,就这道(魔法城堡)。我先面下一个,你要是写完了或者不会写你就再写一个快排吧于是我就去后面写代码了,面试官面试下一个。(这里有个不太靠谱的小窍门,但是跟人交流过貌似挺符合的,要是面试官要是没有给你纸去写代码,那么你要小心点了,说不好就要去准备下一家了)
  11. 你有什么要问我的(问了部门,面试官比较详细介绍了部门,而且很贴心的告诉我如果我能进去,应该负责什么)
  12. 能否实习

三面(HR面试)
  1. 自我介绍(HR面试的自我介绍可以侧重软实力部分,项目技术方面介绍可以适当少一些)
  2. 不是计算机专业,为什么要转行
  3. 项目中遇到的最大难点
  4. 遇见过最大的挫折是什么,怎么解决的
  5. 职业规划
  6. 看过最好的一本书是什么
  7. 不是计算机专业,学习很难吧,平时怎么学习的?
  8. 怎么看待自己的?用两个词形容自己
  9. 目前的offer情况
  10. 家庭情况。
  11. 有什么问题问我的吗(我问因为部门有三个业务,具体负责什么确定了吗,培训机制,接下来的流程)
  12. 问流程的时候,hr小姐姐贴心的告诉我可能要加面(不要加面啊,哭)嗯,最后我表示了一下对腾讯的感情,不吐不快。

于是度过史上最难过的十一(比我去年整个十一用来写论文还惨),每天都刷状态,然而每天都是HR面试(虽然HR小姐姐说了十一之后才会变状态,但是不死心)。一直到十一的最后(10月8号的晚上),状态变成已完成所有面试。第二天查询状态(待报批),报批了一周,于10月13成功get到offer。
网易(全是算法)
一面:
  1. 自我介绍
  2. 貌似问了两个C++基础,忘记了,反正面试官也没上心
  3. 了解归并排序和堆排吗?balabala后,写算法:有两个链表都是有序的,怎么合并成一个(归并)
  4. 算法:怎么判断一个输入字符是正确的IP地址(IPv4的点分法)

二面:
  1. 给一张纸,上面有几个问题,问怎么输出,跟腾讯差不多,还是多态那套东西
  2. 又给了一张纸,上面是别的问题,海量数据的设计题(忘记了)
  3. 写算法:有1个链表,上面每个节点除了next正常指向下一个之外,还有1个随机指向别的节点,怎么复制(剑指offer原题)
  4. 算法:有1个打卡系统,上面记录了每个人登陆时间和下线时间,询问最大在线人数(原先思路是对登陆时间排序,然后比较下线时间跟后面的登录时间,但是面试官指出了会出错的情况。于是设立了对最早登陆时间和最晚离线时间的排序,然后每次离线人数cnt-1,每次有登陆时间cnt+1的方法)

三面(我以为是HR,然而并不是)
  1. 介绍项目2 项目的难点是什么
  2. 为什么转行
  3. 对未来发展的看法(职业规划)
  4. 前面的面试官对你的评价都挺好,那我就不多问了,写个算法吧,输入两个字符串,然后忘记了,貌似是怎么做处理后输出字符串。反正比较简单
  5. 有什么要问我的(没看到我的部门安排啊)

网易的面试特别顺畅,几乎没有卡顿或者不会的问题,当天状态特别好(腾讯加的buff在闪耀)。
完美世界(服务器开发)
错过内推,师兄的同学还是把我的简历给了HR,走校招流程。但是,我的笔试成绩不知道为啥找不到了,HR告诉了师兄。最后,HR让我去面试,面试之前重新做了一套卷子(1个小时)。这里就凸显内推的好处了,虽然流程都一样,难度都一样,但是起码人家更愿意给你机会。
先说说笔试,这套笔试难度中等,比较器全面考核了几乎所有的基础内容,有几道挺难的,没做的特别好。其中,有两道大题记忆比较深,因为遇见次数挺多,一道就是给了一个类,让你写出构造函数,析构函数,拷贝构造函数,赋值运算符重载函数。另一道是考察vector在删除某些函数的时候,iterator失效的情况,怎么解决
一面:
一面主要就是围绕笔试题进行询问,面试官一遍检查我的答题情况,一遍问一些重要问题(更多的是我做错的题目),然后扩展去问基础,例如
  1. 虚函数的实现,要极其具体的过程,例如虚函数指针在不同对象的指向
  2. vector迭代器失效的情况
  3. 算法题的思路
  4. 项目具体介绍,包括缺陷和改进

二面(部门老大)
1.简单考察了一下技术。问了差不多十个小问题,具体记不太清楚。
  1. 学过mysql,询问有没有在项目中用到,sql语句考察3.之前面过畅游?那边的情况
  2. 喜欢玩什么游戏,对游戏的认识,聊聊游戏
  3. 不是计算机专业,平时如何学习的?
  4. 最喜欢的书。
  5. 目前的offer情况
  6. 对户口有要求吗二面没问太多,也没跟我说什么,原先以为应该是挂了,因为没有让我HR面,但最后是却发现是想给我申请sp,所以要加面。(这个sp应该跟有个同系师兄也在部门里面,而且做得很不错有关)

第二天,部门HR反馈面试结果,表示要加面,后期校招HR通知
第三天,校招HR电话通知面试,这里赞一波完美的HR和面试官,有一说一,直接跟你说是想给你申请sp所以才加的面,面试结果不影响录取。然后这个HR对我们学院好感兴趣,跟我聊了差不多半个小时。(HR人好好,聊到最后我差点就直接说不考虑了,就去完美)
三面(是一个等级好高的人面的,在另一个大厦,里面都是完美的X总)
三面全程聊项目,面试官不停询问项目细节,然后加大项目难度,如果数据量更大要怎么设计啊,如果数据传输更快速怎么办啊,一直提醒我站到一个全局设计的角度上,不要拘泥于某一点(看成一个项目需求,总体设计是否应该更改,怎么改)。我都没想到我的项目的扩展性有这么大…面到最后挺崩溃的,大咖就是大咖,思路跟不上。
最后问了一下喜欢玩什么游戏,有什么心得。
Over。
趋势科技
这一家没太多好说的,就是尽可能参加他的线下笔试吧,还是要简单一些的。
一面(30min)
  1. 介绍项目
  2. 面向对象的理解。
  3. 多态的理解
  4. 介绍三次握手四次挥手其他基础问题跟前面高频题目大都重复,不说了。
  5. 写个算法思路:给一个字符串,怎么找出最长连续重复子字符串?
  6. 想做哪方面的软件开发?
  7. 有什么想问的?

二面(两个面试官,综合面,零零碎碎的,问了很多)
  1. 详细介绍了项目,面试官中途打断几次询问
  2. 介绍在项目里面充当的角色
  3. 项目最大的难点是啥
  4. 项目过程遇到的最大挫折是什么
  5. 介绍一下本科获得的全国赛奖项的情况
  6. 英语聊聊你对工作地点的看法
  7. 女朋友在哪,中文说工作地点的考虑因素有哪些
  8. 最有成就感的事情
  9. 在实验室中担任什么角色,参加的XXX能聊聊吗
  10. 职业规划,软件开发有多种,往哪方面发展
  11. 用两个词来形容自己
  12. 有什么要问的:趋势科技在国内的市场发展,培训机制(然后他们介绍了整个公司的整体文化,极客,自由)

不得不提一下,趋势科技的签约现场。二面后很快,就通知签两方,刚进们,就遇见那个宣讲的大咖,全程压力好大,他们气场太足了,但是确实我的所有问题都给予了解答,包括各种福利,公司制度,晋升渠道等等。然后跟我说,我可以先签了呀,反正没有违约金(这点厉害了),可以让我有个保底也好。也说了我可以继续去面其他的啊,最后还想去他们那再去。
京东(投了深圳岗位,但是面试我的是北京京东云)
一面:
坦白说,见到面试官,我就有不详的预感,因为我真的很不擅长跟年长的面试官(四五十岁)打交道。面试官全程冷淡,而且用“嗯?”来质疑你,感觉就是流程一直走,回答好坏确实没咋上心。
  1. 自我介绍+项目详细介绍
  2. 项目细化,能不能用XX来代替啊,为什么这么设计啊,项目目前的缺陷是啥?
  3. 三次握手四次挥手
  4. TCP和UDP的区别,适用场景
  5. 抓过TCP包吗?TCP包怎么构成
  6. 端口号最大是多少,如果需要更多的呢?
  7. 接下来就厉害了,几乎所有的网络协议来个遍。ARP了解吗,详细说说
  8. 详细聊聊ICMP
  9. 路由协议了解吗?说说
  10. http请求报文的组成
  11. linux用过是吗?文件权限,还有一些常见的命令
  12. 聊聊traceroute
  13. 在浏览器输入一个URL后发生的事情
  14. 数据库,用了什么,问了一些sql语句
  15. 问了全文索引还有好多,但是大都忘记了,基本上回答上80%,但是还是挂了。

360(C++开发)
面试的数据流部门的面试官,
主要就问了两个问题
  1. 写一个链表翻转的代码
  2. 类似今日头条,有很多帖子,假设每个帖子都有1个ID,32位,怎么实现将用户阅读过的帖子不重复出现(哈希不行,数据量太大,而且会是三维的(用户ID-帖子ID-是否阅读过),最后用了bitmap,还聊到了布隆过滤器,但是我这一块几乎都忘记了,实在面试官的引导下一点一点把这道题完成了)。嗯,刚出门就看到状态说不合适。

Shopee 后台开发
Shopee今年是第一次校招,岗位在深圳,公司处于刚开始的阶段。面试包括开发面,测试面,HR面。
面试之前,先做两道笔试题。
第一道算法:将字符串的所有大写字母放在后面,小写字母放在前面,相对位置不能更改,不能有额外的空间复杂度。(面试官会看算法的时间复杂度)
第二道:问在[0,1000000]之间的数字不包括8和9的数字有多少个
一面(几乎将所有基础都涉及到了,但都不深)
  1. 解剖笔试题,解释自己使用的算法
  2. 进程通信方式,详细说明,并给出各自的优劣
  3. 死锁的必要条件
  4. 银行家算法
  5. 页面置换算法,详细说说LRU
  6. C++的const和static作用
  7. C++的内存泄露
  8. 面向对象的三个特性
  9. C++的虚函数
  10. (跟腾讯一样)在他的电脑上看题,两三道吧,C++和网络都有,C++是典型的虚函数问题,网络有两道,跟协议和执行顺序相关
  11. 在浏览器中输入一个网站,发生的事情(客户端,服务端)
  12. 输入网站后,浏览器做了什么(中间涉及到URL的构成)
  13. OSA七层协议,交换机(XXX)属于哪一层
  14. 了解网络层的协议吗,分别有哪些
  15. 端口号的上限,以及原因
  16. https属于哪个端口,FTP呢?
  17. https和http的区别
  18. 了解设计模式吗?
  19. 单例模式用来做什么的
  20. 了解数据库吗(mySQL),count(1), count(*), count(col) 的区别
  21. 问了差不多五个SQL语句的问题(select,insert, alter)

二面(二面面试官对于一面面试官貌似比较相信,所以倾向于他的评价,没有问我太多)
  1. 笔试题第一道算法讲解,时间复杂度分析,是否可以优化(面试官认为可以优化,但是我到现在还是找不到优化方法)
  2. 笔试题第二道讲解,然后面试官质疑我的解法,我用概率论的方法重新解释了一遍,面试官接受了(这里想说一下,如果面试过程汇总,你跟面试官的想法相左,我觉得可以用很好的逻辑去讲解,让面试官明白,但语气要诚恳,态度要端正,说明你的想法即可,不要纠结于对错,因为更多情况下,会是你错了)
  3. 看两道题,第一道:有1亿个IP地址,怎么找出访问次数最多的IP(可能是这样)第二道是比较简单的算法题,具体忘记了
  4. 用过C++,那么知道C++的调用惯例是怎么的吗?cdecl和stdcall的区别
  5. 项目是否在linux上开发(不是),linux系统有多大的用户内存空间
  6. linux的gcc怎么调试
  7. linux怎么判断每个进程占用的资源
  8. 数据库看过什么书?
  9. 了解覆盖索引吗

HR面:
  1. 自我介绍
  2. 最有成就感的事
  3. 最受挫折的事情
  4. 项目最难的地方,怎么解决
  5. 项目几个人做的,怎么分配
  6. 聊聊本科的获奖项目
  7. 不是科班的,而且在自己专业学得挺好的,为什么想转行
  8. 怎么学习的
  9. 介绍一本自己印象最深的书(必须是深入理解计算机系统)
  10. 了解家庭情况,地点选择
  11. 职业规划
  12. 学院大体的求职方向,帮忙宣传一下公司
  13. 有什么问题想问的(培训机制,国际公司的交流和出差情况,深圳办公地点刚创建不久,主要业务范围和晋升机制)

招银网络 软件开发
每一面都很简短,大概15分钟,而且此时我已经拿到腾讯,网易的offer,所以基本是抱着打酱油的心理去的。我相信如果大家把基础都学了,前面我列举的问题都