# 先马后看
别犹豫了,马就完事了。在这里每个人都是分享者,你可以分享技能/干货/安装包/电影/图书等等宇宙内的所有资源。
···
1627人正在讨论
#
脚轻头重
同济大学·2022届

关于如何找工作以及我自己的一点血泪史(本科,金融类)

校招季前不久宣告结束,一路走来尤其感觉到求职方面信息可怕的贫乏,在我的求职过程中应届生论坛帮了我很多忙,于是我就想着把自己的求职经历和要注意的事情写给大家,让下一届求职的学弟学妹们有个心理准备。        先介绍一下LZ的自我条件吧,北京211金融系本科学生,男,成绩全院不知道是倒一还是倒二,青海生源,北京连个亲戚都没有。在校期间有事没事喜欢自己搞点事情做,挣点小钱,也做过考研代理之类的活,业绩还算可以,在找工作之前手上只有个家乡地方的邮储银行客户服务部实习,好的,以下是正文,写的有点长,排版的时候给重点勾了红字,方便大家阅读。嗯,首先,我觉得要找工作的人要明白几个问题。 第一,不要去看什么北大女彪悍面试经历blabla之类的文,当然这是对我这种学校没北大好,自己能力和成绩又很一般的人来说……先不说写的就跟主角上来就毁天灭地的起点文似的,我们求职就是为了能在毕业之前争取到一个外来务工人员的资格,避免毕业变失业,人家那个可是为了“体验不同公司面试”,追求全领域offer制霸,跟咱是有本质性区别的。在求职的过程中,你的期待会越来越低,这其实是种好事,不会因为眼光太高错过好机会,真的得到更好的机会的时候也能感觉到更大的满足感。 第二,求职过程中充满着各种各样的歧视,总结下来就是大概三个方面:地域,性别,专业 地域方面,举个例子吧,今年招商银行北京分行本科生只招北京生源,在其他公司的面试当中,本地人的通过几率几乎是外地生源一倍以上,我在浦发面试的时候甚至听到了“本地人至少会给一次面试机会”的说法,不过这一条放到自己的家乡也是同样适用的,所以要仔细考虑是留在自己上学的城市还是回家,生源地就是发达地区的童鞋,我十分建议你们考虑一下回家工作的可能性,要比一个人在外方便很多的。 性别方面,这个就不用说了吧,之前兴业北分面试,我和一个研究生学姐一起回校,路上学姐给我讲了一路女生是多么多么的不好找工作。事实上也是这样,很多职位会对男生有相当大程度的偏好,尤其年龄越大的女生越不容易应聘到这种职位。民企和中央国企一般会表现的明显一些,举例来说的话,我之前去中化当炮灰的时候整个面试等候室一个女生都没有。但是也有不少企业偏好要女生,比如一些银行和四大,这个在选择就职前要先好好调查清楚。 专业方面,有很多公司是在招聘中加了专业限制的,在我们学校办过的招聘会里,有家没听过名字的公司甚至以专业不符为由当场拒了我的简历(这是一种相当不礼貌的行为,你们经历过就会知道当时场面有多尴尬……),就算是在不加专业限制的公司招聘中,适合的专业也有很大的优势,你如果专业不合适的话,很有可能名校硕士研究生都拼不过人家本科毕业生,要好好调查清楚自己的专业适合从事哪方面的就业。之前浦发面试的时候遇到一个北大新闻系研究生学姐,大美女,口才爆我三条街,我就想不明白为何她要来应聘银行。 另外,一般来说,越大越正规的企业,这几方面因素的影响越小。所以找工作,尤其是第一份工作,有可能的话一定不要去什么小公司,最近就业形势非常不好,应届毕业生一般都是被迫先就业再择业,小公司的起点会让你之后的跳槽路异常痛苦。另外大企业的薪资福利体制都比较完善,会让你少操很多心。小企业的HR都是游说高手,就差没去卖传销了,当你被他们给你描绘的美好前景打动的时候,一定要保持清醒,认清楚你实际要从事的这份工作是什么性质。当时我去宜信面试,HR没来,直接来了个客户组的经理给我blabla讲了一个多小时,还当面给我口头offer说让我什么时候来都可以,当时一个offer都没有的我感激的稀里哗啦的,结果最后上网大概看了一下,她打算把我招进去的这个职位的学历要求是大专,然后工作内容大概就是推销理财产品,无底薪,业绩和工资是100:1……为了不在将来几年被迫过吃不饱穿不暖还累得像条狗的日子,还请大家在求职过程中一定要保持头脑清醒。 求职中需要注意的地方就先说这么多,接下来说说我的求职经历吧。 我7月中旬回的学校准备考研,大概看了一个月的书,然后在图书馆坐着打了一个月的DNF……大概九月份的时候反应过来考研基本没戏了,于是就开始着手准备求职。从9月初开始网上投递简历,参加宣讲会和招聘会,到12月末为止,我大概投了120份左右的简历,打印出来的纸质简历就投递了50余张,简历通过率大概是1/2,面试笔试跪了无数,到最后一共拿了三个offer,居然之家财务管培生,工行北分,建行青分。工行签约以后兴业北分,中信天分,杭州银行的招聘流程就没有再参与(给其他同学多留一些机会),也是得益于专业,除了最开始求职的时候当了炮灰的平安深分和光大北分,我所有参与了的银行面试只有浦发北分初面一场没过。 找工作首先得投简历,好的证件照很必要,我是去北邮那个天天向上照的,感觉挺专业,还挺便宜,强烈推荐。建立的话,茫茫简历海辨识度非常重要,写简历的时候挑体现能力的经历写,我简历上面素质一栏直接是照抄的原版的,感觉妥妥的。 再从笔试说起,笔试分为三种,网上机考,现场机考,现场纸质试卷。网上机考一般外企和新兴领域企业会用,但我这方面通过率非常低。因为我每次考这种试的时候都会百度……后来听说对面会对你的试卷正确率进行检测,正确率过高一样不会通过,所以还请各位同学千万不要百度答案,该怎么答就怎么答。现场机考一般国有大银行喜欢用,有的时候题出的会很奇葩,诺鑫行笔试让你写通知就不说了,今年建行笔试前五道题是从一堆乱码里面挑相同的符号,有限制时间,我看考场上有一半人因为不知道是什么意思,就让这五道题空过去了。还有中行的小球问题,我估计我中行笔试就跪在这儿了。建议大家事先看看笔经,提前对这种奇葩题有点心理准备,考场上灵活变通。现场纸质试卷,这个So easy了,尤其是一些民营企业的纸质试卷笔试,最方便的方法就是事先带好3G卡的手机去,到时候你会目睹大半个考场都在桌子底下按手机的壮观景象,大家都懂,咳咳。另外,我觉得大家有时间可以看一看公务员考试的行测题,因为大部分单位笔试都是主要考行测,考专业知识的也有一些,但是很少。如果没有时间准备就可以不用看了,也不用担心,我国考没看一页书行测还考了将近70分(虽说最后跪在只有30来分的申论上了)。另外,笔试的通过率一般都是很高的,如果你用心准备了的话,可以说是一定会过的,所以不用太担心。 接下来说面试,面试一般分为以下几个种类:小组辩论,无领导小组讨论,群面单独问答,单面单独问答,即兴演讲。其中无领导小组讨论最多见,几乎任何一个公司都要这么来一茬,就先讲讲无领导小组讨论吧。 无领导小组讨论,虽说是无领导,但我觉得引导话题走向的角色是一定要有的,并且把这个角色牢牢抓在自己的手里最保险,要抓住第一个开口的机会。而在讨论过程中,最重要的是要清楚地明白讨论的目的是要得出一个能让人接受的结果,而非把时间都浪费在与人争论上,关键时刻要纠正讨论的方向。至于第一次开口说什么,我这有个很好用的开场白:“有哪位同学带了表的麻烦帮大家看一下时间吧。”一般无领导小组讨论之前大家都看过一些面经,知道timekeeper这个角色比较重要,所以基本每次都会有人跳出来应征,这句话一出,无形当中就树立起了一种leader的氛围,接下来你需要做的就是开始组织讨论。如果有让每个人陈述自己想法的环节,主考官没有说按顺序来的话,一定要提议说“为了避免混乱,我们按顺序来”,这样能节省时间不说,在面试官那也能加不少分。如果有人抢着做陈述,一定要在他讲完之后强调这一句。对面如果是紧张导致的抢答的话,这句话一出很有可能直接把对面卡的说不出话,思路混乱,这样后面的讨论也能避免一些麻烦。总之,头脑清醒是一定要保证的,如果队伍里出现比较硬的刺头或者说话长篇大论但是偏离主题的,一定要在适当的时机打断他们,把讨论的方向引导到能得出一个合理的结果的方向,用比较强硬的说话方式硬压下去也可以,像这种群面和群殴没什么两样,不用讲绅士风度,如果你自始至终不开口的话,一定会死的很惨。不过要是组员都比较配合的话,就尽量不要表现出敌意了,能帮一把的就帮一把,这样也可以更有效率地得到结果。如果队伍里有人在你之前就把组织的工作给做了,leader气场凸显你又压不住,那你也可以选择做纪录,并辅助他组织全场的讨论,在之后争取做总结陈述,这样的通过率也很高,timekeeper也可以兼做记录。总之,多说话,头脑要清醒,要时刻注意自己的目的是得出合理的结论,一定一定不要紧张。 单独问答,HR一般会问你对这个公司了解多少的问题,在面试之前要事先了解一下,面经上基本都有。其余问你的问题该怎么回答就怎么回答就好,一定要口齿清晰,不要紧张。如果是在二面或者终面的单面的时候,可以多表现出一点亲和力以及对在这个公司工作的向往,至于有没有效果呢,终面的时候一般有两个面试官,如果那个年轻一点的开始帮你说话,年长的又对你态度不错,不问你特别刻薄的问题,那就基本妥了。在居然之家终面的时候,居然之家的财务主管是个非常有亲和力的人,尤其是得到他的肯定以后,实在是让我当时因为四处碰壁拔凉拔凉的心一热,虽然最后因为Offer发放和签约时间间隔太短了决定放弃,但我真心觉得这是个好公司~辩论和即兴演讲就不说了,我第一次面试就是辩论,被自己的队友压的一句话都说不出来,真不该去人大投简历……用这两种的公司比较少,辩论还可以用无领导小组讨论的方法大概对付一下,即兴演讲就……自求多福吧…… 另外,面试之前那顿饭一定要吃,最好能带个士力架之类的东西,在等面试的时候补充点糖分。我就是海航终面没吃早饭,结果还遇到最恶心的即兴演讲,拿到题目整个脑子白了半分钟才反应过来,结果跪的妥妥的…… 面试穿着的话,正装是必须的,我穿的是个银灰色的西装,据说这是企业高层管理才会穿的衣服,在光大面试的时候被骂了一顿,但是在中信面试的时候,我在等候室和负责的HR(聊了会发现是兰州人,算是西北老乡了吧)唠嗑,他说我穿的西装在一堆黑西装里面很突出,要是他负责面试的话会给我加正面分,所以这个着装颜色还是因公司而异,比较传统的单位黑色正装可能更好,HR如果很年轻的话穿的颜色浅一些比较好,当然那种颜色浅的发亮的衣服还是别穿了,我想应该是不会有公司愿意招杀马特进去的……面试之前头发也最好弄弄,脸上弄干净是必须的,头发最好打哑光的东西定型不要有炸毛,女生化淡妆不要太浓,之前去居然之家笔试,有个女生画了个巨浓的眼影就来了,她问我问题的时候吓了我一跳,后来我也再没见过她……不少公司,尤其是需要员工抛头露面的银行之流,刷脸是非常严重的,一定要注意这一点。 最后,找工作需要一个长时间的经验积累过程,所以十分建议大家有机会投简历就要投,有机会去面试只要不冲突就去,不管是大公司小公司,在不断的求职过程中积累经验,积累信心,任何人一开始面试都会紧张慌乱,只有多经历一些这种事情才能习惯,不要担心。最后的最后,其实进入一些公司是有捷径的,大家在校招季的时候可以去找那些大公司新成立的急需用人的部门,承诺有转正机会的,进去实习,转正的机会很高,而且实习的测试难度要比正式入职低很多,我身边已经有两个同学用这种方法成功GET了我妥妥挂掉的公司的Offer,就算最后没有转正成功,一段这样的实习经历也能在之后的招聘中起到非常大的作用。然后,最靠谱的求职网站当然是咱们应届生网啦,爆那些盈利性求职中介网站几百条街,哈哈,我相信大家还能在论坛里找到更有用更适合自己的经验,在这里就不多献丑了,如果能帮上大家就好了。
分享
7
先马后看
黄泽森
东北财经大学·2022届

漫漫大学江湖录 - 爱与恨唯与工作更交织

前言 其实在18年11月有了华为,就已经宣告结束了大学校招历程,是时候写下总结了,再不写估计很多东西都忘了。 在一些程序员社区混久了,从别人的学习、求职、工作经历中越发感受到很多的正能量,也本着攒RP值的原则,向学弟学妹们,尤其和我非名校双非本科生学弟学妹们传递点正能量,因为博主也是非名校出身,而且在整个求职的过程中能够很明显地感受到名校学生那种得天独厚的优势,同样的实力,名校学生进入BAT等一线互联网企业确实要容易很多,即便技术很水,一样有华为等企业保底,而非名校的可能连简历筛选这关都过不了。 博主说这些,并不是为了打击非名校的学生,只是,这些确实是事实,既然无法改变出身,那就只能改变可控的因素,提高自己的技术实力,并放宽自己的心态,对结果看淡点,不要抱怨自己的出身,这样一路走来,你反而会发现:越努力,越幸运! offer情况 由于南京机会太少,校招前就一直想去上海驻扎,但后来因为地点和一些感情的事,一直没法留在魔都,而且又有学院坑爹的不准外地实习规定,就只能呆在南京了。 由于实习限制,而且又非常想留在魔都,可选的互联网公司少之又少,因此主要参加了携程、美团、饿了么这几家企业的校招面试,没办法因为算法不好,没刷过题,都挂了。后来,还意外地收到了网易的面试通知,据说光简历这关就刷了很多人,有点喜出望外,但也因为算法题答不好一面就挂了,不过问面试官,都说我对技术和框架玩的不错,也算安慰了,至少算法不好,技术来补。10月下旬拿到华为的offer后,就没再参加后面公司的笔试了,主要是考虑到工作地点的问题,而且感觉也没必要刷那么多面经和算法题,毕竟自己追求是真正技术的进步,在哪工作其实都一样,华为也还差强人意吧。 自学之路漫漫 在南京某双非一本就读,专业是物联网工程。 15.9 ~ 16.2 在大一的时候,大把时间都花在和谈恋爱搞暧昧、打游戏和各种无意义活动上了,大一上结束,C语言只考了67,感觉很丢人现眼,隐约意识到要提高自己的编程能力,但又不知道往什么方向学,正好下学期听说还有C++课,正好上学期快结束时发了课本,寒假时就一直在研读学习C++课本,后面又看了《c++ primer》。 16.3 ~ 16.7 到了大一下学期,听课时就觉得都不难了,好像编程还行,作业题虽然依旧是抄同届大佬的,但是至少看得懂写的啥了,期末也还不错,考了97分。转眼大一都快结束了,想想要确定一个未来工作的方向了,老这么漫无目的地瞎折腾,总不是办法。那时正好因为上了学院教授的MIT编程选修课,加了群,认识了一些当时拿到华为、携程等20W年薪工作的学长,在网上查了好几天,最终决定搞Java,原因很简单:需求量大,就业机会多,未来几年应该依然是主流。接下来,便是各种自学,先是到图书馆借了基本 Java 的书,到闲鱼买了本《Java 核心技术》两卷,入门Java,但是书一开始还是看不懂,暑假时搜了点视频,从马士兵的JavaSE 视频开始真正入门了。没办法,谁让自己当初觉悟低,错过了大半年的大好光阴,好在现在意识到,还为时不晚,每天多努力点就好啦。 16.9 ~ 17.2 大二上,学院开了Java课,不过我基本不听课,老师自己说的太没激情了,而且大部分我都自学过了。自学过程很艰难,网上找的传智播客的JavaWeb 学习视频开始有点体系的学习基础,遇到不会的还没人问,很多时候代码和视频一模一样,但就是跑不了,一直报错,想砸电脑,感觉也没学到啥东西,时常都想放弃自己,不过咬咬牙还是坚持了,毕竟自己不努力,以后还能干嘛呢,我不想被人看不起,别人高中就学计算机,大学了更厉害,我虽然学的晚,但我不觉得我会一直比他们差,终有一天会超过绝大多数的人,因为我够努力,智商不够,时间来凑,同时进一步巩固了Java基础,学习数据结构与算法,并抽空看了一遍《大话数据结构》。因为学院老师教的数据结构课实在是太恶心了,C语言说的根本听不懂,虽然看了几本Java 实现的数据结构书,还是一头雾水,很多内容不得其要领。 17.3 ~ 17.7 大二上就这么浑浑噩噩地过了,真正在技术上有质的飞跃是大二下到大三上这一年,由于参加了学校的大创,开始组队待在实验室里每天,开始翘课,这一年有了很多自由的时间,一边做个商城项目,一边看书,从Java语言,到JVM,再到多线程编程,算法,看了很多经典的书籍,获益匪浅。但学习的过程还是很曲折的,主要是实验室有着各种坑爹的规定,导师总是进屋就吐槽软件怎么还没做出来,每天看这么多书有什么用?而且学习氛围不是一般的差,当然这些都已成过去,也不想吐槽太多,期间还在追实验室和我一组的一个妹纸,不过快追到时就放假了,假期过后,一切凉凉没了感觉,所以下学期开学后一段时间极度痛苦每天。就这样,为了能安静高效地学习,我打了一年的游击战,持续性在课堂上掉线,没怎么上线过。比较庆幸的是,很早就知道了牛客网这个东西,平时也都会上去看看面经啥的,很多内推帖子,感觉该出去看看了就投了个爱奇艺实习,5月多时视频面试,答得很垃圾,原来自己还差这么多,于是决定开始坚持写技术博客,事实证明,这确实是一件有百利而无一害的事情,通过写博客,在社区上结识了很多志同道合的小伙伴和技术上精益求精的前辈,从这些素未谋面的人身上学到了很多,感受到了满满的正能量,也提升了技术认知。 17.9 18.2 另外一件对我找工作帮助很大的事情,是11月下旬拿到了百度运营产品研发部的实习offer,考虑到即使无法留下来也有个大厂实习经历了,便决定去实习,寒假一开始,就独自坐车北上,从南京到北京,买了最便宜的火车票都要五百多,北京很干,在那里嘴唇一直都是干裂的,向父亲要了一万多用于租房,即使过年也一直在北京,期间打王者认识了个重庆的女孩子,每天下班回去都和她聊天打游戏,也算在远方的一个陪伴了,不算太孤独吧,没离开过小租房,短短的一个半月,就要说再见了,因为开学,辅导员发现我不在学校了,打电话质问我在哪里并要求我立即回校,否则做退学处理,没办法,离开心爱的百度,又南下五个多小时火车,蹲的腿都麻了,想死的心都有。 18.3 ~ 18.9 接下来,便是校招了,校招高峰期虽然只有不到两个月,但真正关键的是校招前的那一两年,甚至三五年,你所付出的努力。博主在社区里看到很多默默付出,最后在校招期间爆发的人,当然也会有人悠哉了三年,一样拿到了不错的offer,只是人可幸运一时,总不至幸运一世,所以脚踏实地,才能有所作为。 校招流水账 下面按照面试的先后顺序大致记录下这次校招的经历,但不会牵涉到具体的面试问题,这个根据每个人的简历和方向肯定会有所不同。 阿里(一面挂) 阿里之于我,只有一句话可以形容:阿里虐我千万遍,我待阿里如初恋。 第一次面阿里是3月份的实习生内推,当时加了一个菜鸟技术部的内推群,无奈水平太渣,很多基础记不得了,又超级紧张,聊了不到半小时,就顺利地挂掉了简历面,不过也没有太在意,因为当时一直觉得BAT对我来说,是很遥远的事情。 被阿里打击后,我一度开始怀疑自己的能力,越想越觉得找份好工作不容易,郁闷了两天后,索性接下来的面试不再做任何准备(实际上,也没有时间准备,因为项目赶的太紧),放空身心,一切随缘,大不了最后去小公司,反而是这种心态,让我顺利通过了后面公司的面试。 华为(二面挂) 在拿到携程实习 offer 后参加的华为春招,心态很轻松,态度很轻蔑,二面很顺利的挂了。不过表现还是不错,参加华为秋招还是优招名额。 携程(offer) 很早就来南京开了宣讲会,和一个群里的粉丝同学一起去的,宣讲会最后有个小笔试题,做了个算法交了上去,第二天就收到了面试通知,克日去面试,听他说就十个研发面试名额,而且就只有我一个是本科生,其实那个笔试算法题我也没做对,只是看了我的简历有百度经验还有丰富的项目经验,就给了我个机会面试了,问的也都不难,答得也中规中矩吧,回去等消息了,这一等就是近三个月,三月的宣讲会,五月多来个二面,幸好电话面试,问了都是算法,正好还都是我会的,就轻轻松松的过了,这时候正好玩吃鸡时遇到了个老乡,就谈上了恋爱,瞬间幸福感爆棚,之后几乎就一直打游戏了,没怎么学习了,因为听说携程实习生留用率很高,不想再努力了,可后来事实证明我错了,一切都重新翻牌了。 暑假在携程实习了一个月后,老板通知我不会留用,一时间很生气无奈又痛苦,心情很差,那段时间也没心没肺,和女友经常吵架,最后把她气跑了,之后在上海疯狂找工作,无奈也都是要求实习的,没法继续留在魔都的,最后还是忍痛割爱,离开了魔都,2018.8.31失去了工作与女友,一无所有的又回到了南京 18.9 ~ 18.11 回到了南京,心情很复杂,一个暑假,一直在实习,根本没想过会要参加秋招,很多东西都没准备,算法一点没刷过。 没办法,想去好点的公司,还是要付出才行,从失恋中调整了好久,继续征战各种笔试,虽然也是意料之中的做五关挂六笔。想想应该和互联网公司没啥关系了再。 顺丰(offer) 偶然发现笔试过了一个,通知了面试,就去一个大酒店现场面试,一面技术,二面HR,直接过了,没啥难的东西。 美团(一面挂) 框架技术玩的不错,算法太差,面试官评价,好的,告辞了。 百词斩(笔试过,没参加面试) 由于当时参加上海携程面试,没打开电脑面试,遂挂。 携程(挂) 秋招又来了携程面试,真是又爱又恨,可是遇到额面试官太恶心了,几乎没听我说话,莫名其妙挂了,从此携程一生黑,不会真香!!! 中兴(offer) 中兴经历过那个事件后开始在我们学校大规模招人,相对来说,中兴的offer拿的是最容易的,官网投了简历,就宣布去面试了,在ZTE总部,问了很多,只是都无关技术,很顺利地通过了一面,同样是第二天收到的二面短信,同样二对一面试,完全没问技术,各种HR综合问题,大概二十多分钟,面试结束,没几天收到offer短信,薪资太低,直接拒了。 华为(offer) 一面很忐忑的过了,面试官一直和我谈框架与业务的问题,没咋答好觉得,不过还是有了二面 二面高冷大叔,不过我也很平和了,舒畅说完大学自学历程,提到翘课很多,最后问他评价,自学能力强,不过不听话不去好好上课可不太好哦哈哈哈,十天后收到 offer 短信,谢天谢地,在南京,批发价也不低了,很满意了,就这样吧,累了。最后三方也给了我的为为。 一些感悟 从3月份的实习生招聘开始,到现在,一路跌跌撞撞,总算有了着落,总结下其中切身体会到的一些感悟。 基础很重要 这个相信大家都深有体会,特别是算法,我最有体会了哈哈哈,没刷过题,一切靠 Java 技术。也许你的 Java够好就可以不需要考你的算法了。 项目要深入 做项目不能浅尝辄止,这个参加过面试的人应该都会有所体会,很多面试官会挖坑,不理解透彻你就是去搞笑的。 心态很重更要 跟高考一样,面试中心态不好,会很影响临场的发挥。 细节决定成败 从基础到项目,这个都会有所体现。 坚持写博客 面试到现在,很多面试官看了我的博客,写博客真的是一件有百利而无一害的事情。 凡事要讲究缘分 有些时候,有些事,确实要看缘分,所以把心放宽些,不要刻意放大一些痛苦。无论是工作还是爱情。 付出总会有所收获,问题的关键在于你是否坚持的足够久 认识的一些付出了很多努力的小伙伴,虽然也是一路磕磕绊绊,但最终都有了比较好的结果。 最后,希望这篇大学记录能够给那些像我一样的双非学渣们一些盼头。 如果有问题想咨询的话,知无不言 附上博客地址就够了,联系方式都在上面 博客地址(www.shishusheng.com)
分享
6
先马后看
狮子座🦁️
上海师范大学·2022届

写给未来准备秋招的学弟学妹(图像算法简单校招经验)

楼主应聘的是 计算机视觉岗位,从年初的迷茫到现在也收获了一些offer。我也分享下找工作的一些经验,算是还愿 + 回馈啦。 CV算法岗主要重视的是 : 算法 + 项目 + 深度学习基础 + (可能需要较强的C++底子 以及 python) 算法部分: 1,强推看 Sedgewick 橙色那本《算法》,简单实用,里面知识基本够用了。重点看查找与排序等底层数据结构实现。图和字符串章节看懂。最好用C++实现一遍。(算法导论真是呵呵了,枯燥晦涩,个人境界还没到) 2,leetcode 前300 - 500。对于数据库部分题目可以不刷。基本刷2-3遍。可以先按照分类刷,容易总结一些编程规律。 3,剑指offer刷透,利用牛客网平台,写c++版本。 面试难度:在线运行编程面试 > 手撕代码 > 笔试。 一些经验:作为工程师,编程部分不过,基本就gg了。但是考虑到公司考核时间成本,大多数算法题不可能又臭又长,都是先有思路,然后写个短程序。对于图部分的考核多数在面试口述,楼主只遇到过2次让写的。而且除了BAT,多数公司的题库都不大(有的可以说是极端小 比如 海康 英伟达),可以多结合面经倾向性准备。 基本考核范围就是leetcode + 剑指offer。 《算法》主要用来应付面试,如果公司要求高,DP部分应该一定会考察下。 深度学习部分: 基本上深度花书的前半部分可以涵盖,CV的也从来没有问过RNN哈。 机器学习看《统计学习方法》第二版。 一些经验:机器学习问的基本概念李航那本都包括了,其他太深的也不用多看了,而且被问到机器学习的频率可以说相对低一些。如果时间不充裕,优先准备深度学习基础知识。多数面试官会结合项目问深度学习知识点(比如说分类不平衡你怎么处理的,之类),当然也有一些直接盯着知识点问的。 C++ / python 部分: 看下《C++ primer》,其实如果对c++有一定的实践基础的话,看起来蛮快的。再在github上搜一下,c++面试的常见问题就行了。 python 相对简单,但如果要深入准备的话,看下《流畅的python》。(这个有时间再看) 一些经验:有些偏底层的算法工程师对C++还是有一些要求的。楼主有时候也会被问蒙了,还是要多准备下,重点关注下C++类的部分以及STL部分。python感觉易学不易精,但是找工作感觉也不用精通。楼主只被问到过 垃圾回收 以及 装饰器部分。 项目部分: 面试官时间都比较紧张,简历可以多写几个项目,被问到就详细说一下。如果让你自我介绍,我一般就讲两个拿得出手的项目。一个是实验室项目(paper项目),一个实习项目。这两个项目要重点准备下,包括可能问到的问题,相关论文,以及手写 pipline 和 loss function。 CV岗一般都要对自己的一个研究领域有一定深入了解。怎么算深入了解呢?我感觉是读过十几篇或者几十篇相关领域的文章,以及有一定的实践能力,最不济也要跑通过相关代码,知道常用数据集以及不同算法在数据集上的表现。再追下最新的顶会。 还有可能让你手撕下图像相关的代码,比如C++实现下 IOU,中值滤波,卷积之类的。 关于实习: 顶会可遇不可求。有了顶会面试不差基本可以冲SSP了。但是我们毕竟是面一个算法工程师,而不是研究员,我周围拿算法工程师的感觉也没有几个有顶会的。面试这么久,我感觉公司更加重视的是工程能力和项目相关的基础知识能力,当然有了顶会就飞升了。 但是,实习基本算是必选项目,没有顶会必须去大厂实习,要么秋招会偏难。。。 有点诡异的是,有些公司,辛辛苦苦实习转正很容易拿到白菜价,反而不如校招进来的。还有些公司,拖到最后,不给HC。反而由于实习,影响甚至错过了秋招。 根据我的经验,实习转正评级可能更加重视:代码实现能力,平时和主管的关系,以及 PPT 和演讲答辩能力。 所以,暑期实习比较精贵,最好找转正率高、hc多、加班不严重的单位,好有时间准备秋招,骑驴找马。实习前一定要想学长打听清楚。 关于投简历: 提前批绝对影响校招。短短1-2个月,一个人很难有本质的提升,而公司招人是有成本的。如果提前批挂了,很有可能这家公司不再给秋招机会。即使给最后给秋招机会,在公司的面试记录里面也有留底,即使面试过了也有可能影响薪资的定级。所以提前批也要好好准备,最好别随便用好厂的提前批练手。八月中后期可能是提前批比较黄金的时间段。 找实习的时候,可能相对容易些,拿到挺多offer。拒实习offer一定要提前且客气,别影响公司的正常人员流动。如果拖到最后才说不去,秋招这家公司极端可能会把你拉黑名单,甚至公司内部招你的这个组,会对你的学校有偏见(当然针对非TOP X 学校) 以上都是我的一些个人经验,当然楼主也没有拿到BAT的offer,最后去头条了,相对片面一点,非常欢迎指摘。 有些其他宝贵经验也希望留言下。
分享
6
先马后看
AnnaLee

数据方向学渣的春招总结

1.前言: 春节后一直混迹牛客,感谢牛客提供的各种资料和面经,现在来回馈一波学渣的春招经验,希望可以给一些“暂时不乐观”的数据挖掘方向同仁一些参考。 2.自我介绍: 本科阶段:本硕都就读于GDUT,虽然是双非但是确为母校自豪,嘻嘻~~。本科一直是java web方向,大二的时候就去公司实习了,在大三末虽然可以找到还不错的工作,但是因为太浮躁,所以就选择读研,希望可以找到自己更为热爱的东西。 硕士阶段:因为导师的方向时云计算安全,所以在完成老师的任务后就转数据挖掘/分析方向了,这一转终于找到自己热爱的方向了,而不是本科阶段的不冷不热,学了有大半年然后就开始这段时间的春招找实习了,同样这也为后面惨痛的面试经历买下伏笔。 3.面临的形势: 做数据挖掘或者说机器学习这一块的公司很少,基本都是一些大厂,而且hc相比较开发少了很多;一般门槛就是硕士,很多公司要求985或海外phd也无可厚非;还有硕士阶段研究方向很多人都是数据挖掘/机器学习,所以竞争真的很激烈。 4.印象较深的面试经历 阿里:内推的是数据挖掘方向。阿里这一块方向只面试3轮,跪在二面上了,一面问的是本科基础知识,二面上来就问research的东西,有没有相关的论文,因为研一做的是安全,所以面试官知道这一块没有研究成果后就说不太对口,然后给了一些建议,可以考虑做情感分析或者因子分析,这样比较适合阿里。虽然跪了,但是面试官很nice,给的建议也确实有很大帮助。 腾讯:内推简历挂掉,正式笔试后给了面试机会,岗位是基础研究。一面面试官很nice,问的问题也都答了出来,问了一些数据挖掘比赛经历,然后回来等一直都是初面中,所以也是挂掉。基础研究的门槛确实比较高,所以如果没有好的学术成果建议慎投。 去哪儿:投的是开发岗位。一面问了1小时,纯java,基本都是jvm的知识,中间写了3次代码,使我意识到java的基础很重要。二面和hr面也很nice,谈了一些实习的事情,然后hr给了offer,而且说看看能不能调到数据分析的岗位,虽然不知道结果怎么样,但是还是很感谢那位hr。 还有一些公司门槛确实高,虽然笔试做的不错或者说显示笔试通过,但是依然没有面试机会,所以确实在数据/算法岗位上,名校 or paper or 比赛名次是最基本的通行证。不过如果真的喜欢这个方向,很多专门做数据挖掘的中型公司就没那么难进。 5.一些感受 (1)如果想做数据挖掘方向,最好在研究生阶段有相应的学术成果,比赛较好的名次也可以加分,如果这2样都没有的话确实难度很大。但是如果想做开发方向,机会还是很多,所以希望跟我类似情况的同仁们在做选择的时候要确认自己热爱的方向。 (2)机器学习/数据挖掘/数据分析是现在主流的区分方向,机器学习偏算法和数学,数据挖掘偏向于特征工程,数据分析偏统计学,当然这几个最基本的就是要基于业务理解。我现在重点放在数据分析上,因为这一块最接近实际业务,而且也挺有意思的,所以如果喜欢这类方向,可以根据自己的特点去选择相应的岗位投递。不过这一块的hc确实很少,不少公司都只是个位数==。 (3)在没有绝对的实力保障的时候,运气和坚持都很重要,很多时候坚持到最后一定可以找到自己喜欢的岗位,千万不要退缩,毕竟后面还有很多路要走。 (4)马云经常会说自己年轻的时候找工作各种被拒,所以我感觉现在暂时的挫折不是坏事,使得一个人能够快速成长的方式就是多遇到一些挫折,回头看看,很感谢这些所带来成长。自己现在实力虽然不够,但是还有信心,而且依然乐观,何况还很年轻,我感觉这些都是最大的本钱。 6.一些资料 基础知识整理:https://pan.baidu.com/s/1c16wghE 自己的blog;http://blog.csdn.net/cloud_xiaobai 基础知识整理还有一些没完善,但是感觉已经涵盖不少通用的知识了。blog里就是把机器学习基本算法做了笔记,后面会继续发帖。希望有做情感分析或数据挖掘比赛这一块研究的童鞋可以多多交流。
分享
16
先马后看
Bella🦁️
上海外国语大学·2022届

8大信号,你面试有戏了!

整个面试流程,最让人紧张忐忑的,不是面试进行中,而是每次面试结束的一句“回去等通知吧”。在这段“不定期”等通知的日子里,来个推销电话都以为是录取通知,确实非常煎熬。想要知道在面试中,面试官会不会释放一些信号,告诉我们是否有戏呢?这篇文章将会告诉大家一些面试中的小信号,只要你细心观察,总会发现蛛丝马迹!欢迎将你们的面试表现,对号入座✔ 一从面试官的问题上判断 1面试官主动询问你薪资问题 在冗长的面试后,如果面试官主动跟你谈薪资,比如询问你的期望薪资或是上份工作的薪资。那么恭喜你,你向成功迈进了一步!面试官主动询问你的期望薪资,是想确认一下是否在部门预算内,且会与其他求职者开出的期望薪资进行比对,做出最优选择。 2面试官主动询问你何时到岗 如果面试中,面试官开始跟你确认入职时间,主动询问“你什么时候能入职”,或是“你现在是否还在职”这类的问题。那就是已经在心里盘算目前的运营情况和之后都入职安排事项了,有非常大的概率要录取你! 3面试官主动询问你有几个offer 有时候,面试官会问“你现在手上已经有几个offer了”,或者是“你还面试了别的公司吗”这类问题。这很可能说明,他想录取你,但是可能公司还需要时间走流程,或者只是通过了初试还要安排复试等,不想在这段时间内让其他公司把你抢走。 二从面试官的表现上判断 1面试官主动加你微信 面试之后,有些面试官会主动加你的微信,这是一个很好的信号!如果面试官对你不满意,他主动加你的微信不是给自己找麻烦吗?还要找理由拒绝你。所以,如果一个面试官主动加了你的微信,但是到了约定的最后期限都没有给你回复。你不妨主动发个消息询问一下,记得语言要礼貌得体,也可以加深对方对你的印象。 2面试聊的时间很长 一般的,面试时长在30分钟左右。曾经听过一个猎头的说法,面试时间有一个“40分钟定律”。所谓“40分钟定律”就是说,面试和你聊天的时间超过40分钟的人,才是值得考虑的求职者。一般的,面试官觉得不合适的求职者,他们的面试时间差不多会20分钟左右;而一旦你的面试时间超过了40分钟,说明你们的面试过程聊得很融洽,至少面试官有了解你的欲望。 3面试官愿意花大量时间回答你的问题 如果你在面试中提出了对公司、岗位等的问题,而面试官也非常耐心、细致、深入地花大量时间回答你的问题,那么你的面试就很有戏!这里有个值得注意的地方,是耐心、细致、深入、花了大量时间的,甚至会怕你不满意或没理解而询问你的看法。这个要区别于基于职业素养的,简单的回答。 4面试官主动 “推销”公司岗位 如果面试官在面试中化身推销员,主动热情地给你介绍公司、岗位、团队…告诉你这个公司的福利有多好,那他多半是看中你了! 5面试官面带满意,频频点头 如果在面试中,面试官对你的回答频频点头,并面带满意的微笑,而不是尴尬而不失礼貌的微笑,很可能表示他在认真听你的回答,并对你的回答相当满意。 这些信号只是给大家一个很可能被录取的小讯息,在漫长的等待过程中也算是一颗小小的定心丸。 当然,也有符合了这些信号却依旧没有被录取的情况,原因的可能性非常多,如果大家真的非常在意面试结果的话,不妨在面试后,留下面试官联系方式,微信或电话都可以。过三天左右,在工作时间致电询问一下结果,不要怕丢人,努力争取机会,不丢人! 最后祝大家都能得到心仪的offer!
分享
评论
先马后看
林洁儿ashely
安徽财经大学·2022届

被挂了10次的菜鸡春招之旅

这篇面经不算是面经。因为它不会给你带来太多学习上的好处,而应该算是对像我这样的菜鸡的一种激励。(其实LZ最近也撑不住了) LZ春招投了12家公司。被拒了10次。最终还是收到腾讯offer。但是过程很是心塞。(咳咳,请开始你的表演……) CVTE:二面挂 话不多说,直接上面试过程: 一面: 1.先问了一些设计模式的问题: (1)问了自己了解什么设计模式;Observer模式的思想,策略模式的思想,两者区别,优缺点,适用情况 2.C++方面: (1)虚函数机制,画出并解释虚函数表运行机制 (2)类内存计算(sizeof),问的比较详细 (3)字节对齐 (4)struct 和类的区别(不只是默认访问权限) (5)C中的struct 和C++的 struct 的区别 (7)模板编程的问题 (8)lamaba表达式也问到了,不深,只是用法 (9)单例模式+多线程安全(这个问的比较深,手写代码,而且要自己解释为什么这么做,怎么优化,加锁,为什么要加这里?某些部分怎么优       化) (10)STL也问了一些问题:比如vecotr 和list 的区别,适用情况,vector的扩容机制,问到了源码层次。 (11)自己都知道C++11什么新特性,然后针对你所说的新特性问了一些问题。 (12)智能指针,自己都知道哪些,区别,适用情况,关于shared_ptr,问的比较深,需要自己思考。本菜鸡答的马马虎虎。 (13)针对智能指针,问了一些拷贝时的问题,如:如果让你自己设计shared_ptr,你会怎么做,怎么考虑,为什么这么考虑 3.关于自己的计划: (1)有没有自己的博客,(本菜鸡用的csdn,后来用worldpress搭了个网站,然后在github搭过,),然后想问一些服务器的问题,不会,就换了话题。 (2)自己想从事什么工作。 .....还有一些杂七杂八的东西,都是针对上面这两条问的。 二面: 1.因为对DX比较了解, 然后就开始问DX(面试我的是以为C++后台的,are you kidding me ?) 2.为什么要学DX,windows下的渲染, 3.一些检测碰撞的算法 4.DX是怎么把纹理弄到GameObject上的。 5.GDI 和DX区别,优缺点 以上答的自我感觉还可以,还有一些问题记不清楚了。 6.算法题: 现在有n个int数组,每个数组都存很多数(很多哟),n是不确定的,(意思是很多),然后求这n个数组的交集元素。 我用的map值映射方式,最后找map中等于n的数的key就是交集元素之一 然后他问我怎么优化,无从下手,后来问了自己的一些人生规划,完。 挂在二面的反思: 1.归根结底就是那个算法,做的不好,而且我很少手写代码,而且很紧张,代码写的很菜。 2.理念有些不同吧。 完美内推:被默挂 完美几个完美内推的小伙伴一起。两道题AC。然后找HR查了过了笔试。但是没下文了。其他人都收到了面试通知,只有本菜鸡在角落里瑟瑟发抖。 完美网申:被默挂 完美网申的笔试题很简单,感觉做的很好,然后,从4.06号开始状态一直未面试待安排。到现在都没动静。估计被默挂了。 360: 笔试挂 真的没脾气。被笔试题碾压。挂的不冤。自己还是太菜。 网易:笔试挂 笔试觉得做的还可以,然而,估计比我厉害的人太多了。被巨巨们淹没了。 网易游戏雷火:    笔试挂 笔试觉得做的很可以。小伙伴们做的都差不多,然而,我真的没收到面试通知,小伙伴们收到了。又在角落里***发抖。 阿里菜鸟:一面挂 没错,真的挂在了一面上。 主要问题如下: (1)项目,balaba了几分钟 (2)MySQL的优化。(LZ数据库很菜,算是业余学习) (3)AVL树和红黑树(LZ当初不会红黑树) (4)会其他语言不?(LZ主C++,会一点点Java,JS,C#)然而不敢说,很爽快的回答不会。 还有一些问题记不住了,主要的还是上面这些。然后被挂了。 (LZ刚考试玩体育考试,就接到电话,毫无防备) 原因:菜,基础不好。 然后就狂补数据结构,过程略…… 好未来:笔试挂 笔试很简单,做的觉得很nice,然后收到了被拒的邮件,说“很遗憾……”。估计是自己太菜了,加上好未来招的人差不多了。 巨人:应该算是笔试挂 做了笔试,觉得还可以,但是一直没消息,估计已经gg了。 滴滴:已过二面,让去北京三面(收到鹅厂offer,已经不打算去了) 一面: (1)自我介绍 (2)聊项目 (3)有100W个数字存放在一个文件中,然后让你随机生成100个数字不要与文件中的数字重复。(关键代码实现)典型的大文件处理 (4)10匹马,每当一匹马准备好,就告诉裁判,当10匹马都准备好,裁判发令开始赛跑。(典型的Observer模式)(关键代码实现) 一面过的主要原因,那个大文件处理和面试官聊了很久,给了几种解决方案。聊的很嗨 二面: (1)聊项目 (2)针对一面那个大数据处理进行了扩展,如果是超级多的数据,内存放不下,而且随机生成的数也不是100个,而是很多,怎么办。 然后就balala。项目和大数据处理这两道题聊的很嗨。 整个面试过程2hours多。 过的原因:聊的很嗨。 今日投条: 一面挂 上午面了两个多小时的滴滴,下午四点今日头条,然后面试官神秘失踪,接近五点开始面。 (1)自我介绍 (2)单链表的反转 (3)两个有序数组,a[],b[],大小分别为m,n,求第k 大的数 (4)在一组数里面找到一个数,比它左右相邻的数都要大。 然后gg。 挂的原因:LZ最近身体很差,上午面完滴滴,已经接近了身体极限,下午一直等。已经没有精力来跟面试官聊天了。最主要的是我觉得他不太尊重我。在面试的过程中他一共说了五次“你大声点好吗?”。LZ男的,说话声音在他的要求下,一直很大声,已经吵到了实验室其他人了。面试官先生,您就不能把自己电脑的声音开大点?后面他问的问题我基本上已经不鸟了。然后回寝室休息了。 鹅厂:offer get。 西安站。 一面: (1)聊项目。问的很详细,聊了很长时间。 (2)虚函数机制。把他想接着问的直接堵死,全部balaba了一遍 (3)智能指针。直接把后面的问题堵死。全部balabala了一遍 (4)堆和区别,这个楼主中间卡壳了一下,然后在思考如何答的直接堵死后面的问题,然后面试官看我没说下去,已经我不会。然后。。。。 (5)数据结构怎么样?还可以。怎么体现?AVL和红黑树的区别和原理实现balabala 了一遍,直接将后面可能问到的问题直接堵死。 (6)哈夫曼树知道不?知道,balala 。哈夫曼树,哈夫曼编码。哈夫曼译码。直接堵死后面问题。 (7)C++的容器方面。自己把自己知道全部balala了一遍。主要从底层实现、迭代器失效、查找或插入时间复杂度、等方面详述 (8)哈希表。简单的一批。从建表到解决哈希冲突LZ把自己知道的全部balala了一遍。然后说了一些关于哈希处理的弊端。 (9)对操作系统的理解。balala (10)操作系统的模块你都会哪些?处理器;进程同步、死锁、互斥;存储管理;文件管理;IO管理。LZ把主要的全都balala 了一遍。 (像处理器调度算法、进程同步方式、银行家算法、分段、分页、段页、块表原理、IO控制的4种方式、IO缓冲技术、磁盘读取原理、调度算法、文件目录检索原理。全都balaba了一遍,面试官一直看着我:继续你的表演,不要停.....) (11)还问了我C++的知识都从哪里学的。C++primer plus 看了一遍,C++ primer 看了两遍。 EffectiveC++。等。 (12)对了,还问了有没有值得吹逼的事情。自己说的是从大一学完C,直接参与项目,对一个完全未知的领域进行学习。熬了很多的夜。但是最终坚持了下来。做完了自己的任务。(其实我觉得更值得我吹的事情应该是大三上学期,连续在电脑前编码22个小时左右,从下午2点左右,到中午11点左右,通宵撸代码,。但是是为了MFC的大作业答辩。说出来不好听呀,熬完了之后得了角膜炎(QAQ)) 然后回去等消息 二面: 全程聊天。 (1)自我介绍 (2)聊天(真的是在聊天) (3)进程同步方式你都知道哪些。(管道、共享内存、SOCKET、信号量和PV操作、互斥量)全部详细的balabala了一遍,包括每个的详细原理 ,直接将后续问题堵死 (4)TCP三次握手和四次挥手。LZ听到这个问题,心里突然踏实了很多。然后就开始了描述详细过程,包括为什么要三次和四次。和全部状态 以及为什么。直接将可能问到的后续问题堵死。 (5)网络字节序。主要是想问大端寻址和小端寻址的过程。balabala。觉得C++ 共用体没用的同学可以去看一下。我以前也觉得共用体很没用 (6)堆和栈的区别。应该是因为一面的时候被误认为不会。然后就balabala了一遍。什么向下寻址向上寻址等等。LZ把知道的都说了一遍。 (7)链表反转(楼主没写出来,面试恐惧症发作······脑子老是想着如果写不出来就挂了,一直想,一直想然后思维一直不向题上靠。什么都想不起 来了) 然后面试官和我聊了会,平复下了心情,聊了一些算法上的东西。看我心情平复了很多就接着写代码 (8)手写冒泡(没错,就是冒泡) (9)单纯反转,hello world! :!!dlrow olleh 剑指offer原题。然后问,如果不用栈怎么做。指针找空格,后往前反转。 LZ在ACM待过一年半,觉得面试官这问题真的让我很无语。 二面完。过的原因:估计一面对自己的评价比较好,二面没 怎么问问题。单链表反转是个大问题。 hr面: 聊家常 问自己在学校学习的问题。 问简历上的软件著作权是什么情况。(LZ参与过两个项目。项目申请了一些专利和软件著作权) 问自己科技活动先进个人怎么得的(因为简历上只写了一两个科技和ACM竞赛奖项,然后就解释说,学校的ACM和学院的ACM以及其他学院的ACM奖项没往上面写。) 问自己得过奖学金没。LZ菜鸡,只有院级的。 最后重磅消息: 您还有一场加面。远程。想哭。 后来还是如愿拿到了鹅厂offer。 有人问过自己的学习,只能给推荐些数据(LZC++客户端) C++:C++primer plus、C++primer、Effective C++、对象模型、STL源码解析 操作系统:操作系统概论、现代计算机操作系统(这本书是讲操作系统的)、深入理解计算机操作系统(这本书是讲程序在操作系统中处理的) 计算机网络:计算机网络第六版谢仁希(有人吐槽这本书菜,但是楼主入门是这本书)、tcp/ip详解卷1 计算机图形学:计算机图形学、DX9龙书 DX11龙书(楼主学的很菜,只能写一点物体和简单场景) 数据结构:如果觉得自己数据结构差,就不要看书了,看网上博客,哪方面弱补哪方面。尤其是树方面。 算法:基本要掌握:常用排序算法、复杂度计算、查找、DFS、BFS、记忆化搜索、最短路算法、DP、还有字符串相关的(如:KMP、BM等)。 数据库:楼主数据库很菜,没办法给建议 编译原理:楼主是学的《编译原理及实现》,自己写过语法分析和词法分析。最主要的DFA 和NFA一定要清楚。 设计模式:楼主开始看大大话设计模式,然后看了设计模式解析第二版。(GOF是本好书,可以买来装X)每个设计模式基本做了小demo。然后现在忘备份,弄丢了,好心痛。 PS(其实上面介绍的个别东西楼上也没看过。) 楼主一直觉得自己是个菜鸡。对高端的知识没有什么学习,能被其他公司看的上的应该只有自己的基础了。所以要一直努力努力下去!!~~加油,各位,希望各位大佬都能拿到满意的offer。没拿到offer的小伙伴不要放弃。 PS(不要熬夜。自己就是大二的时候经常睡实验室,大三经常通宵。然后现在自己的身体很差。尤其最近,早起头疼,晚上睡觉前也头疼,无论吃不吃东西都会想吐(不是怀孕,LZ boy一枚))。 五一过后,自己就开始准备秋招了。虽然拿了offer。但是万一没留下来呢? 巨巨:咦,这里有菜鸡在装大佬? “”去吧。皮卡丘~~~10W伏特” 滋滋滋,“”啊啊啊” LZ卒。
分享
7
先马后看
小鹿乱撞
澳门科技大学·2022届

写给大家的一些成长建议,共勉

看到很多新同学苦于没有成长,找不到好工作,我深有感触,希望可以和大家一起成长,一起进步,先分享一些自己的总结。 个人介绍 本人it研究生毕业,工作6年,业界称为码农,外界称为程序员。 作为一名步入职场6年的it老同学,来发表一下总结,全部是个人的经历和想法,不包含任何人物映射。 本科毕业后,当时也不知道怎么想的就去考验了,结果没考上心仪的,调剂了一个,读了3年研究生,结果。。。和本科一样的渡过,纯粹是为了拿个证书,对不起父母、对不起年轻的自己啊! IT行业总结 工作了6年后发现,其实学校里的课程都是比较滞后和比较浅的,可以理解为师傅领进门的过程,在这个过程中,兴趣、悟性、坚持会起很大的作用。一定要坚持、一定要热爱,才会有深层次的发展。我们it这个行业虽说都可以来学,但是想学的深入,其实还是仁者见仁智者见智的,这个行业有几个比较显著的特征: 1. 技术范围广:相信这一点大家不会质疑,有前端、客户端、后端、算法、数据分析、人工智能、运维等等,前端、客户端和后端其实还可以细分到很多领域,多到你手脚并用都数不过来; 2. 技术纵向深:每一个技术栈的深度又是何其的深,一个普通资质的人(相信大部分都一样,属于正常人)一般能学到50%的深度,就已经很不错了,同时时间有限,你没有那么多的时间去学习很多的技术栈,而且钻研的很深(高手大牛除外,厉害的人也不在少数); 3. 技术革新快:这几年是不是人工智能、区块链比较火?每隔一段时间就会出来一波新技术,其实新技术的产生并不是无中生有的,都是为了推进某个方向的业务发展而产生的,就像汽车的发明是为了解决马跑不快、驼的货物不够多是一个道理,所以技术革新快了,我们就要不停的去学习,技术都是想通的,想去了解、去掌握使用方法(20%的深度)其实并不难; 成长各阶段梳理 说了这三点后,是不是有的同学都开始畏惧了?其实只要找对方法就不难,但是如何找对方法,这又是另一个问题了,我们从三个阶段再来剖析一下: 初入大学:大一~大二 在这个阶段,其实并不要焦虑太多,就跟着老师去学,去感受这个行业,学好一个基本的语言,学好数据结构,学好网络即可,这个阶段最重要的是: * 培养兴趣 * 培养自学能力 这两点在你今后的成长过程中非常重要,如果这个阶段不培养起来,后面会面临很多的其他困惑,再来培养这两点就很难了,我当时也是不知道的,吃了很多亏,整个成长过程苦不堪言。 即将离校:大三~大四 一般大三的时候是可以选择在暑假去实习的,可以找一些小公司(如果你比较厉害了,可以去试试大公司)去锻炼一下自己,一方面可以了解到企业是怎么工作的,另一方面可以感受一下在工作的过程中应该如何不断学习和成长,毕竟要一边上班一边学习,你会感觉到时间是如此的宝贵,一周一周如白驹过隙啊!在找实习的过程中,千万不要因为待遇而做选择,只要能解决住房,解决温饱即可,待遇一定不是这个阶段所要考虑的,你需要考虑的是:行业方向!因为行业方向决定了你所能接触到的知识应用体系,例如现在做的比较突出的几个行业:电商、出行、区块链、安防、云,随便挑一家满意的,因为这个阶段,你去哪都是学习的,都能学习到很多知识。 而大四的时候,就是你人生中最重要的抉择的时候了,可以类比高考,铆足了劲,冲刺一个最好的公司,因为应届生的第一份工作非常非常的重要,就像一张白纸开始画的第一笔,画的好坏对后面的作图有很大的影响,而这个准备周期不能像准备期末考试那样就一个月,而需要系统的梳理自己的知识体系,弥补不足。不要低估了面试官,不要觉得可以拿网上的面试宝典来糊弄过关,在回答问题时,是真正体会和理解了,还是在背诵面经,一听就知道了。所以我建议还是提前半年准备一下自己期望的领域,一步步充分准备起来,尽量在秋招时找到心仪的工作,否则春招机会比较少,而你的心态也会发生变化。 快速成长期:毕业1~3年 这时候你已经加入到一家心仪的公司了,这个时候你会发现你的成长会特别快,每天都会学习到新的知识,每天都会有变化,这是正常的,这也印证了前面说的:it行业想入门还是很容易的,但是想更深入的成长,还是需要付诸更多的努力的。这个阶段你会发现,学校里学习的东西和工作上用到的很少有一样的,但是如果学校里学的扎实,你在工作中会学的很快,一方面是前面说到的兴趣和学习能力,另一方面更重要的是it行业很多知识是相同的。这里同样有一个忠告:踏踏实实做事,认认真真总结,还是不要在意待遇!多注意每半年的变化,如果没有变化,就认真反思,多找有经验的人沟通; 慢速成长期:毕业4~6年 经过前面的3年的快速成长,你已经熟练掌握了各项技能,对整体架构设计也有些似懂非懂的理解,成长快的同学可能已经在不大不小的公司带了几个应届生了,成长慢一点的同学应该也已经是团队的主要贡献者了,在接下来的3年里,你会发现,在技术上的成长会越来越慢,更多的是架构设计上、业务理解上的成长,这个阶段同样不能丢掉你的老本行:技术要扎实,要硬!同时要多注意自己的软实力,软实力的定义很多,简单来说就是保证你在公司里怎么去沟通、怎么去成事、怎么去争取到更多的资源的非技术能力。 不要觉得软实力虚无缥缈,可能没那么重要(曾经我也是这么觉得的,曾经我是个绝对的唯技术论者),它是决定你能走多远,能跳多高的直接因素,你可以从每个公司的晋升体系里看到它的引子,每个阶段的技术要求里就能感受到它在其中的重要程度越来越高。 正是由于它这么重要,所以它的沉淀也是需要时间的,相比较技术的成长,软实力的成长是很慢的,你去搭一套RocketMQ集群,阅读调试一下源码,很快就会有立竿见影的效果,你可以产出好几篇还不错的分享文章,但是软实力没有那么好提高,而且很多时候会受限于性格、见识、格局而久久看不到成长,关于这点,我也在摸索成长,要经常反思和总结,要相信时间的力量,时间会证明一切。 最后的总结 我在成长过程中也是一路摸爬滚打,没有任何人的指点,所以走的很艰难。例如在大三的时候,如果有个学长可以阶段性的指点一二,如果有已经工作的师兄可以告诉我工作上需要什么,我应该前面的三年可以缩短一半;后来去面试bat,失败了有十来次,每次也不知道具体是什么原因,都是靠面试回忆去猜测可能是哪方面的问题,回来学习和完善,当你真正去招人的是,你就会知道面试记录是多么重要,面试官可以从面试记录里看到你的成长,总是去面试,总是没有成长,就会被定义为缺乏潜力。 前段时间传出来说阿里已经不招30岁以上的P7,35岁以上的P8了,虽然后面辟谣了,但是无风不起浪,it这个行业正在向年轻化发展,毕竟每年那么多人毕业,那么多人走进it圈子。以前不相信程序员是吃青春饭的,渐渐的发现,我在招人的时候也会看年龄看潜力,我会设身处地的想:等我35岁的时候,别人会怎么看我?所以趁着自己还年轻,努力拼一下,成长上去,后面的发展会顺畅很多。
分享
评论
先马后看
一叶障目
广东大学·2022届

你得伸手,苹果才是你的

截止到今天中午,正式结束秋招。写这篇帖子,主要是给下一届学弟学妹或者准备参加春招的同学一个参考,以及给自己的秋招辛酸史一个交代。 按照时间顺序: 百度——测开 一面: 1、基本的Linux指令 2、快排 时间复杂度和空间复杂度 3、在项目中用到了什么排序的算法 4、有100亿个URL,从里面找出重复的URL 5、描述HashMap 6、HashCode怎么计算(考虑哪些东西) 7、HashCode的作用(映射) 8、内存泄漏 9、信息熵是什么 有什么意义 11、判断一个树的左右子树是否对称 12、目前觉得比较有成就感的事情 13、描述一下JAVA的反射机制 为什么JAVA能实现反射C++不能 14、Spring框架的AoP的实现原理 15、描述一下生产者和消费者的模式 多线程和单线程在代码上的主要的区别 16、Object对象有哪些方法 17、equals和==的不同 18、判断一个链表是否有环 19、java里面怎么实现单例模式的 二面: 1、一面的java反射 再解释一下 2、项目 3、输入是整形的数组和一个给定的数 返回数组内等于这个目标数的两个数字的下标 4、Linux文件的权限(管理) 5、Linux下查找目录下的子文件 并进行删除 6、还是针对项目里面问的 7、在数据库里面 视图和表的区别 视图一般在什么场景进行应用(安全机制、查询性能并不比MySQL快) 8、JDBC连接数据的时候,Statement和PreparedStatement的区别 9、MySQL里面什么东西是预编译的 10、存储过程 11、存储过程是预编译的么 12、String和StringBuffer的区别 13、final可以用在哪里 14、copy命令 cp 原地址 目标地址。把文件从原来的的地址复制到目标地址上 有哪些方面需要进行测试 15、项目中是否用到过排序的算法 在什么场景下用到的 16、两根蜡烛 燃烧的时间是一样的都是一个小时,两个蜡烛的密度分布是不均匀的,通过两个蜡烛确认一段15分钟的时间 17、两个整形数组,找出两个数组的交集,两个数组的长度不一定一样 18、数据量很大,内存有限不能用相同大小的存储空间,时间复杂度不能超过O(n)。(用Hash) 19、平时用过版本管理么(Git进行代码的版本管理 Gradle Wrapper) 20、线程之间发生死锁的原因 21、同时来多个测试工作给你,你将怎么规划这些工作 三面: 1、自我介绍 2、针对本科的项目 说说自己负责的地方 有没有什么难点 3、详细讲述论文的创新点和完成的过程 4、有没有和同学合作完成过什么东西 5、合作的过程中如果发现他有错误,你是怎么提醒他的 6、有没有因为和别人争论而发生不愉快 7、你觉得自身有什么缺点 8、你到目前为止觉得最有趣的经历 9、你自己有没有对自己有什么规划 10、本科和研究生中你觉得最有趣的课程,为什么觉得数据结构有趣 11、你的家人支持你做互联网么 12、对前阶段百度的负面新闻,你觉得百度应该怎么应对 13、你认为在工作中你想对他人自己有什么优势,又有什么劣势,针对劣势自己怎么补救 14、有没有什么想去的城市工作 15、你有什么要问我的么 8月16号收到offer call。突然的顺利,突然的惊喜。由于自己的短浅眼界,流连在这个offer里。自以为就这么顺利的结束秋招,开始只学习自己感兴趣的东西并着手开始写毕业论文。 8月底,收到电话告诉我看看别的机会,不录用我了???收到电话的当晚一夜没睡,问我自己我到底都干了什么。 不到一周,知道了爷爷在住院的噩耗。整个人感觉就垮了,没有支撑点。 在不到十天的时间里,整个人感觉跌倒了低谷。重整旗鼓,准备重新备战秋招。 小红书——测开 一面: 1、用数组实现ArrayList 2、倒序栈(不能用辅助空间) 3、说说自己熟悉的数据结构 4、详细说HashMap 5、为什么HashMap的大小都是2的n次方 6、TCP挥手为什么是四次 二面: 1、JAVA虚拟机的内存模型 2、HTTPS的具体实现 3、手撕:查出数组里面出现次数最少的n个数字 4、手撕:查找左右节点的最低公共祖先 5、TCP 6、25匹马,5个跑道,需要几次能找到跑的最快的3匹马 7、小红书打开的时候该出现的广告没出现,说说原因 8、什么样的数值适合做索引 9、什么情况下不会用到索引 10、找出班级里面平均分前三的学生 11、为什么做测试开发 12、针对项目,详细展开 三面: 设计一个程序题,要求不断去优化 手撕:实现矩阵的翻转 HR面: 1、对小红书的印象 2、对未来的规划 3、认为平台和leader哪个更重要 4、家人对你做这个行业的看法 猫眼——测开(只写了自己记得了的) 1、两道手撕题记不清了,但是都不难 2、单索引和复合索引 3、什么字段适合做索引 4、equals和==的区别 5、常用的端口号 6、Map和List 度小满——测开 一面: 1、项目 2、手撕:找到合为定值的两个数字的下标 3、手撕:二叉树的镜像 4、TCP、UDP 5、HTTP中的cookie和session 它们之间有什么联系 6、get和post 7、为什么post安全 详细说明 二面: 1、项目 2、手撕:给你一系列字符串,像abc、bd、cb这种前后相接是能连在一起的,不限制第一个单词和最后一个单词的顺序。问给你n个字符串,判断这些字符串是否能这样窜起来 3、手撕:工厂模式 4、进程死锁 5、进程和线程 6、HTTP压缩和分段 三面: 1、项目 2、为什么想要做测开 3、针对数据库问了一些问题 4、研究生自己觉得的成就 5、觉得困难的事情,怎么看待并且怎么解决 依图——测开 1、手撕:实现多线程 2、手撕:单例模式、工厂模式 3、手撕:快速排序 并说出自己对快排的理解 4、手撕:一个动规我记得 面经主要就是自己记录的这些,知识点的话: TCP、HTTP、进程、线程出现频率较高,一定要深入的去了解。刷题的话尽量每天都刷不要断,JVM多查查知识点,较注重垃圾回收机制和数据存储。 以上就是自己对秋招的一些总结和记录,作为一个失败的菜鸡,不指望能帮助大家很多,就想要告诉大家不要像我这样容易松懈,每个人都不差一定要坚持。还有就是提前批能参加就参加,不要觉得自己还没学完,活到老学到老,知识是永远学不完的,苹果就摆在那里,你不试着去拿,不可能自己跑到你手里!你的成果定不负你的付出~
分享
6
先马后看
砂茶
华东政法大学·2022届

【职场一二事】工作之后的那点事情

一、关于那些小社会 第一个工作的公司,有点小社会的风气。 当然,我也不是说反对成群结队,或者在公司有说有笑地工作。 而是某种社会的气氛会比较浓厚。 你品一品。 领导是有领导的样子的,出外你得喝酒玩得起,玩得动,虽说明面上没有人有那种溜须拍马的劲儿,但是你可以感觉到,领导至上、老员工次之。 其他人也有点入乡随俗的样子,自然是跟着比划。 夜宵是要有的,猜拳喝酒也是要有的。 当然了,有些老员工还是值得尊敬的。比如其实跟我没有直接上下层关系的一位大佬,反而对我的疑问亲力亲为地过来指点。当然了,他自己也是比较另类的程序员,是属于独乐乐,不掺和太多事情类型的。 这里的“事情”,是还有分小党派。具体,就不细说了。 小社会有一个比较奇怪的事情,就是不能冒尖。有些时候,我每每回想起来,就是我冒尖太多了,所以会被人盯着。后面也就发生了一些事,当然,是在我已经准备辞职的时候了…… 但是这些事情,也导致了我后面的工作不敢冒尖了。 二、换工作的那些事情 换工作是很有必要的。 不要想着你“忠心耿耿”地从待在从校招开始进的公司,上层就会给你如愿的回报。事实上,你跳不跳,就跟地球转不转一样,没有关联。但是对你自己很重要。 如果你干得不爽,还是走吧。 如果你的薪资拿的跟你的水平不匹配,还是走吧。 如果你觉得你需要走了,还是走吧。 当你过了两三年再来回看你这段“跳槽”的事情,就应该觉得你的选择都是正确的。——不管你是不是后面遇到了糟心事,或者反而被炒了,之类的——都要坚信你的选择是对的。因为你留着,后面只会更糟心。 就我自己的感受而言,换工作是因为薪资实在太少。——而且公司是不会照顾穷人的。 第一家公司有一年的实习期。为了避免被人,或被熟悉劳动法的相关人指摘,半年“实习”,半年“见习”。 这半年的实习,薪资少到我交完房租、生活费,和一点家用,基本就要刷信用卡了。 是的,出门玩一趟,不是花呗,就是信用卡,然后第二个月一旦发工资了,就直接拿来填补上个月的亏空。后来实在撑不下去,钱也没再寄回家,反而要从家里拿钱。 但是其他人生活反而滋润得很,开车上班的,买房落户的,还有租带阳台独卫的房子的。 那时候我才知道,人的出身家境对工作的选择是很有影响的。如果薪资实在太少,还是跳吧。有些事没法跟别人比,就只会自己寻求新的机遇。 哦,说回来薪资这事,没有加班费。所以大家老老实实地奋斗,都是自愿加班。——更多的,是其他人加班,你也不得不加班。等九点坐公车回家,你会开始怀疑人生。钱少活多还得学人家装出奋斗X的样子。 那还是换吧。 三、换工作之后的事情 不要期待换工作会让你的生活突然如鱼得水。 一般来说,每个人的生活总是欲求不满的。 就如同跳槽之后,薪资直接加倍,(租房费用也直接翻倍,但是盈余总是比之前多了),但是你总会有更高的想法。 比如马云的手下不会追着我还花呗。 比如终于敢买一部台式机电脑,花了三千多也不心疼。 比如现在终于敢奢望攒钱,期待着攒满10w。 接着,你想要更多,比如更轻松的工作,更愉悦的生活。 回首换工作的第一年,我住的是没有3个平的书房改装的房间,还是靠着同学给面子,舔着脸少交了几百块的房租。那时候的日子是真的穷,从深圳出去广州见一趟妹子,都只能坐最便宜的大巴(是不是黑大巴就不好定义了),我的体质是坐大巴就会犯恶心干呕的,所以每次都感觉在经历地狱之旅。 现在呢,我孤孤单单一个人,住着带阳台的小区合租房,心里却想着的是攒够老家买房的首付。那时候怎么敢奢望住个大卧室,更罔论买个三线城市的小房间了。 当然,你可能会说我咋就不像个钱多话少的程序员……前面不是还有帖子是年薪二十万的内推帖么。是的,我年薪是高,但是我是钱少话多的那种。 ——一方面是因为生活花销,比如租房之类的翻倍。 ——另一方面,前面也说了,不是每个人家境都那么好的。我总得拿点钱寄回家去。不过这个行为,后面会让我觉得倍有面子,毕竟我也能反哺父母了,倒也不是一件什么事了。 所以,换工作可能会让你好受,但是不会让你特别好过。 四、换工作之后的工作 你以为我换了工作生活变好了。 其实并没有。 因为从个人体验来说,从每个月四千的工作突然换到近一万的薪资的工作,你会有一种感觉:我真的值这么多钱吗? 你会开始患得患失。万一这份工作做不好怎么办?别人也加班,我是不是也该加班? 虽然从某个维度上来比,一万月薪不算什么高薪资的工作,但是那是对于那些出来就见了大世面的人来说的,对我一个刚开始薪资就被压得极其非常特别低的人而言,我会觉得豁然提升了那么多,会很吓人。 (当然后来才发现其他人水平相当,甚至还有连基础的命令行、盲打都不会的人,一开始却能领那么高的薪资,全靠第一份工作找得好,自我肯定很重要。) 面试的时候造火箭,工作的时候拧螺丝。这句话对非高端行业的人来说,很恰如其分。 但是由于自身对工作的重视程度在后面越来越高,就出现了一个很不好的情况:太把工作当回事了,以至于忽略了身边的人。 是的,第一年我拿了个最低绩效。 第二年重视起来之后,拿了个高的绩效。 ——生活上,这一年过后我就被甩了。 因为我下班时间也越来越晚,后来连请假都不敢,竟然让妹子自己去旅游了。最后的导火线是岗位上埋头苦干,却忘了机场回来的女友百无聊赖,无人搭理。 钱是拿到了,最爱的人却丢了。 ——以至于到现在我都后悔。 工作内容没什么好说的,真的就是for循环和if语句走天下。再不行就拷贝上面一行下来再循环一次。 (当然代码哪里都一样,问题是这些工作基本上比不上搞算法的。这里的代码是你一眼就知道在干什么的,而算法的那些代码可能你一个一个字地看都不知道是在干嘛。) 但是居安思危这四个字,真的是放之四海而皆准。 因为.Net的技术栈不被看好,理论上都要转型了。这个时候就会有一种被打了个措手不及的感觉。 所以工作中还是偶尔关注一下其他技术栈的好处,就会在这个时候体现出来了。 再没有,就多抱佛脚吧。 五、所谓的经验 1)多用言语沟通请教,而不是文字 有些新人害怕打电话找需求方,害怕说话,不敢表达,我觉得这一点真的是让人很掉好感。因为明明几句话的功夫就可以搞明白的,非要用文字请教,磕个大半天还不知道彼此的意思…… 2)不要为了加班而加班。如果必须加班,就请偷偷学习,而不是打游戏。 没什么好说的,现在风气已经起来了,前后左右的公司都在加班,都在比“奋斗”——但是有没有干活,大家心里都清楚。有的人只是刷加班时间,所以如果因为规定你也要刷,那最好带上你的电脑,装好IDE,学点新的东西,或者自己搞个服务器,自己远程写点自己想要的代码,看点感兴趣的书。——哪怕是闲书。 3)不要玩游戏。这个很重要。 上班地点不要玩游戏,不是给领导看的,而是给你自己约束用的。当你拿加班的时间来放松的时候,就说明你没有任何独立做自己事情的时间。如果你喜欢玩游戏,下班好好玩。——但是真的别忘了自己写自己的代码。 经验这种东西说出来你也就只是看看而已。 但是“熟能生巧”这四个字却要警惕: 你现在是自觉技术有进步了呢,还是仅仅是打代码打熟了而已? 你以后二十年的工作,还要这么重复下去么? 与诸君共勉。
分享
5
先马后看
无念很爱学习哟
昆士兰大学·2022届

非科班的渣渣总结

一般来说,XXX总结都是大佬写的,然后下面就是一堆Offer以及面经,我还真不好意思写面经,毕竟没有啥大offer,所以大佬请别嘲笑。 我的春招实习差不多就结束了吧,还剩下头条的面试流程以及等待快手的HR面(或者挂了)。 春招实习从2月4号开始准备,到今天,整三个月。拿到的offer非常非常一般,和大佬不能比。 楼主三个月记录如下(按时间来): 1.阿里一面挂(第一次就是面阿里,话都数不清楚) 2.百词斩(offer) 3.华为(排序) 4.顺丰(一面挂,真的不忍吐槽,下面会讲) 5.去哪儿一面挂(我不服) 6.京东一面挂(问前端。。。) 7.携程(offer) 8.腾讯(offer) 9.头条(面试流程中) 10.快手(内推走到二面,笔试走到二面) 面经如下: 阿里: 1.你是非专业的,如何规划学习,平常如何接触计算机行业?在学校有什么突破性的研究成果? 2.为什么想到转计算机这一块,而且花这么多学Java?(回答热爱互联网自由、开放的氛围) 3.谈谈当前互联一些主流应用技术,未来的趋势往哪些发展,谈谈微服务吧?(这个就瞎了) 4.抽象类和接口的区别?(接口方法都是抽象,只能有静态常量;) 5.讲一讲平时用到的抽象类,为什么使用抽象类?(我提到了AbstractStringBuilder以及他的子类StringBuilder和StringBuffer) 6.谈谈Java堆和栈?(巴拉巴拉都说了一遍) 7.什么时候发生Full GC?(老年代空间不够的时候) 8.写代码时候如何避免FullGC对系统的影响?(我回答的是减少对象的创建,多使用单例) 9.多线程如何实现线程安全?(synchronized,lock,volatile只能是轻量级,不能保证线程安全,对于线程不共享的资源使用ThreadLocal) 10.解释一下信号量?(举了一个上厕所的例子) 11.解释一下乐观锁和悲观锁的区别? 12.乐观锁如何实现?乐观锁在什么时候进行加锁?(CAS,资源竞争的时候加锁) 13.线程死锁如何调试?用什么工具来调试定位?(我回答Jconsle) 14.SQL注入是什么,如何避免SQL注入?(回答SQL使用preparestament,应用上面使用正则表达式过滤有危害的sql) 15.MySQL如何实现分页?如何优化limit?(第二点没有答出来。) 16.SQL语句调优有哪些方法?(看慢日志定位SQL语句,使用explain 分析SQL)(面试回答,了解,基本可以) 17.Timestamps和datetime的差异?(我只回答了起始时间不同,没有回答字节不同)(行了,我大概了解) 18.Linux下如何查看文件?在文件中如何搜索关键字?(第一问回答了vi/vim,第二问我回答find+查找内容命令,我的脑子肯定出了问题,回答了搜索文件命令) 19.用什么命令查看端口是否被占用?(我回答用top看线程,然后 ps +grep,应该是没回答出来,Linux确实不太行,平时偶尔用下Ubuntu) 20.了解过Zookeeper嘛?(回答正在看Paxos到Zookeeper这本书) 21.如何实现session共享?(回答做过单点登陆,我使用Redis实现session)(好的呀,我知道了,你这边的情况我了解了,你有什么问我的嘛?) 百词斩: 1面 13分钟: 1.最大堆最小堆的插入流程说一下(先插入最后一个,然后再调整,调整的复杂度是(好了)) 2.优先队列有了解嘛?(嗯了解(好的)) 3.数据库了解吗,你应该用过的吧?(了解,做的项目里面有设计数据库存,自己也写关于MySQL的博客,对MySQL的了解还是可以的(哦哦,好的)) 4.说说秒杀如何实现的?(用redis预库存的减少,然后方式异步消息队列rabbitMQ中) 5.如何实现一个线程安全的HashMap(说了一下HashTable、Collections.sysn。。。、chm。本来还想着说chm的源码实现(好的)) 6.算法题做的多么(刷过leetcode,offer也刷完了) 7.图的最短路劲算法?(不会,说了一下迪杰斯特拉算法这个东西) 8.leetcode的edit—distence(口述了一下,使用dp,说了一下思路) 9.说一下最长子序列?(我正要说,还没开口(¥%……&,哦好)) 10.你研究方向是什么?(做硬件方面的存储,(硬件啊?,也就是软件不是主修?)) 11.做过什么系统吗?(您说操作系统吗?(就是你本科学什么的?)) 12.说一下solr?(说了一下solr,(ok)) 13.我看了你推了一下实习生,你是实习吧?(what?我难道投递错了?) 14.%^&#$^&,嗯,就这样(前面真没听清楚,what?老师结束了嘛?(嗯,技术面就这样结束了,后面因该会有人联系)) 二面 45分钟: 1.B+树查找的效率分析,使用B+树作索引结构相比较使用B树有什么优点,和Hash比有什么优点? 2.如何分析一个SQL语句是否使用索引? 3.一个非多表链接的sql语句能否同时使用到多个索引?例如where  id=xx and  name = xxxx? 4.把NIO说一遍(这里我把5种IO都说了一下,然后说了java中的实现) 5.linux中select在轮循多个连接的时候如何操作?不会回出现CPU100%的情况?为什么不会出现? 6.不同的服务是否能得到所有的cookie?服务器如何识别?除了host还有没有别的识别方法? 7.cookie在请求时是如何写在request中的?服务端是如何写到cookie中的?response里面的cookie是怎样表示的? 8.linux命令行中如何使用管道? 9.操作系统如何控制一个资源只能被一个进程访问,也就是锁是如何实现的?(这里我说能不能从Java说,面试官说,我需要底层原理,Java应该解释不清楚) 10.项目的抢购模块如何解决超卖的问题? 11.项目里的QPS如何提高和优化的? 华为: 一面: 1.说一下redis? 2.说一下缓存击穿是什么? 3.为什么用rabbitMQ而不用kafka? 有什么要问的么? 二面: 1.机械硬盘的转速多少? 2.固态硬盘的读取速度多少? 3.你电脑的硬盘速度多少? 4.说一下工资和地点 顺丰(真的不忍吐槽,花了一个半小时做测试花了一个半小时做笔试,就是浪费时间): 1.进程线程说一下? 2.项目觉得做的最好的地方和最不好的地方? 3.和同事之间有矛盾怎么解决? 4.和同事时间如何配合? 5.我们不看中技术,更加看重学习能力。 然后我就挂了,可能我学习能力不够吧,浪费3小时在顺丰上,还让我注册智联招聘,注册以后一个接一个垃圾邮件。MMP 去哪儿:(最不顺的一天) 项目的意义和出发点?项目数据库如何设计的?http?谈了两个报文的详细结构,以及说了常见的状态码。索引的结构。我这里对于Hash索引的缺点没有说完整 手写sql:手写两个算法。递归和非递归的实现。 除了Hash索引的缺点,其他都回答出来了。然后GG 京东电话面: 1.你不是科班的,那你知道总线么?(啥?) 2.不是科班的话知道数据结构吗?二叉树呢?说说在项目里面的应用(我没用到过,别人的项目也没看到人直接用二叉树啊) 3.你知道前端页面的时间是有误差的么?如何减少误差?(我一个后台的你问前端的?) 4.如何避免少买?(不用付钱就行了;秒杀情景下,有支付环节就有少买,这是避免不了的,问的莫名其妙) GG 腾讯: 一面82分钟: 首先问到了项目的架构设计,然后扩展,如果自己项目需要满足10W QPS的需求,架构如何设计? 项目里面高并发下如何实现请求的过滤以及消峰? 集群环境下如何保证数据的一致性? 服务器集群以后如何做到数据的共享? 说一说一致性Hash吧? 问我MySQL主从复制会不会?回答不会。 那你自己设计一下MySQL的主从复制应该如何解决?画一下你的思路? 最后面试官告诉了我MySQL主从复制的原理。然后和他探讨了一下我对这个原理的疑惑。 当时是使用了Redis主从复制的思想来考虑的。 你这种解决办法是从结果来考虑,是不能从原因角度考虑? 说一下STL的Map? 我说我不会,然后讲了一下java的实现,画了一下数据结构图。 讲一下红黑树? 我说您直接看我博客吧,里面有对他的分析。 ali云用的linux什么版本?虚拟机的呢? 说一下常用的shell命令? 看过那些书? 选择出最好的三本? 学习过程? 为什么硕士不报计算机? 你项目里面的这些架构的设计是怎么学习的? 还有一些架构设计的问题忘了了。 二面: 面试开始(被吊打之旅开始,完完全全被吊打的没有还手之力): 一轮面试官对你评价比较好啊,说你是自学Java的?说一下过程? 你懂不懂C++呢?说一些你会的就行。 -1的二进制码是多少? 说一说大小端? 描述一下客户端和服务端进行socket的系统的过程吧? 系统调用是怎样的? 如果服务端在listen以后sleep了,那么client的connect还能接收到么? 进程间通信说一下? 选择一种说一下实现原理? 那么管道和消息队列之间有什么区别么? 为什么有这个区别? 快排思路说一下? 手下一下,拍照片给我。 知道队列么? 手写一下用数组实现的循环队列吧,只需要两个方法入队以及出队? 在改进一下? 为什么使用这种写法?这样就会有一个空间没有利用。可以不可在改一下? 快手内推: 一面全程55min: 全程聊自己的项目架构设计以及改进点的设计,还是面试官提出场景需求,我负责系统架构的设计,2分钟的时间考虑。 技术问题: 数据库的隔离级别? 默认的隔离级别? 三次握手? 最后和面试官沟通的时候才知道我是实习,他以为我是社招,然后让我加他的微信。和面试官微信沟通后确认已经过了,让我好好准备下一轮。 二面: 原定于11点,改到下午5点,改到下午6点。 全程20min 1.自我介绍 2.什么时候能来实习啊? 3.实习来快手想做什么事情? 4.设计双11的系统? 首页静态化+CDN,服务器临时增加负载均衡+集群,数据库Redis增加集群节点数,将一些非核心的业务功能关闭。 5.聊一下CAP? 我说我不知道这是啥。然后面试官解释给我听,让我说一下自己的理解。 携程: 1.自我介绍 2.介绍学习过 3.技能栈里面的开源框架和中间件都是自学的么? 4.哈夫曼编码知道么? 我说我知道哈夫曼树。 5.你项目里面的有优惠券这个东西,有没有涉及到真正的支付过程? 没有,只是做了一个Demo,还没有接入支付API。 6.说说秒杀模块的架构设计? 7.为什么使用Redis做两次过滤? 第一次用来拦截,第二次用来减少少买。然后异步队列消峰。 8.只有一次过滤可以么? 可以,第二个项目里面的优惠券抢购就是一次过滤。 9.有没有tomcat调优过? 我说我简历里面都写了调优后提高了多少QPS,然后又说了说自己如何调优的。 10.无限量数据排序去除前100W大的数据? 首先问了每一个数据的范围。可以使用bitMap,Hash分治,还有堆排序 11.说一说堆排序的原理? 12.刚才的场景用大顶堆还是小顶堆? 13.手写一下堆排序? 14.Spring和MyBatis了解到什么程度? 源码级别,写过相关的博客,也debug过,您可以随便问。 15.反射知道吗? 说了一下SpringIOC里面用到了反射,以及反射用来干嘛。 16.你是软件工程的么? 17.为什么想转Java? 18.有什么要问的? 头条还没有面试完成。 之前有一个同学让我说一下自学之路,那就稍微说一下吧: 16年10月  就看了一本Head First Java,当时看不懂,然后就看一下马士兵的视频,感谢马老师。 17年3月,看了一下JDBC和MYSQL 17年7月到8月,暑假开始看了一下框架,白天做家教,就晚上花三个小时看的。 9月  初看了一下数据结构,中旬跟着视频做了一下项目,然后不看视频完全自己做。 10月  开始看基础,并发,JVM,MYSQL,写博客 11月  重新写了一下之前的视频项目,月底花了一个礼拜自己用SSM写了一个博客放在阿里云上了 12月  开始看Redis,Solr,学习了一下RabbitMQ,月底看了《大型网站技术架构》,然后自己设计了一个小架构,写了一个秒杀的Demo 18年1月   自己想做一个食堂外带项目,自己构思需求,自己设计架构以及数据库表,模块分离,以及集群+主从搭建。 18年2月   回顾自己学习的知识点,看书,项目做的比较少了 18年3月   完善了一下项目,减少XSS和CRSF攻击,以及消除缓存击穿以及缓存学奔,优化了项目,提高了一些QPS。然后就是不断投简历,笔试+面试+看面经 18年4月   笔试+面试+看面经 10次面试,给我的感觉就是我作为非科班的同学,计算机基础知识比较薄弱,所以需要加强很多。 书籍的话其实就那几本书,没什么好推荐的,倒是可以看看优秀的博客。 还是写一写吧: Thinking in Java 算法与数据结构 OS concepts Tcp/ip详解 卷1,图解TCP图解HTTP 深入浅出MySql以及InnoDB 技术内幕 JVM Spring In Action Spring源码解读(我是自己Debug过一遍,书看一遍,再博客看一遍,然而一个面试官否没问到源码),MyBatis也看了源码 JavaWeb技术内幕(神书) Head First 设计模式 大型网站技术架构(神书,学习了好多好多) 从Paxos到ZooKeeper 并发的书籍,算了还是看博客吧 Redis,Solr,RabbitMQ都看博客吧。 还有一些乱七八杂的树就不推荐了。
分享
12
先马后看
森林
长安大学·2022届

机器学习笔记——相似性度量

1. 欧氏距离(EuclideanDistance) (1)二维平面上两点a(x1,y1)与b(x2,y2)间的欧氏距离: (2)三维空间两点a(x1,y1,z1)与b(x2,y2,z2)间的欧氏距离: (3)两个n维向量a(x11,x12,…,x1n)与 b(x21,x22,…,x2n)间的欧氏距离: (4)Matlab计算欧氏距离 Matlab计算距离主要使用pdist函数。若X是一个M×N的矩阵,则pdist(X)将X矩阵M行的每一行作为一个N维向量,然后计算这M个向量两两间的距离。 例子:计算向量(0,0)、(1,0)、(0,2)两两间的欧式距离 X= [0 0 ; 1 0 ; 0 2] D= pdist(X,'euclidean') 结果: D=     1.0000   2.0000    2.2361 3. 切比雪夫距离 ( Chebyshev Distance )  国际象棋玩过么?国王走一步能够移动到相邻的8个方格中的任意一个。那么国王从格子(x1,y1)走到格子(x2,y2)最少需要多少步?自己走走试试。你会发现最少步数总是max(| x2-x1 | , | y2-y1 | ) 步。有一种类似的一种距离度量方法叫切比雪夫距离。 (1)二维平面两点a(x1,y1)与b(x2,y2)间的切比雪夫距离 (2)两个n维向量a(x11,x12,…,x1n)与b(x21,x22,…,x2n)间的切比雪夫距离 (3)Matlab计算切比雪夫距离 例子:计算向量(0,0)、(1,0)、(0,2)两两间的切比雪夫距离 X= [0 0 ; 1 0 ; 0 2] D= pdist(X, 'chebychev') 结果: D=      1    2     2 4. 闵可夫斯基距离(MinkowskiDistance) 闵氏距离不是一种距离,而是一组距离的定义。 (1)闵氏距离的定义 两个n维变量a(x11,x12,…,x1n)与b(x21,x22,…,x2n)间的闵可夫斯基距离定义为: 其中p是一个变参数。 当p=1时,就是曼哈顿距离 当p=2时,就是欧氏距离 当p→∞时,就是切比雪夫距离 根据变参数的不同,闵氏距离可以表示一类的距离。 (2)闵氏距离的缺点 闵氏距离,包括曼哈顿距离、欧氏距离和切比雪夫距离都存在明显的缺点。 举个例子:二维样本(身高,体重),其中身高范围是150~190,体重范围是50~60,有三个样本:a(180,50),b(190,50),c(180,60)。那么a与b之间的闵氏距离(无论是曼哈顿距离、欧氏距离或切比雪夫距离)等于a与c之间的闵氏距离,但是身高的10cm真的等价于体重的10kg么?因此用闵氏距离来衡量这些样本间的相似度很有问题。 简单说来,闵氏距离的缺点主要有两个:(1)将各个分量的量纲(scale),也就是“单位”当作相同的看待了。(2)没有考虑各个分量的分布(期望,方差等)可能是不同的。 (3)Matlab计算闵氏距离 例子:计算向量(0,0)、(1,0)、(0,2)两两间的闵氏距离(以变参数为2的欧氏距离为例) X= [0 0 ; 1 0 ; 0 2] D= pdist(X,'minkowski',2) 结果: D=     1.0000   2.0000    2.2361 5. 标准化欧氏距离(Standardized Euclidean distance ) (1)标准欧氏距离的定义 标准化后的值 =  ( 标准化前的值  - 分量的均值 ) /分量的标准差 经过简单的推导就可以得到两个n维向量a(x11,x12,…,x1n)与b(x21,x22,…,x2n)间的标准化欧氏距离的公式: 如果将方差的倒数看成是一个权重,这个公式可以看成是一种加权欧氏距离(WeightedEuclidean distance)。 (2)Matlab计算标准化欧氏距离 例子:计算向量(0,0)、(1,0)、(0,2)两两间的标准化欧氏距离 (假设两个分量的标准差分别为0.5和1) X= [0 0 ; 1 0 ; 0 2] D= pdist(X, 'seuclidean',[0.5,1]) 结果: D=     2.0000   2.0000    2.8284 6. 马氏距离(MahalanobisDistance) (1)马氏距离定义 (2)马氏距离的优缺点:量纲无关,排除变量之间的相关性的干扰。 (3)Matlab计算(1 2),( 1 3),( 2 2),( 3 1)两两之间的马氏距离 X = [1 2; 1 3; 2 2; 3 1] Y = pdist(X,'mahalanobis') 结果: Y=     2.3452   2.0000    2.3452    1.2247   2.4495    1.2247 7. 夹角余弦(Cosine) 有没有搞错,又不是学几何,怎么扯到夹角余弦了?各位看官稍安勿躁。几何中夹角余弦可用来衡量两个向量方向的差异,机器学习中借用这一概念来衡量样本向量之间的差异。 (1)在二维空间中向量A(x1,y1)与向量B(x2,y2)的夹角余弦公式: (2)两个n维样本点a(x11,x12,…,x1n)和b(x21,x22,…,x2n)的夹角余弦 类似的,对于两个n维样本点a(x11,x12,…,x1n)和b(x21,x22,…,x2n),可以使用类似于夹角余弦的概念来衡量它们间的相似程度。 即: 夹角余弦取值范围为[-1,1]。夹角余弦越大表示两个向量的夹角越小,夹角余弦越小表示两向量的夹角越大。当两个向量的方向重合时夹角余弦取最大值1,当两个向量的方向完全相反夹角余弦取最小值-1。 (3)Matlab计算夹角余弦 例子:计算(1,0)、( 1,1.732)、(-1,0)两两间的夹角余弦 X= [1 0 ; 1 1.732 ; -1 0] D= 1- pdist(X, 'cosine')  % Matlab中的pdist(X,'cosine')得到的是1减夹角余弦的值 结果: D=     0.5000  -1.0000   -0.5000 8. 汉明距离(Hammingdistance) (1)汉明距离的定义        两个等长字符串s1与s2之间的汉明距离定义为将其中一个变为另外一个所需要作的最小替换次数。例如字符串“1111”与“1001”之间的汉明距离为2。        应用:信息编码(为了增强容错性,应使得编码间的最小汉明距离尽可能大)。 (2)Matlab计算汉明距离 Matlab中2个向量之间的汉明距离的定义为2个向量不同的分量所占的百分比。        例子:计算向量(0,0)、(1,0)、(0,2)两两间的汉明距离 X = [0 0 ; 1 0 ; 0 2]; D = PDIST(X, 'hamming') 结果: D=     0.5000   0.5000    1.0000 9. 杰卡德相似系数(Jaccardsimilarity coefficient) (1) 杰卡德相似系数      两个集合A和B的交集元素在A,B的并集中所占的比例,称为两个集合的杰卡德相似系数,用符号J(A,B)表示。 杰卡德相似系数是衡量两个集合的相似度一种指标。 (2) 杰卡德距离 杰卡德距离用两个集合中不同元素占所有元素的比例来衡量两个集合的区分度。 (3)杰卡德相似系数与杰卡德距离的应用 可将杰卡德相似系数用在衡量样本的相似度上。 样本A与样本B是两个n维向量,而且所有维度的取值都是0或1。例如:A(0111)和B(1011)。我们将样本看成是一个集合,1表示集合包含该元素,0表示集合不包含该元素。 p:样本A与B都是1的维度的个数 q:样本A是1,样本B是0的维度的个数 r:样本A是0,样本B是1的维度的个数 s:样本A与B都是0的维度的个数 那么样本A与B的杰卡德相似系数可以表示为: 这里p+q+r可理解为A与B的并集的元素个数,而p是A与B的交集的元素个数。 而样本A与B的杰卡德距离表示为: (4)Matlab计算杰卡德距离 Matlab的pdist函数定义的杰卡德距离跟我这里的定义有一些差别,Matlab中将其定义为不同的维度的个数占“非全零维度”的比例。 例子:计算(1,1,0)、(1,-1,0)、(-1,1,0)两两之间的杰卡德距离 X= [1 1 0; 1 -1 0; -1 1 0] D= pdist( X , 'jaccard') 结果 D= 0.5000    0.5000   1.0000   10. 相关系数( Correlation coefficient )与相关距离(Correlation distance) (1)相关系数的定义 相关系数是衡量随机变量X与Y相关程度的一种方法,相关系数的取值范围是[-1,1]。相关系数的绝对值越大,则表明X与Y相关度越高。当X与Y线性相关时,相关系数取值为1(正线性相关)或-1(负线性相关)。 (2)相关距离的定义 (3)Matlab计算(1, 2 ,3 ,4 )与( 3 ,8 ,7 ,6 )之间的相关系数与相关距离 X = [1 2 3 4 ; 3 8 7 6] C = corrcoef( X' )   %将返回相关系数矩阵 D = pdist( X , 'correlation') 结果: C=     1.0000   0.4781     0.4781   1.0000 D= 0.5219       其中0.4781就是相关系数,0.5219是相关距离。 11. 信息熵(Information Entropy) 信息熵并不属于一种相似性度量。那为什么放在这篇文章中啊?这个。。。我也不知道。 (╯▽╰) 信息熵是衡量分布的混乱程度或分散程度的一种度量。分布越分散(或者说分布越平均),信息熵就越大。分布越有序(或者说分布越集中),信息熵就越小。
分享
4
先马后看
Ozean
天津商业大学·2022届

职场感言:没有学不会的业务,只有看不懂的人事

职场感言:没有学不会的业务,只有看不懂的人事 现在越来越觉得马克思的一句话说的好,人是社会关系的总和,业务没有多复杂,复杂的是人,人事关系很复杂,如果你周围的人都和蔼、都乐于助人,那么即使一个并不聪明的人,在这个环境下,也能迅速地成长,一个乐于分享的环境是很重要的,能够培植后进的、年轻的,而不去搞其他事情,这点环境很重要,即使你起点不高、学历不高、能力不强,这里的工资收入不高,但是只要有好的人事环境,你就一定能够发展起来,而且会发展得不错。 记住一点,业务永远没有那么难,普通的银行业务、科技业务、你只要具备普通人的智商,足够用了,你所要关注的是什么呢,是人事关系,周围的人是不是乐于助人,是不是包容大度,如果你与周围的领导、同事相互包容,相互理解,相互帮助,内部相互团结,那么这个环境你就选对了,一定要干下去,除非原有的与你相合的领导、同事换了,那么你要考虑下一步的去向了,就是这样,很简单。
分享
评论
先马后看
GEM-Sene
华南农业大学·2022届

面试常问智力题

赛马次数 有 25 匹马和 5 条赛道,赛马过程无法进行计时,只能知道相对快慢。问最少需要几场赛马可以知道前 3 名。 先把 25 匹马分成 5 组,进行 5 场赛马,得到每组的排名。再将每组的第 1 名选出,进行 1 场赛马,按照这场的排名将 5 组先后标为 A、B、C、D、E。可以知道,A 组的第 1 名就是所有 25 匹马的第 1 名。而第 2、3 名只可能在 A 组的 2、3 名,B 组的第 1、2 名,和 C 组的第 1 名,总共 5 匹马,让这 5 匹马再进行 1 场赛马,前两名就是第 2、3 名。所以总共是 5+1+1=7 场赛马。 A 组:1,2,3,4,5 B 组:1,2,3,4,5 C 组:1,2,3,4,5 D 组:1,2,3,4,5 E 组:1,2,3,4,5 用绳子计时 15 分钟 给定两条绳子,每条绳子烧完正好一个小时,并且绳子是不均匀的。问要怎么准确测量 15 分钟。 点燃第一条绳子 R1 两头的同时,点燃第二条绳子 R2 的一头; 当 R1 烧完,正好过去 30 分钟,而 R2 还可以再烧 30 分钟; 点燃 R2 的另一头,15 分钟后,R2 将全部烧完。 九球称重 有 9 个球,其中 8 个球质量相同,有 1 个球比较重。要求用 2 次天平,找出比较重的那个球。 将这些球均分成 3 个一组共 3 组,选出 2 组称重,如果 1 组比较重,那么重球在比较重的那 1 组;如果 1 组重量相等,那么重球在另外 1 组。 对比较重的那 1 组的 3 个球再分成 3 组,重复上面的步骤。 药丸称重 有 20 瓶药丸,其中 19 瓶药丸质量相同为 1 克,剩下一瓶药丸质量为 1.1 克。瓶子中有无数个药丸。要求用一次天平找出药丸质量 1.1 克的药瓶。 可以从药丸的数量上来制造差异:从第 i 瓶药丸中取出 i 个药丸,然后一起称重。可以知道,如果第 i 瓶药丸重 1.1 克/粒,那么称重结果就会比正常情况下重 0.1 * i 克。 得到 4 升的水 有两个杯子,容量分别为 5 升和 3 升,水的供应不断。问怎么用这两个杯子得到 4 升的水。 可以理解为用若干个 5 和 3 做减法得到 4。 不能从 3 做减法得到 4,那么只能从 5 做减法得到 4,即最后一个运算应该为 5 - 1 = 4,此时问题转换为得到 1 升的水; 1 升的水可以由 3 做减法得到,3 - 2 = 1,此时问题转换为得到 2 升的水; 5 - 3 = 2。 扔鸡蛋 一栋楼有 100 层,在第 N 层或者更高扔鸡蛋会破,而第 N 层往下则不会。给 2 个鸡蛋,求 N,要求最差的情况下扔鸡蛋的次数最少。 可以将楼层划分成多个区间,第一个鸡蛋 E1 用来确定 N 属于哪个区间,第二个鸡蛋 E2 按顺序遍历该区间找到 N。那么问题就转换为怎么划分区间满足最坏情况下扔鸡蛋次数最少。 E1 需要从第一个区间开始遍历到最后一个区间。如果按等大小的方式划分区间,即 E2 的遍历次数固定。那么最坏的情况是 N 在最后一个区间,此时 E1 遍历的次数最多。为了使最坏情况下 E1 和 E2 总共遍历的次数比较少,那么后面的区间大小要比前面的区间更小。具体来说,E1 每多遍历一次,E2 要少遍历一次,才使得 N 无论在哪个区间,总共遍历的次数一样。设第一个区间大小为 X,那么第二个区间的大小为 X-1,以此类推。那么 X + (X-1) + (X-2) + … + 1 = 100,得到 X (X + 1) / 2 = 100 ,即 X = 14。
分享
2
先马后看
椰子
京东商城员工

秋招经验谈

以下乃一家之言,有用,则吾心甚慰,无用,君权当一笑。 一家之言,常有多家之辩,望诸君善待吾之善心,莫急言于在下。 吾求无错,奈何水平所限,失误再所难免,请各位提之,吾当改之。 吾所求岗位均为研发岗位,故技术人才更适用之。 目录 0. 个人情况 1. 准备工作 1.0 概述 1.1 我的练级之路 1.2 认知思维篇 1.3 专业技术篇 1.4 面试技巧篇 1.5 学习资料篇 2. 面经 2.0 概述 2.1 中国银联 2.2 顺丰科技 2.3 VIVO 2.4 海康威视 2.5 招商银行信用卡中心 2.6 华为 2.7 携程 2.8 虎牙 2.9 平安科技 2.10 其他公司 零.个人情况 学校:211 专业:非计算机专业,但是是电子类专业 应聘岗位:Java后端开发(或者相关开发岗位) offer:中国银联 顺丰科技 vivo 海康威视 招商银行信用卡中心 Java相关知识学习时间:2017.11 ~ 2018.9 (以前是做雷达相关的研究) 秋招正式准备时间:2018.5.15 ~ 2018.8 (前面还有零散的准备) 面试城市:西安 no offer: bat(二面挂) 网易(一面挂)虎牙(一面挂)平安科技(一面挂) 华为(还在池子里泡着呢)携程(还在池子里泡着呢) 一. 准备工作 1.0 概述 首先要明确,offer与认知思维、专业技术、面试技巧以及运气都分不开,即 offer = 认知思维 + 专业技术 + 面试技巧 + 运气 (1)认知思维是指求职者的心理准备,思维准备,决定了准备的质量以及offer的质量; (2)专业技术是指求职者的专业实力,是校招的基础,敲门砖,决定了offer的下限; (3)面试技巧是指求职者的语言表达,归纳整理,能力包装等能力,为专业能力锦上添花(而非雪中送炭),决定了求职者是能够发挥出应有的专业水准。 接下来我将围绕认知思维、专业技术以及面试技巧展开介绍。 1.1 我的练级之路 1.1.1 选择与方向 关于我的练级之路,我想从一个面试经常问到的问题谈起:你为什么要从搞雷达转到搞Java开发呢?为什么从一个非常高端的领域转到一个简单的应用领域呢?你不觉得浪费你的才能吗?是的,我的研究方向是雷达相关,与Java开发完全不搭边,为什么要转呢?主要原因有以下几点(注意,面试的时候可不能这么回答呀,童鞋们,我这里只是说了个大实话而已,面试的时候得包装啊,童鞋们): 我发现我不适合做雷达方向的研究,整个雷达领域其实涉及的知识点是非常多的,需要掌握雷达相关理论和雷达设备本身以及战场环境3个纵深领域的知识,而雷达理论、雷达设备与战场表现三个领域的表现其实并不完全一致,想要做出成绩,其实需要经历大量年限的积累,对整个雷达领域有了一个整体的积累之后,你才能做出有效的成绩(注意这里的有效是指不是骗国家钱的那种研究,而是实实在在的能用在实战中的研究,不细说了),因此整个领域的发展不是循序渐进的发展,而是断崖式厚积薄发的发展,因此其实挺难的。 雷达方向的就业面很窄,基本上主要去研究所工作,而研究所的工作氛围并不适合我(说的直接点,事实上是工资更加不适合我)当然了,现在其实随着自动驾驶的兴起,雷达算法工程师也逐渐可以去民用公司赚钱,这点其实非常好 因此想要换一个方向去做,或者说换一个技术路径去发展,但是毕竟是换一个方向去发展,时间和精力有限,需要选一个难度较低的切入点,因此选择了 Java后端开发工程师。 既然谈到了选择,这里需要提醒一下大家,在找工作之前,一定要想想自己适合做什么样的工作,自己感兴趣的是什么工作,这点非常重要。 1.1.2 制定计划 谈完选择,定下方向,接下来就是制定计划了。整个准备过程其实一直都是制定计划、执行计划、打破计划、重新制定计划、重新执行计划的循环。因此我下面就直接介绍我都做了哪些事情。直接上图吧。 在这个过程里你会发现,生活从来没有准备到完美的时候,计划永远都赶不上变化,那么校招也是一样,你永远不会有准备好的那一天,那就在准备了多少就直接上战场吧。 1.1.3 执行计划 既然知道了该做什么事情,那么你就应该像一只野兽一样,开始捕猎,不见血不停止,你需要拼命地野蛮生长。 2018.10.1 - 2018.10.15 我其实是2018.10就有意识的开始准备找工作了,但是那个时候需要干实验室老板的任务,因此都是每天项目任务完成之后,开始零散的学习Java基础知识,当时每天项目任务完成,开始复习的时候,基本都是晚上11点左右了,每天基本上学习到凌晨0:40左右,回宿舍休息,第二天接着来。就这样,学习了差不多有半个月,后面项目越来越紧,需要投入的时间越来越多,然后就开始中断了。对Java有了一个整体的认识。 2019.2 直到寒假放假,大概2019.2 才有了2周完整的学习时间,这2周,深化了一下Java基础知识,Java基础基本上已经有一个全面的了解了。3月返校,老板的任务更重了,基本上挤不出什么时间复习,因此我加班到5月中旬,把我所有的相关的任务全部做完之后,跟老板商量,能不能开始找工作,不再做实验室项目了,老板曰,可以。尽管后面老板还找我,但是其实已经没有那么频繁了,因此我开始有了一定的时间复习,但事实上,其实并不够,其实还是有很多实验室项目的事情需要做,但是好歹可以有自己的时间复习了。 在这里我要给大家一个建议:当你实验室活很多的时候,你需要给你的老板去说你即将要找工作的事情,去和他商量,为啥这么做呢?首先,老板对你毕业有身杀大权,你需要征求他们的同意,才能有一定的时间去找工作,不至于发生因为找工作而没有完成实验室任务,导致和老师发生冲突,那就不好了;其次,你提出找工作的事情,其实是给老师释放一个信号:你要找工作了,希望老师能少安排活,即使他最后没有少安排活,也会降低对你完成任务的期许,这样不容易造成冲突。 2019.5.15 - 2019.6.15 正式复习开始了,在这段时间里,开始大量复习计算机网络、Linux、数据库(MySQL, Redis)的知识,大量总结归纳。同时呢,也开始准备一个Java后端的项目:这个项目其实就是叶神的高级项目课https://www.nowcoder.com/courses/semester/senior, 然后边做边学习Spring Boot,Spring,MyBatis这些框架,同时也加深对数据库的理解,并且有意识地开始学习如何优化代码,如何引入设计模式。 在整个项目的学习和准备过程中,我要给大家一个建议:那就是准备校招的时候,其实应该以结果为导向,以实战为线索,在实战中,在项目中去应用自己学习过的知识,同时学习新的知识,通过迭代来将知识、能力以及思维逐渐形成一个体系:知识-思维-能力-案例 四位一体的体系。 2019.6.16 - 2019.7.15 这段时间里,最重要的事情莫过于算法了,在这段时间里,主要的工作就是看算法相关的书籍,了解算法基础知识,然后开始刷题,加深理解。 在学习算法的过程中,其实,也一直接着做Java后端的项目;同时呢,还在深入的学习JVM, 学习设计模式。 2019.7.16 - 2019.8.8 这段时间呢,主要完成Java后端的项目,同时,伴随着Java多线程、设计模式的学习,然后开始复习计算机网络、Linux、数据库等。 2019.8.9 - 至今 这段时间呢,就开始了大量的笔试,面试。 1.1.4 总结 其实整个校招准备的过程中,就是一个制定计划、执行计划、打破计划、重新制定计划、重新执行计划的循环。在这个过程里,你会被很多乱七八糟的事情打断,你需要不断平衡实验室工作和校招复习之间的准备工作。这里你就需要采取很多策略,去保证你的复习时间和复习质量,同时你也需要采取有效的心态和认知去对待整个过程。 整个校招过程中,你会发现,你的认知和思维会影响你的技术准备、面试发挥,你的技术准备的程度、面试发挥的好坏又会反哺你的认知和思维,整个过程是一个稳定自我,提升自我,然后挑战外在的一个过程。 下面就详细地介绍一下,该如何准备。 1.2 认知思维篇 1.2.1 战略悲观与战术乐观 我在学习过程中,一直有个态度,就是战略悲观与战术乐观。什么意思呢?解释一下: 所谓的战略悲观是指,在整个准备的过程中,心态上,要认识到自己永远都不可能准备完美,永远会有缺失和漏洞,这是很正常的,甚至单纯的一个知识点,以现在的能力,每个人都不可能准备到面面俱到,因此不要苛求自己,不要追求完美***,抓大放小,抓住主要矛盾,解决核心问题,这是很重要的。 所谓的战术乐观是指,一旦要参与战斗,一旦去笔试,去面试,那么你就认为你是准备好的,在这样的情况下,你要明白,你需要做的是发挥出你现有的水平,发挥出你当下的水平就够了,而不是去瞻前顾后,认为自己这也不会,那也没看,不要管那些,你要做的就是自信地去应对每一场笔试,每一场面试,把你会的发挥出来,而且每次战斗都要比上次要进步,那么你的目标就达到了。 因此,在整个校招的准备过程中,你需要做到: 对于整个校招而言,你要保持战略悲观的态度,充分利用每一分每一秒去准备,不要苛求完美,抓住核心知识和技能去准备; 对于每一场笔试或者面试而言,你要保持战术乐观,你要每一场都保持自信,认为你已经准备好了,然后尽情地去发挥,以战养战,不断精进。 整个校招由大大小小多场战斗组成,你要赢的是最后的胜利,而不是某一场的胜利,因此自信地去应对每一场。所谓胜败乃兵家常事,单场的失败只能证明你当下没有准备好,你要做的是查漏补缺,不断精进,迎接下一场战斗。其实,当你参加一定场次之后就会发现,哎呀,原来套路是一样的,那个时候你就可以开始收割了。 记住:战略悲观与战术乐观。做一个长远有野心,当下有信心,事后有决心,正确认识成败,立足长远的求职者。 1.2.2 自由与平等 我在面试的过程中,保持的态度是自由与平等,什么意思呢?解释一下: 所谓的自由与平等,指的是面试者和面试官之间是平等的,面试者与面试的公司之间是平等的,没有任何的等级之分,这里的自由与平等,既指个人尊严与人格的平等,也指面试者和公司之间的选择平等,双方没有任何的权力和资格去藐视和歧视对方。这个非常重要。 面试者在参加面试的时候,需要保有自由与平等的态度,要做事先做人,要认识到你与面试官之间是平等的,首先保持你自己的人格尊严,然后再考虑面试,因此你没有必要对面试官卑躬屈膝,低声下气,没有必要惧怕对方,没有必要去紧张,见面了,一声干净利落地“老师好”或者“面试官好”,然后一字一句的清晰地去与面试官交流你的观点和主张,这个非常的重要。不要因为一个面试而丢掉了自己的骨气,这远比你面试本身更重要。 既然是自由平等的,那么面试者与公司之间的选择也自然是自由平等的,有时候,你可能会发现自己明明准备的很好,面试交流的也很好,但是就是被挂了,为啥?只能说明你的面试不符合这个公司的招聘标准,只能说明公司认为你不合适,不能说明你不行,或者你的方向选择是错的,尤其不能说明你的智商有问题,你要做的是,心里淘汰掉这家公司,然后接着下一家。 记住:自由与平等。做一个自信,大方,自尊,平等的求职者。 1.2.4 胜而后战 是故胜兵先胜而后求战,败兵先战而后求胜。 - 《孙子兵法·形篇》 这句话是说,两军交战,胜利的队伍在战斗之前就已经做了充分的准备,胜利是准备好的结果。 这句话其实很好地说明了,整个校招,若想取得好的结果,其实得早点开始准备,尽全力地早点开始准备,要明白,开始准备的早,不一定结果就好,但是准备的晚,大概率是很难取得自己满意的结果的。 孙子有云,“凡战者,以正为合,以奇为胜”。这句话是说,作战,先要把正面的兵排好,要排的不偏斜,合乎法则,这叫正;如果此时你还有多余的兵力,你就赢了,这叫以奇(ji)为胜。 这句话其实很好地说明了,整个校招其实不止你自己要复习地好,你要复习地好到干掉和你竞争同一个岗位的人,那么你就应该比你的同行多做准备,不仅要充分的准备,而且要额外的准备。 曾国藩,一代文人,但是在打仗上确实甚为了得,为啥呢?因为老爷子喜欢“结硬寨,打呆仗”。老爷子打仗的时候,大部分时间,都在挖沟,基本上他参加的战场,都是沟壑纵横。他先用结硬寨的方式把敌人围起来,限制敌人的行动能力,使自己利于不败之地,然后再徐徐图之,以求胜利。 曾老爷子这个方式,其实也正是我们校招的方式,应对每一场面试,我们要做的就是掌握核心知识点,尽最大努力,做尽可能充分地准备,使自己在专业能力上立于不必之地,然后徐徐图谋更好的待遇。 记住:凡战者,以正为合,以奇为胜。以结硬寨,打呆仗的方式去尽可能充分地准备校招(其实有时候也意味着尽可能早的去准备),确保自己在能力上能立于不败之地,那么剩下的就是尽情发挥,然后收割校招的胜利果实了。因此,做一个用笨办法踏实复习的求职者。 1.2.5 军团作战 校招,其实不是一个人的战斗。 整个校招过程中,信息海量,一个人很难兼顾到所有的情形,例如你无法关注到所有公司的求职信息,你无法了解到所有公司的情况,因此你需要找一群小伙伴,一起去奋斗。 所谓军团作战,就是指,找一群志同道合的小伙伴,组成学习同盟,互相交流学习,互相沟通经验,互相共享求职信息,攻守相伴。这样的团结互助其实不止体现在信息上、能力上,更体现在学习过程中,相互之间的心理的支持和关心上,这些都很重要,大大提高了校招的效率和成功率。 记住:军团作战。提高准备效率,做一个团结合作的求职者。 1.2.6 提前准备 所谓的提前准备,是指: 提前进行技术准备 提前进行秋招(一定不要错过提前批,2019最早的提前批6月底就开始了) 一定要注意,提前批的难度和正式秋招的难度是有区别的: 很多公司提前批都免笔试,这会省去不少时间 很多公司的提前批,面试难度并不高,并没有正式秋招高 提前批hc充足,有大量试错机会或者说练习面试的机会,这个非常值钱 提前批相当于给秋招了2次机会,这样话,即使提前批过不了,秋招也可以再试一次(看再多面经也不如自己亲身体验一次要感受的深嘛) 很多公司,提前批可能意味着sp,ssp(华为除外) 说明: 这里需要区别一些名词:提前批 vs 内推 vs 校招 校招:校招就是每个公司都有的完整的招聘流程,简历筛选、笔试、面试一个不少 提前批:很多公司的提前批是独立的,是当年第一批次的招聘,可能免去简历筛选,笔试 内推:很多公司的内推是独立的,可能免去简历筛选,笔试;但是有些公司内推和提前批是重叠的,也有些公司的内推和校招是重叠的,一定要注意。 注:一定要看内推和提前批对校招是否有影响,例如: 是否参加内推或者提前批,就不能参加校招,例如唯品会 是否参加内推或者提前批,校招就需要换岗位甚至换部门,例如网易 简历筛选 vs 免笔试 简历筛选:很多好学校的同学觉得简历筛选只是对学校不太好的同学有用,对自己没有,但是其实不是,例如银行(国有和商业银行)就会筛选,有些好学校的同学有时候会发现连笔试的机会都没有,而一些相对不太好的学校的同学拿到了笔试机会,其实是因为有些同学是内推的,免掉了简历筛选。现在简历筛选越来越玄学了,所以免掉简历筛选其实很重要 免笔试:相对而言免笔试对大家影响并没有那么大,但是免笔试有个很大的好处,就是加快面试流程。 1.3 专业技术篇 1.3.0 概述 目标:介绍Java后端开发相关的知识点 认知准备:胜而后战 (见1.2.4节) 说明:这部分内容是必须掌握的内容,鉴于水平所限,可能不是很全面,仅做参考。 建议: (1)复习的过程中,做复习笔记,最好是记录在云端,这样的话,可以随时复习,例如面试等待中复习; (2)当知识复习完一遍之后,就可以对照着面经去复习准备了,记住先搞熟核心知识,再去搞其他边缘的知识; (3)复习过程中,一定要注意不仅要了解知识,还要主动思考,去思考知识背后的逻辑以及设计的意图 注: vs 表示比较的意思 关于专业技术呢,是指你的硬实力,硬实力的考查呢,主要从2个角度进行: 宽度:掌握的知识是否全面 深度:掌握的能力是否深入 宽度在一定程度上决定了你是否能够进入一家公司,深度则决定了你offer的等级。对于bat,甚至更好的公司来说,有时候深度甚至可能决定你是否能够进入这家公司。 1.3.1 专业技术 一门语言(以Java为例) Java核心知识 Java基础 新版本特性 跨平台特性 Java四个基本特性 Object类及其方法实现(尤其是equals() and hashCode()) 基本数据类型与引用数据类型 Exception vs Error finally vs final vs finalize final vs final 四种引用:强引用、软引用、若引用、幻象引用的比较 重载 vs 重写 接口 vs 抽象类 深克隆 vs 浅克隆 String vs StringBuffer vs StringBuilder (底层实现) IO vs NIO vs AIO 反射与动态*** 序列化与反序列化(底层实现) 集合框架 (应用及源码分析) 集合框架的设计与所有的继承关系 Vector vs ArrayList vs LinkedList HashTable vs HashMap vs TreeMap HashTable vs HashMap vs ConcurrentHashMap HashSet vs TreeSet 并发与多线程(应用及底层实现) 线程的创建方式 多线程应用场景 线程状态与转换 线程安全与同步机制:volatile vs synchronized vs Lock(ReentrantLock) volatile底层原理 synchronized底层原理及其锁的升级与降级 Lock(ReentrantLock)底层原理 ThreadLocal 线程通信 线程池(底层实现) 死锁的出现场景、定位以及修复 CAS 与 Atomic*类型实现原理 AQS:并发包基础技术 Java并发包(java.util.concurrent及其子包)提供的并发工具类 比synchronized更加高级的各种同步结构,如:Semaphore,CyclicBarrier, CountDownLatch 各种线程安全的容器(主要有四类:Queue,List,Set,Map),如:ConcurrentHashMap,ConcurrentSkipListMap,CopyOnWriteArrayList 各种并发队列的实现,如各种BlockingQueue的实现(ArrayBlockingQueue, LinkedBlockingQueue, SynchorousQueue, PriorityBlockingQueue,DelayQueue,LinkedTranferQueue)等。 Executor框架与线程池 JVM JVM运行时数据区域 vs Java内存模型 (这2不一样!!!) Java内存模型与happen-before原则 内存泄露、内存溢出以及栈溢出 JVM类加载机制及其作用与对象的初始化 JVM垃圾回收 如何判断对象已经死亡?引用计数法 vs 可达性分析 如何回收对象?垃圾收集算法 Minor GC vs Full GC 常用的垃圾收集器及其特点 内存分配与回收策略 GC调优 GC调优的思路 JVM常用参数 基于JDK命令行工具监控Java进程, 如 jps,jinfo,jstat,jmap,jstack 基于图形化工具监控Java进程,如MAT(Memory Analyzer),VisualVM,Btrace 面向对象与设计模式(了解常用设计模式及其应用场景、示例) 面向对象的六个基本原则 单例模式(手撕各种单例模式) 工厂模式(Spring的BeanFactory,ApplicationContext)vs.抽象工厂模式 构造器模式(应用场景:解决构造复杂对象的麻烦。复杂:需要输入的参数的组合较多) ***模式(Spring AOP(动态***模式:2种实现方式,即jdk & 字节码方式)) 装饰器模式(应用场景:若想对一个类从不同角度进行功能扩展,例如java.io中,InputStream是一个抽象类,标准类库中提供了FileInputStream\ByteArrayInputStream等各种不同的子类,分别从不同角度对InputStream进行了功能扩展。这些不同的实现类其构造函数的输入均为InputStream(的实现类),然后对InputStream添加不同层次的逻辑,从而实现不同的功能,这就是装饰。) 观察者模式(各种事件***) 策略模式(比较器Comparator) 迭代器模式(ArrayList等集合框架中的迭代器) 生产者消费者模式(消息队列)要能手撕 ...还有很多,但是掌握这些基本上够了 数据结构与算法 时间复杂度和空间复杂度分析 常用的数据结构及其特点 数组 vs 链表 队列 vs 栈 跳表(Redis利用跳表实现有序集合Sorted Set) 散列表 堆与优先级队列 二叉树:普通二叉树 vs 二叉查找树 vs 平衡二叉树(AVL)vs 红黑树 (vs 哈夫曼树) 多叉树:B-Tree vs B+Tree vs B*Tree / Trie Tree B+Tree: MySQL索引数据结构 Trie Tree: 实现敏感词过滤算法; 实现搜索引擎的关键词提示功能 图:考数据结构不多,主要考2个最短路径优先算法 常用算法 各种排序算法:内部排序+外部排序(https://blog.csdn.net/hguisu/article/details/7776068/) 需要手撕:冒泡、插入、堆排、归并、快排(2路快排+3路快排+随机枢值) 大数据排序:外部排序 各种查找算法: 二分查找算法及其变种 二叉查找树的查找 利用快排查找 ... 常用的遍历算法 BFS vs DFS Morris遍历 常用的Hash算法 一致性哈希 布隆过滤器 贪心算法 分治算法 回溯算法 动态规划 海量数据处理算法 bitmap算法 布隆过滤器 https://blog.csdn.net/v_july_v/article/details/6279498 其他算法: LRU算法 KMP算法 Manacher算法(面试问过1次) BFPRT算法 常见的手撕代码问题 《剑指offer》的问题 后续搜集补充。。。 计算机网络 OSI七层模型 vs. TCP/IP 五层模型(有时候也说四层)及及各层协议 给定一个网址,访问这个网址经过了那些过程?涉及哪些协议? HTTP and HTTPS HTTP报文格式 HTTP方法及相互区别 HTTP的无状态 HTTP状态码 HTTP 1.0 vs 1.1 vs 2.0 HTTP vs HTTPS HTTP安全性 HTTP底层协作协议(如传输层为TCP协议) TCP and UDP TCP vs UDP TCP如何保证可靠传输? TCP的三次握手和四次挥手及其原因 TCP的流量控制与滑动窗口 TCP的拥塞控制与拥塞窗口 TCP的拆包粘包 关于TCP协议非常好的2篇文章: https://coolshell.cn/articles/11564.html https://coolshell.cn/articles/11609.html RPC协议(经常和Dubbo一起问) Socket编程 异步IO多路复用:select poll epoll OS 内核态 vs 用户态 进程 vs 线程 进程调度算法 进程间通信的几种方式 OS死锁相关的问题 什么是死锁?哲学家就餐问题 死锁的必要条件 死锁的应对方法 死锁的检测与恢复 死锁的动态避免:银行家算法 死锁的静态防止:破坏死锁的必要条件之一 段页式内存管理 页面置换算法 磁盘调度算法 Linux系统常用的命令有哪些?是否会Shell,Python? 数据库MySQL 数据库范式 数据库事务 什么是事务? 事务特性:ACID 事务隔离级别以及脏读、不可重复读、幻读 分布式事务 数据库索引 索引的应用场景 索引特点 索引的优点和缺点 索引的分类 索引选择原则 索引的优化 索引失效 索引的底层实现(B-Tree vs B+Tree) 对于建立索引的列,数据均匀分布好还是不均匀好? 数据库的锁 行锁 vs 表锁 读锁 vs 写锁 乐观锁 vs 悲观锁以及如何实现?(MVCC) 加锁的方式 分布式锁 数据库存储引擎比较 InnoDB MyISAM Memory MySQL连接池对比 MySQL命令 JOIN的执行计划? 数据库分库分表 主从复制 数据库Redis 为什么使用Redis? Redis的优点与缺点 Redis的数据类型、底层实现以及各种数据类型的使用场景 Redis是单线程吗?单线程的Redis为啥这么快? Redis持久化的方式 谈谈Redis的过期策略以及内存淘汰机制 如何解决Redis和和数据库双写一致性的问题? 如何应对缓存穿透与缓存雪崩的问题? 如何解决Redis的并发竞争Key问题 Web与常见框架 Servlet的生命周期(问的很少) Cookie vs Session 分布式Session Spring相关(应用与源码分析) 看过Spring的源码吗? IOC应用及原理 AOP应用及原理 事务 Spring涉及的设计模式 谈谈Spring Bean的生命周期和作用域 Spring MVC的工作原理 Spring vs Spring MVC Spring vs Spring Boot 了解微服务,Spring Cloud Netty (网络框架) Dubbo 分布式架构 服务调度,涉及服务发现、配置管理、弹性伸缩、故障恢复等 资源调度,涉及对底层资源的调度使用,如计算资源、网络资源和存储资源等。 流量调度,涉及路由、负载均衡、流控、熔断等。 数据调度,涉及数据复本、数据一致性、分布式事务、分库、分表等 容错处理,涉及隔离、幂等、重试、业务补偿、异步、降级等。 自动化运维,涉及持续集成、持续部署、全栈监控、调用链跟踪等。 项目 准备项目对于秋招而言是非常重要的,为啥呢? 加深对所学知识的理解,将知识转换为能力 证明你的学习能力和实践能力 项目可以在一定程度上,将面试官的问题引导到一定范围内,例如在面试的时候,一般情况下,项目会最开始介绍,在介绍项目的时候,你就可以以你熟悉的内容,不断引申,就像是多米诺骨牌一样,一直延续下去。这样就有可能避免面试官深挖基础,问到你没有准备过的东西。 如何准备项目呢?我以我准备的Java后端项目为例说明,即叶神的高级项目课:https://www.nowcoder.com/courses/semester/senior 明确这个项目的需求与解决的问题 明确这个项目的结构与组成 明确这个项目涉及的技术栈 完成这个项目的基本功能 在完成的过程中,总结归纳 总结归纳业务知识,例如如何实现系统的登陆和注册功能,如何实现点赞功能 总结技术栈的相关知识与应用场景,例如Spring, Spring Boot, MyBatis, MySQL, Redis 总结几个你认为做的非常好的点,例如利用Redis实现一个异步处理框架 总结项目中出现的问题以及解决方式,例如响应时间过长,你是如何解决的? 总结如何扩展系统,例如如何扩展系统的业务功能(添加后台管理模块等) 总结如何提升系统性能,例如如何处理缓存,如何提高系统响应 总结如何设计一个系统,例如根据经验如何设计和实现一个秒杀系统? 总结如何进行系统的测试,例如你甚至可以测试驱动开发(TDD) 还有很多总结...这里只是提供一些思路 扩展项目 添加业务模块,例如添加后台管理模块 添加推荐算法,例如给timeline增加推荐能力 公共模块服务化 如果可以的话,将系统上线(非常加分的),这里涉及另外的一些知识点: 项目的版本管理:Git & Github 项目的部署:涉及Linux、服务器 项目的扩展:涉及Nginx与负载均衡 项目的调试与优化:涉及如何在服务器端远程进行调试和优化,例如jmeter进行远程调试系统 项目的服务化与分布式架构:微服务,例如如何将项目从单体应用扩展为分布式应用,如何将常用模块或者固定模块变成一个个服务 还有很多知识点...这里知识提供一些丝 实习 关于实习,我没有去实习过,因为实验室老板不让去,我会结合去实习的同学谈谈实习的建议(大佬绕行): 一切为秋招服务,无论前面准备项目还是去实习,一定要明确实习的目的是为了更好的服务于秋招,当然了提高技术是必然的。 选择大厂去实习,小厂的实习含金量不高。(对于秋招而言) 实习时间不要与秋招冲突。尽量选择春招的时候去实习,或者越早越好,因为一旦实习时间和秋招冲突,那么可能会错过很多秋招机会。 若实习时发现学不到什么技术,并且影响到了秋招,立马离职,准备秋招。 若实习与秋招时间重叠,实习过程中,做好两手准备:(1)实习转正;(2)准备秋招。因为转正的周期一般都比较长,一旦转正失败,那么也会错过很多秋招的机会。 1.4 面试技巧篇 1.4.1 形象和谈吐篇 面试过程很短,对于一个人的认识和了解也很有限。那么如果你的技能一般的话,就需要加强形象和谈吐了。所谓实力不够,形象来凑。 形象方面,最好穿工作便装,休闲的也可以,但是要干净、整洁,不要有异味、不要邋遢(刮胡子,梳头发,熨衣服,这些都很重要)。尤其是HR面,基本上都是小姐姐,不要吓到她们。 另外,保持微笑,表现得热情、开朗和幽默非常重要。每个人都喜欢积极乐观向上的人。交谈的时候,不要挤牙膏,别人问一句你答一句,要直接把前因后果都讲清楚。最好能够以讲故事的心态分享你的故事,尤其是hr面,最好能够把hr妹子逗笑,但是切记不要撩。 说话的时候,要看着对方,一方面,这是对对方的尊重和礼貌,另一方面,这也是一种自信。就算没有回答好,也不要低着头,不要像做错事情一样。万一碰到有说不清楚的内容,不要犹豫,直接上图。对于比较复杂的或者面试官听不懂的问题,一定要换个思路表达。 1.4.2 心态篇 面试的时候,你要保持一个自信的心态,无论你准备的到位与不到位 面试的时候,紧张是正常的,但是你要通过前面的自我介绍(如果没有自我介绍的话,前几个问题回答慢一点)的时间来调整自己的紧张 注:详细的心态管理见1.2 认知思维篇 1.4.3 面试技术篇 Checklist(简称cl) 在整个秋招面试过程中,最好能够准备一个checklist, 这个cl是用来在你面试前进行模拟面试的,那么cl包含哪些内容: 自我介绍 项目介绍 技术知识点 非技术知识点 以下详细介绍这几个方面: 自我介绍 在自我介绍的时候,除了介绍你自己的基本情况外,直接明了的提出你擅长的技术栈是一个很好的技巧,为什么这么做呢?因为这会给面试官一个先入为主的印象,会给面试官心里种下一个种子,潜意识认为你对这一块知识比较了解,那么后面问到这一块知识的概率就会变大;同时呢,后面万一他问到那些不会的内容,你也可以拉面试官到你擅长的技术栈,由于前面已经埋下了伏笔,因此后面面试官大概率上是容易接受你的转换的。 注:有时候hr面的自我介绍和技术面的自我介绍不同,会产生不一样的效果 项目介绍 项目介绍除了介绍项目的目的,解决的问题,设计的思想以及整体结构,更重要的是提出你在项目中的亮点以及项目中你擅长的技术栈,这会在一定程度上引导面试官去对你这些内容发问 技术知识点 每次面试前,都应该有针对性地深化一部分知识点,这部分知识点要么来自于你要面试的这家公司的面经,要么来自于你计划中要解决的知识点,力求做到每次面试都拿下一部分知识点,将比较复杂的问题化整为零,然后再总结归纳,这会有效的降低你记忆的难度 非技术知识点 非技术知识点主要是针对hr面试中可能出现的问题的,一般hr面就那些问题,因此这个准备非常好准备 模拟面试 面试和你的笔试一样,笔试需要做大量的题目去模拟,那么面试也必然是的。那么如何进行面试的模拟呢? 准备CheckList 根据CheckList, 进行自我介绍,然后将你自我介绍的过程用视频录下来或者语音录下来,然后去分析你哪些地方有问题,作为面试完之后的分析依据,根据面试情况,去修正你的自我介绍 根据CheckList, 进行项目介绍以及项目分析,然后将你自我介绍的过程用视频录下来或者语音录下来,然后去分析你哪些地方有问题,作为面试完之后的分析依据,根据面试情况,去修正你的项目介绍,尤其是项目中涉及的知识点以及技术栈,你是否理解到位了,你会做,那么你是否能够讲清楚,如果讲不清楚问题在哪里? 你也可以请你的同学或者朋友充当面试官的角色,让他按照你的CheckList去对你进行提问,看你是否能够给一个没有做过这个项目的人将项目讲清楚,如果可以说明你真正理解了,这样就可以给你面试有一个参考。 注意: 面试开始前,给面试官一个微笑,简单大方地问好:“面试官好”或者“老师好”,然后双手将简历(或者所需材料)递给面试官 面试结束后,给面试官一个微笑,简单大方地对面试官表达感谢:“谢谢您,再见”,然后带着自己的东西离场。 面试过程中, 当面试官提出问题时,一定不要着急回答,而是思考清楚面试官的问题之后,再回答问题;如果不确定面试官的问题,那么你需要不断询问面试官,确定题目的具体意思,当你确定意思之后,再认真回答问题。回答问题的时候,你要一步到位,直接给出充足的细节,将问题的前因后果全部描述清楚,不要等着面试官追问,那样的话,你会变得非常的被动。讲的时候,要条理清楚,问题的来源、解决方案、演进过程,都要利索地讲清楚。 当面试官问到的问题,你是不懂的,那么你应该向面试官提出你不是很懂这个问题:“不好意思,这个问题我不是记的很清楚了(或者不好意思,这个问题我没有接触过,我不是很懂)”,问他是否可以给出提示,如果可以在给出提示的情况下答出问题,体现的则是你的思考和逻辑能力;若面试官无法给出提示,那么你直接告诉面试官你不懂这个问题,但是你懂另外一个相关的知识点,是否可以给他介绍?如果可以,你接着介绍这个相关知识点;如果不可以,那就请求面试官是否可以进入下一个话题。在这里再强调一下,有时候,面试官并不期待你能在很短的时间内解决这个难题,他只是想看你遇到难题的时候的态度和思维方式以及应变能力。如果你能证明给面试官看,你解决问题的方向和方法是正确的,即使不是正确答案,也很不错。如果最后没有答上来,最后可以和面试官要个联系方式(邮箱或者微信),回去后努力搞懂,然后举一反三,写篇文章发给面试官,有时候会让你起死回生的。 当面试官对你提示的时候,请记住,当你回答问题结束之后,你需要对面试官表达感谢,感谢他的提示。 面试过程中,如果是hr面,那么你需要表达出你的忠诚、坚持、责任、荣誉、毅力、稳定、对自己正确的认识等,至于具体的套路,我这里就暂时不说了,如果后期需要了解的同学比较多的话,我可再补充。 1.5 学习资料篇 Java Java核心知识 入门:《Head First Java》 进阶:《Java编程思想》、《Effective Java》 JVM 《深入理解Java虚拟机》 Java并发与多线程 面试:《Java并发编程的艺术》(适合在时间紧张的时候,准备面试) 进阶:《Java并发编程实战》(想深入学习,用这本) 面向对象与设计模式 《Head First 设计模式》 马士兵的设计模式 数据结构与算法 入门:《大话数据结构》 进阶:《算法·第四版》 手撕代码: 《剑指offer》https://www.nowcoder.com/ta/coding-interviews 《程序员代码面试指南》左神 (时间紧,可以直接看书) 不想看书的,可以直接看左神的视频: 基础:https://www.nowcoder.com/courses/semester/algorithm-elementary 进阶:https://www.nowcoder.com/courses/semester/algorithm-senior leetcode(有时间一定要刷) 海量数据处理: 《编程珠玑》 https://blog.csdn.net/v_july_v/article/details/6279498 动态规划:https://www.geeksforgeeks.org/top-20-dynamic-programming-interview-questions/ 计算机网络 入门: 《图解TCP/IP》 《图解HTTP》 进阶:《TCP/IP详解·卷1》或者《计算机网络:自顶向下方法(原书第6版)》(看一本即可) OS 入门:《Operating Systems: Three Easy Pieces》(讲的非常好,只有英文版) 进阶:《深入理解计算机系统》 视频:http://www.xuetangx.com/courses/course-v1:TsinghuaX+30240243X+sp/about Linux 《鸟哥的linux私房菜》 视频:https://pan.baidu.com/s/1hx2as373BZlAKtKonn5u1g 数据库MySQL 入门:《MySQL必知必会》 进阶: 《MySQL技术内幕 Innodb存储引擎》 《高性能MySQL》(这本更好,不过有点难) 数据库Redis 《Redis设计与实现》 Web与常见框架(框架这部分,我认为通过官网直接上手实战,然后再去分析其源码) 《深入分析JavaWeb技术内幕》 Spring/ Spring Boot/ Spring Cloud: 官网:https://spring.io/ 应用:《Spring4.x 企业级应用开发实战》 Spring源码 《Spring技术内幕》(这本写的太好了) MyBatis 官网:http://www.mybatis.org/mybatis-3/ 博客:https://blog.csdn.net/nmgrd/article/details/54608702 Netty 官网:https://netty.io/ Dubbo 官网:http://dubbo.apache.org/en-us/ 分布式架构 System Design Primer:目前这个仓库收集到了好些系统架构和设计的基本方法。其中包括 CAP理论 一致性模型 可用性模式 DNS CDN 负载均衡 反向*** 应用层的微服务和服务发现 关系型数据库和NoSQL 缓存 异步通讯 安全等 项目 《大型网站技术架构·核心原理与案例分析》 叶神高级项目课:https://www.nowcoder.com/courses/semester/senior Git& Github https://www.nowcoder.com/courses/2 注:暂时列出这么多,有空了补充吧。 二. 面经 2.0 概述 此部分面经均为现在回忆所写,可能略有缺失,仅供参考 鉴于bat、网易面经太多就不写了,但是所涉及面试内容将会在本文后面章节以知识点形式给出。 2.1 中国银联 中国银联我必须从笔试开始说起,为什么要从笔试开始说起呢? 答曰:重要,非常重要。有些同学会发现面试都很好为啥最后挂了呢,有部分原因就是因为笔试成绩不如别人 中国银联的录取,不仅要看你的学校,更要看你的能力,它录取的时候呢,就会将你的笔试成绩群面成绩以及技术面的成绩全部计算在内,最后加权得分,然后择优录取。因此笔试很重要。确切讲,每一个考试都很重要,笔试、群面、还有后面的技术面都很重要。挂掉一场意味着都挂了,或者说只要有一场分数很低,也可能被淘汰。 2.1.1 笔试 【题目】中国银联的笔试非常类似于公***,主要包含以下内容: 行测:数学计算 逻辑判断 言语理解 图形推理 专业知识: 金融 经济 财会 管理 法律 银联常识 英语:阅读理解 专业知识:Java相关基础知识 【解决方案】准备银联的笔试,确实非一人之力,所以大家懂得...,分数越高越好。 2.1.2 群面(30min) 【题目】 主题:疫苗问题 流程: 5分钟阅读材料,总结归纳观点 1分钟个人陈述观点+自我介绍 15分钟组内讨论 3分钟最终发言 【解决方案】 解决这样的群面问题呢,不能蛮干,应该有套路。 1分钟回答: 阅读问题,带着后面的问题阅读材料,然后迅速整理出材料结构,总结1分钟陈述的回答。要注意这个1分钟回答,只需要回答主干就行了,不需要细节,因为根本说不完; 15分钟讨论过程: 15分钟讨论过程中,一定不要起内讧(一旦内讧,基本上你的群面分数不会很高,而我说了),而是在一个人的带领下,将问题主题确定,然后围绕问题主题快速提出一组主要答案,然后围绕这个主要答案进行总结调整,15分钟看着很长其实很短,所以一定要注意时间。 在15分钟讨论过程中,不要为了回答问题而回答问题,一定要抓住重点,确保自己有1~2次的有效回答,要么是总结性回答,要么是补充性回答,这个很重要,切记不要胡说八道。 在15分钟讨论过程中,发言的时候,如果没有思路,可以考虑一下:要么从整体入手去回答整个问题,要么从细节入手去深化问题,这是2个不错的策略,要么体现你的总结能力,要么体现你的思考能力。 最后的总结陈述: 整个是由组内选出1人进行总结陈述,整个总结陈述其实是高风险高收益的,要么总结的非常好,高分,要么总结的非常差,出局,所以慎重对待。 2.1.3 技术面(20min) 【题目】 项目,你觉得你的项目的亮点是什么?为啥采用这样的加密方式?有没有框架实现这样的加密? 谈谈反射?反射能干嘛?反射安全吗?反射的坏处是什么?知道反射是怎么实现的嘛? 线程池了解吗?线程池的好处是什么? 数据库知道哪些?详细谈谈?现场给题目,直接手撕sql,3道题。 Linux系统知道哪些?详细谈谈?用过Linux命令吗?知道哪些?详细说说? Spring知道哪些?详细谈谈?动态***模式是怎么玩儿的?给我们详细讲讲 Spring Boot和Spring有啥区别? 你平时都怎么学习的? 你有没有自己的博客? 你的期望薪资是什么? 你有什么想问的吗? 其他问题。这里问了很多问题,当时第一次参加技术面试,很多都不会,大概70%都不会,当然也可能是压力面,总之最后过了。 (1)关于银联录取的分数计算: goal = a * 笔试分数 + b * 群面分数 + c * 技术面分数,其中,a, b, c为系数 因此,每一场都很重要。 注:此计算方式来源于面试官 (2)关于录用流程: 中国银联的录用流程确实挺慢,从8月9号面试完,到今天(9月30日)正式收到录用offer,其实确实挺漫长的,虽然漫长,但是整个过程中,银联的hr部门还是一直在推进,可能整个过程中,由于他的hr人太少,通知的确实是太慢,不可否认,但是整个流程还可以。比较规范。 (3)关于体检: 中国银联的体检相对而言比较严格,但是主要还是看你是否生有大病,这是银行主要检查的内容,即使收到复检通知,只要不是大病,可以和医生沟通一下,写成合格,也可以拿到offer。 2.2 顺丰科技 2.2.1 技术面 手撕代码:计算n + (n-1) + ... + 2 + 1 要求:递归计算 问题1:你的递归有没有问题? 要求考虑返回值为long型的情况 问题2:你觉得这样的递归可能产生什么样的问题? 问题3:你觉得如何处理上述的问题? 问题4:若存在这样的一种情况:递归调用这个计算的时候,计算n的时候,不会出现栈溢出,但是计算n+1的时候出现栈溢出,那么若有2个线程一起调用这个递归,会出现什么状况呢? 代码题 关于sychonronized、 notify()、 notifyAll()、wait()的问题,涉及线程同步,线程通信相关的代码执行顺序以及多线程执行情况。(具体题目我忘了) (1)若多个线程以字符串“a”作为锁,即synchronized("a"),请问这个锁是一个锁吗?为什么? (2)调用wait()的时候,调用线程是否还持有这个锁?为什么? (3)调用notify()的时候,调用线程发生了什么?为什么?调用wait()的线程发生了什么?为什么? (4)调用notifyAll()的时候,调用线程发生了什么?为什么?调用wait()的线程发生了什么?为什么? 智力题 甲地有小球A,乙地有小球B,现在A向乙地以2m/s的速度前进,B向甲地以1m/s的速度前进,在2者前进的过程中,A每次碰到B都要返回甲地,然后向着乙地前进,接着碰到之后再返回,循环往复,而B球则一直向着甲地前进,直到B球到达甲地。 (1)A最终走了多少路程? (2)A最终碰到B球时单程总共走了多少路程? (3)A最终碰了多少次B球?请求出其公式。 项目 谈谈反射?知道反射是怎么实现的嘛?反射能获得方法的注解吗?为啥?能不能举个例子? Spring知道什么?源码看过没?谈谈。 谈谈你知道的设计模式 Spring Boot的源码看过没?谈谈。知道微服务吗?谈谈你对微服务的认识? 数据库了解什么?谈谈数据库索引? 知道Cookie和Session的区别吗?你项目有用到Session吗?怎么用的? 你觉得Redis在项目中使用的时候有没有什么风险? list 和 set的差别 hashmap了解不?谈谈。 put怎么做的? 为啥要设计成数组+链表? 是否直接用hashCode确定桶的位置?如果不是是用的啥?请写出公式。 equals()和hashCode()有啥区别?二者重写有啥规则?为啥要约定这样的规则? get怎么做的? rehash是为了什么? 树化是为了什么? 你的思维能力非常强,但是你的知识深度不够,给你四分钟,讲一个能够你的牛逼之处,如果能征服我,我就让你过。 其他问题忘了。。。。 2.2.2 hr面 自我介绍 项目介绍 实验室导师的项目 你实验室的项目及研究方向和工作方向不一样?为啥?为啥要换成Java开发? 你觉得你和计算机科班出身,有何优势?(这是个很好的加分问题,有机会分析如何答这个问题) 你为啥想去深圳工作? 你有女朋友吗?(这是个很好的加分问题,有机会分析一下如何回答整个问题) 你自学Java是如何学习的?为啥你用Java找工作?而不是用你熟悉的C++? 谈一个你最大的优点和你最大的缺点?(这是个很好的加分问题,有机会分析一下如何回答整个问题) 你觉得为啥我们要你? 2.3 VIVO 2.3.1 技术面 注:C++工程师面试的 懂C++吗?答不懂。你觉得C++和Java有啥差别? C++的对象回收和Java的对象回收有何差别?说一下二者的机制。 C++的编译过程和Java的类加载过程有何联系?详细谈谈。 你知道为啥一个应用有4G,但是机器内存只有2G,为啥这个应用可以跑起来?原理是啥?详细谈谈其机制。 进程和线程了解吗?详细谈谈。 TCP UDP协议了解吗? 二者有何区别?应用场景是啥?为啥TCP是可靠地? TCP三次握手四次挥手,画出整个过程并解释,为啥不是2次或者4次握手?为啥要4次挥手? 谈谈TCP的流量控制 谈谈TCP的拥塞控制 谈谈项目 手撕代码,题目忘了(leetcode上的) 有啥想问的? 2.3.2 hr面 自我介绍 项目介绍 为啥想到杭州 谈谈你最大的缺点和最大的优点。请举例说明 你想去的目标城市是哪里?为啥想去?为啥不想去其他地方?如果换的话想去哪里?(我说我就想去杭州,结果给我整南京去了,我说能否用sp换一个深圳,答曰不能。。。) 你有女朋友吗?你去外地工作了?她怎么办? 介绍一下你的家庭情况 你有啥想问的? 2.4 海康威视 2.4.1 技术面 项目 手撕sql: (1) 给了一个数据库的题目,然后让写出查询语句(涉及 select from where group by having like order by) (2) 进一步多表联查 (3) MySQL索引,包括但不限于分类,区别,数据结构(B B+的比较和插入删除的*作演示) (4) MySQL失效的情况,并举例说明(例如like "%x"这样的会索引失效) 给你一个视频监控系统,你如何考虑这个系统设计? (1)请画出你的设计图,然后解释说明 (2)提出其中用到的技术手段以及可能存在的问题 (3)如何提高这个系统的性能 (4)如何判定这个系统是一个稳健的系统,或者说如何保证这个系统的稳定性? 详细谈谈TCP/IP协议族,包括但不限于以下内容: TCP UDP协议了解吗? 二者有何区别?应用场景是啥?为啥TCP是可靠地? TCP三次握手四次挥手,画出整个过程并解释,为啥不是2次或者4次握手?为啥要4次挥手? 谈谈TCP的流量控制 谈谈TCP的拥塞控制 知道jsonp吗? 会前端吗? 你平时怎么学习? 了解blockingqueue吗?详细说说。 了解线程池吗?详细说说。 了解GC吗? 手撕代码(题目忘了) 2.4.2 hr面 自我介绍 介绍一下你实验室做的东西? 你为啥做Java开发? 请说出你的三个缺点和三个优点?(我竟然有3个缺点,我怎么不知道呢?最讨厌这个问题啦) 你们实验室项目中,你的角色是什么? 你们团队合作的时候,你一般如何看待合作?如何行事的?你们的分工一般是什么? 既然你是你们团队的leader,那么你是怎么带领一个团队攻克难关的? 有女朋友吗? 你有哪些offer?我有。。。 那你为啥来海康呢?为啥不去其他公司呢?(你说呢?) 你有什么想问我的呢? ps: 小姐姐太漂亮了。。。无比享受的hr面。 2.5 招商银行信用卡中心(信息技术部) 2.5.1 初面(1个多小时) 介绍一下你zhiji 全程怼Java项目 -介绍一下这个项目? -为啥做这个项目? -用了哪些技术? -你自学的技术是哪些? -详细谈谈你对Spring的理解,和Spring Boot有啥区别? -既然谈到了AOP,你在项目中如何使用AOP的,AOP还能有哪些应用? -AOP的原理是什么?有哪些实现的方式? -既然谈到了动态***模式,请谈谈动态***有哪些实现方式?(jdk & 字节码方式) -这2种不同的实现方式中,目标类和***类的关系是? -接着深入的谈谈你了解的其他设计模式?(单例模式 工厂模式 抽象工厂模式 建造者模式 策略模式 装饰器模式 迭代器模式 生产者消费者模式 责任链模式 一口气连原理带例子说完) -既然谈到了生产者消费者模式,请问你项目中是否使用这个模式? -责任链模式如果让你写你会怎么写?(双端链表) -策略模式在Java集合框架中是否有用到?装饰器模式呢? -Redis在项目中怎么用的?为啥这么用?一般Redis的应用场景是什么? -谈谈Redis的数据类型以及应用场景?是否看过其源码? -Redis是单线程的还是多线程的?为啥是单线程的还这么快? -谈谈Redis的过期策略以及内存淘汰机制 -如何解决Redis和和数据库双写一致性的问题? -用户的注册和登陆你是如何解决的? -拦截器是如何使用的? -拦截器和过滤器以及责任链模式有何关系? -谈谈敏感词过滤算法都有哪些?你是如何实现的?优势是什么?为啥这么设计?时间复杂度如何? -你做的站内信是否是实时的?如何做成实时的?有没有思路?或者现在想想? -谈谈你对cookie和session的理解 -谈谈你对token的理解 -谈谈你对分布式session的理解 -谈谈你对微服务框架的理解 -谈谈你对分布式的理解 全程怼实验室项目 -介绍一下这个项目 -解决的场景是什么 -你这个相控阵雷达牛逼呀,给我介绍一下 -你们团队是怎么分工的? -你有什么牛逼的成果? -如果你和你的合作的同学意见出现分歧了如何解决? 你有啥想问的呢? 你平时都怎么学习的呢?有没有写博客?有没有GitHub?经常更新不? 谈谈你了解的数据结构与算法? 面试结束了,你过了,来接着给我介绍一下相控阵雷达 2.5.2 终面 自我介绍一下 介绍一下你的项目 为啥转Java开发呢?你做的是***项目,转到民用,是不是有点大材小用呢? 你如何挑选公司的? 你怎么看待互联网公司与非互联网公司呢? 你是怎么看待自己的? 你最大的优点和最大的缺点是什么? 你最铁的哥们儿是谁? 你有从你的朋友们身上学到了什么? 你交朋友的标准是什么? 你喜欢哪类人?不喜欢哪类人?为什么? 如果你的合作对象或者你的同事是你讨厌的人,你会如何对待他? 你和合作对象或者同事意见发生分歧了,你如何处理? 为什么要来信用卡中心? 你有面过那些公司?有没有对这些公司做过总结和分类呢? 谈3个对你影响最大的人,为什么? 你平时都怎么学习? 你有女朋友吗?你们未来是怎么安排的?你为什么喜欢她?她对你有何影响?(她是另外一个本我,常有相濡以沫之默契,时有不如相忘于江湖之洒脱) 你是如何规划你的未来的? 你觉得你厉害吗?谈谈你认为你最自豪的事情 ps: 很佩服信用卡中心这种说话算话的公司,说7天出结果,绝对不8天出结果,在这里bishi一下某为的sb尿性。。。 2.6 华为 这是一家随机且佛性的公司: 1.面试过不过佛性; 2.发不发offer佛性; 3.什么时候发offer佛性; 4.发不发签约佛性; 5.什么时候发签约佛性; 6.工作岗位佛性; 7.工作地点佛性; 8.工作薪资佛性; 9.你来不来佛性; 10.你去不去佛性; 11.你性格对不对佛性; 12.你是谁佛性; 13.怎么对你佛性。 那么如何应对这家公司呢? 也请你佛系对待这个公司,因为这是一家喜欢唱 无所谓 的公司 得不到,请冷静的对待;得到了,请更加冷静的对待 漫长的等待,等来的可能是希望,更有可能是希望后面伴随的毁灭的绝望。 好,做好这个思想准备之后,开始华为的笔试面试之旅。 首先为啥要介绍华为的笔试呢?因为它不重要。 为啥要介绍华为的面试呢?因为它不重要。 那为啥不重要还要介绍呢? 其实主要是为了介绍上面的佛性***。其次是为了对仗,哈哈哈 好,做好这个思想准备之后,就可以跳过华为的笔试面试经验啦。哈哈哈哈,因为真的不重要。 2.6.1 笔试 【题目】笔试题目=编程1(100分) + 编程2(200分)+编程3(300分) 注:100分就够了,多了浪费(2018年) 2.6.2 业务面 平时都做啥项目了 详细介绍一下你最自豪的项目(Java) 你这个项目是自己做的,导师让你做的项目是啥?你干嘛了?(C++) 接下来咱聊聊基础吧 接下来就是C++和Java的比较,垃圾回收有啥差别,类加载有啥差别 TCP和UDP区别 DHCP底层原理 有没有做过socket编程 你还有啥想问的? 2.6.3 综合面 自我介绍 你做啥项目了?详细讲讲 你为啥会想到做这个项目?目的是啥?用途是啥? 华为有没有其他的亲属或者师兄师姐?有没有问过他们眼中的华为? 数据库用的啥? 你眼中的华为是啥样子的? 你有啥想问的? 回去等通知,2-3天出结果 你还面试哪里了? 好,终于跳过了。。。 2.7 携程 2.7.1 技术1面 详细谈谈Java基类Object类以及其方法 详细谈谈equals()和hashCode() 详细谈谈wait() notify() notifyAll() 详细谈谈final finally finalize的区别 写出单例模式的双检锁形式,序列化以及反序列化以后是否仍然是单例? 手撕代码: -链表中间值 -一个数字中1的个数 ArrayList vs Vector Vs. Linkedlist hashMap vs hashTable vs. concurrentHashMap 线程同步机制:synchoronized vs. ReentrantLock 、volatile -synchoronized底层原理以及锁的升级和降级 -ReentrantLock的底层原理 -synchoronized vs. ReentrantLock -synchoronized vs. volatile -volatile的作用是什么?如何实现的?了解happen-before吗? 线程池原理、参数以及给定实际的场景,然后设计线程池 知道JVM的内存模型和运行时区域吗?分别说一说(注意这里很容易错,二者是不同概念) 平时学校开设哪些课程? 有什么想问的? 2.7.2 技术2面待安排 2.8 虎牙 2.8.1 技术面 new一个对象的过程 cap定理 hashset list vs set lock的底层 http的方法有哪些 线程池底层怎么实现的 threadlocal mysql引擎有哪些 jdk 8的lambda表达式 ps:都答上来了,莫名其妙一面挂了。可能长得丑。哈哈哈哈 2.9 平安科技 2.9.1 技术1面 自我介绍 介绍一下项目 你觉得你的项目会出现什么问题,如果让你现在想,你觉得可能出现什么问题? 第3个问题之后就挂了。 2.10 其他公司 其他公司的面试经验以知识点的形式给出,见1.3.1。
分享
4
先马后看
啪的一下
大连理工大学·2023届

想分享一下我独特的高效刷题法(一个月200题,拿过BAT)

战绩 介绍一下自己 机械专业 非科班 渣硕 擅长搬砖和划水 我和各位一样 我也是21届的 我也在近经历秋招 然后拿到过BATH的offer (字节跳动 阿里巴巴 腾讯 华为) 还有很多正在走流程中 详情见下方 拿到阿里和字节跳动的offer以后应该就会结束秋招 下面我会先讲一下我刷题相关的准备流程 然后具体开讲我总结的刷题法 到底是怎么样的 是不是真的有那么神奇 多的我就不细讲了 详情可以看上篇文章 下面直接开始上干货 陈同学刷题法 关于我的一个前期过程 我对算法的一个学习过程 大致如下 在学完数据结构以后 然后就陆陆续续的开始上牛客开始刷剑指offer 当时效率很低 一天也就两三道题 后面发现了一门网课 是leetcode刷题班 是一个阿里的工程师来讲一些 高频的考察到的leetcode题 感觉很不错 然后就跟着这个课 但是没有看视频 只是看它配套的ppt 然后只挑了一些我觉的合适的题目来练习 感觉他的ppt做的很不错 很多流程做的很清晰 很多看文字题解没看懂的 看他的ppt就看懂了 并且我把剑指offer和这个网课对应的题目 都放到自己做的一个思维导图上面了 总共下来也就不到一百道题 同时在去年的2月的时候 按照不同的分类将这些题 总结在了自己的微信公众号上 感兴趣的朋友可以 到我的微信公众号上 "陈同学在搬砖" 翻一翻往期的"Leetcode面试高频题系列" 或者你如果想要这们网课的资料的话 直接在公众号后台回复 "福利"即可 上述这些工作都是在2020年3月分之前做的 也就是在这么长一段时间里面 我只搞定了不到一百来道题 由此可见一开始并没有投入太高的重视 投入的精力真的很少 这也导致了在2020年3月之前算法真的很差 基本上是属于只要面试出了手撕代码 通过的几率就很低 关于时间的一个整体规划 但是到现在回过头来看 , 我倒是觉得我的策略依然是正确的 因为我觉得前期太早刷过多的算法题的 投入产出比太低 出于以下几点 第一是遗忘问题 , 按照很多人传统的刷法 一天几道的做法 或者最多辅助以按分类的方式 可能几天之后 就会忘记第一天刷的题的解法和思路 第二就是命中问题 他不像计算机基础那一块 我觉得像操作系统 网络 数据库等等这些知识他虽然看起来多 但其实 面试考察是有侧重点的 你看了面经就相当于可以知道考试重点范围在哪 你看的时候心里是有底的 你知道你看的东西是肯定高频率会考的 但是刷题就不一样了 出哪道题完全按照面试官心情 你找不到他的范围在哪 leetcode那么多题 真的要一道一道过一遍 ? 对于这个问题我一开始也很头疼 但是后面很幸运 我按照我摸索的方法 没有进行题海战术 , 自己给自己划定了一个刷题范围 也就200多道题 竟然神奇的押中了面试中80%的手撕算法 这200多道题包含了哪些呢? 后文马上会揭秘 第三 就是 刷题的话 他不像你学习计算机基础和写项目 做实习那样 相比于刷题 这些你去做了 学会了写完了 你立马就能够 写在简历上 能够在面试的时候让面试官看到 也就是你的投入对应的产出是可预期的 但是刷题的话 是不可预期的 有可能你在前期刷了很多 但是后面忘了或者在面试的时候完全没有考到 倒不是完全没有产出 至少你锻炼了自己的算法思维 , 但是相比于前者 同样的投入对应的产出收益是大大折扣的 第四 :非科班问题 对于零基础 非科班 机械专业的我来说 而且还是选择了对新手极其不友好的让人头疼的C++ 开发岗位方向 各种底层的内存 linux内核之类的东西 把我折腾的*** 太多需要补的东西 所以一开始在疯狂的看大部头的经典书籍 各种资料等等 但是这些你看懂了就会有 立杆见影 的效果 只要会了你就可以 写到简历上 在面试中吹比 对比投入产出比更低的刷算法题题 自然是把它们作为优先级更高的选项 这也是我为什么 没有在前期投入太多时间和精力放在算法题上 , 而是主要放在 找实习 写项目 学基础,写博客等等其他这几块 这也导致了我在2020年2月份以前 算法题就是自己的软肋 面试中碰见手撕算法就打怵 手心就冒汗 总之 算法题早早的开始就 投入很多精力猛刷这种方式有他的优点 能够培养你的算法思维 让你熟悉解题思路 但是你必须要承受的几点缺陷就是 特别是对于像我一样非科班零基础的同学来说 他给你会耗费你相当大的精力, 而且不能给你带来明显的产出 产出不可预期 不能保证刷了面试官就会考 考了自己就一定会 关于传统刷题法的缺陷 我有小小的调研了一下 关于刷题好像大家的做法都是大同小异的 好像没有啥太有"创意"的刷题方式 以及好像没有太多方法论在里面 比如一般就是按部就班随机的 或者按照tag分类的方式来 一道一道的刷题 你可能会经历以下状态 每天坚持的再刷 想找到所谓的题感 但是 拿到一道新题 还是面露难色 毫无思路 有思路 但是只能想到暴力解法或者非最优解法 还是看看题解或者讨论区的大神们是怎么做的吧 终于理解了解法以后 开始写代码实现 又很大概率会被一些逻辑细节卡住 导致效率超低 停滞不前 当你刷完一定量 再回头看的时候 会发现前面的刷过的题 好像都忘得差不多了 以前会的 现在又不会了 打击斗志 丧失信心 更要命的是 你在不停地刷 但是面试官出的题总是会完美避开你刷过的题,专门找那些你没刷过的 考你 所以到底有没有一种 能够让你 记得牢 刷的多 命中高 可突击 高效率 的刷题方式呢? 经过我后面的摸索与总结 我觉的是存在的 至少对于我来说他是可行的 这也是为什么我在今年3月份看到手撕代码就心慌 在短短的两个月内通过这种方法的实践 就能在在面试的手撕代码环节 和面试官谈笑风生 亦可赛艇 废话说了那么多 下面正式揭秘!!! 关于具体的执行步骤 第一步 划定范围 锁定高频 要不要去划定范围? 正式开始我们的刷题之旅 到了这一步 复制代码 1 2 3 4 5 6 7 8 很多人就立马撸起袖子开始干了 盲目的从 1号题 在键盘上一通操作 开始一道一道的coding 也不知道终点在哪 每天两三道吧 坚持下去 反正干就完事了 但是对我来说我可能不太喜欢这种方式 这一个可能和个人学习习惯有关 我是一个比较急性子的人 不太喜欢这样细水长流的每天一道 我喜欢那种能够全局把控 看的到终点的学习体验 怎么说呢?就是当你按部就班每天几道这样的刷 你也不知道自己的最终多少道才能结束 而且当你刷到一定量以后 你不知道前面的是记住了多少还是今天刷明天忘 刷题的效果是不在你的把控范围内的 总之 刷起来没有限定范围的话 很容易失去方向感 至少对我而言 效果不是很好 如果给自己划好范围 比如我就一门心思的搞定我划定范围的这些刷题量 那这样的会就会更有针对性 就好比一个没有终点的马拉松 和一个终点明确的短跑 对你来说 哪个更简单?哪个更能看的见效果? 划定哪些范围合适? 我们决定要划定刷题范围 也就是限定刷题量 说到刷题量 很多人的第一个疑问就就是刷多少比较好 大部分人的第一感觉是多多益善 刷更多的题 见多识广 锻炼题感 但是就像前面说的刷题的那些缺陷 更多的题意味着更多的精力投入 而刷题又是投入产出比比较低的一项工作 将这些精力拿去刷实习 刷项目 刷基础 这些见效快 立竿见影的活不是更好? 所以 如果你现在离秋招或者实习还很早的话 那么多刷一点是建议的 但是如果你像我一样 到后期 精力有限 时间有限的话 那么去刷固定范围内有限的题 把他们完全掌握就好了 那又有一个疑问? 到底这个有限范围内的题 我应该怎么去划定这个范围呢? 前方高能来了 !!!! 复制代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 经过各种渠道的收集和调研   (包括刷了不少于100个面经帖子从中进行分析, 还有各种神秘渠道)   于是我在3月份的时候总结了   一个200多题刷题范围   自己就按照这个200多题的范围来刷   对 就只有200多道题!!!   而且这200多题里面没有偏题怪题   没有hard 只有medium和easy   就是这200多道题   拯救了我在三月份汲汲可危的面试   竟然神奇的押中了我大大小小   几十场面试中的80%的算法题 如果各位需要这个我搜集好的刷题范围的话 可以在到我的公众号 "陈同学在搬砖" 后台回复"刷题范围" 我会将我这200多题的一个刷题 以截图的形式发给你 这里还有一个小的tips 就是你在收到我给你的这个刷题范围以后呢 可以利用leetcode里面的收藏功能 找到每一道题 点击一下第二行上的"小心心❤" 就可以加入则的收藏列表 然后就可以把这些题都集中到一起了 实践证明 集中在一起刷的话 效果会更好哦!!! 因为这样你的思维是不会分散的 第二步 只看不写 记牢思路 传统的刷题四步走 标题我们说可以做到一个月200题 我绝对不是标题党 而是在我身上真真实实发生过的 我们其实可以 把一个月分成两个15天 就相当于把目标分解为15天搞定100题 首先咱们分析一下 可以先把刷一道题的过程拆解一下 本质上可以拆解为以下几个步骤 复制代码 1 2 3 4 5 6 7 step1 :想出大概思路   step2 :把思路具体化到能用伪代码表达   step3 :把思路具体化到能用实际代码表达   step4: 调试debug 我感觉最耗时间以及最难的是第一步第二步 只要思路和过程理出来了 后面两步只是时间问题 对于前两步 像我一样脑袋比较笨的, 有些题可能一道 easy题不看题解都得懵半天 如果用传统的办法来 每一道题都按照这四步的流程走下来 那么对于一道新题 像我这样脑袋比较笨的人 卡壳是大概率事件 而且就算你能够流程的写下来AC 你也不能保证你的解法是最优解 而面试的时候 面试官一般会要你写最优解 可能你一开始写的不是最优解 也肯定会叫你优化到最优解 所以按照这四部走下来 一道题上耗费的时间会很久 我一开始按照这样的方式走下来 每天只能刷两三道新题 如果按照这个过程,200道题刷下来 战线会拉的很长 当你整个战线拉的长的时侯 效果就会大打折扣了 因为遗忘问题就会愈发凸显 而且你的斗志会愈发丧失 而且这样的效率会很低 所以这里引入了另外一个大招!!! 前方高能!!! 将第一二步进行剥离 我的方式是把第一 二步和第三四步剥离开来 具体来讲 就是说 咱们一开始不是已经收集好了 那200多道题了吗 咱们下面要做的就是 只看不写 记住思路 具体来讲就是 针对这200多道题 你这一步的任务就是做到 能够熟练的记住他们的思路 就是你在拿到这200道题中的任意一道的时侯 能够条件反射般的在你脑子里映射出它的解法, 注意只是解法 不用要求你能够写出代码 好处1:这样的好处就是刷题四步的前两步剥离 将难搞的都放在一起集中攻破 效率会大大提高 好处2:就是有些面试中 比如电话面试面试官只要你能够说出思路就够了 这样的话当你在这一步能够熟练的话, 说出思路自然就不在话下了 怎么样获得思路? 然后每道题的思路是怎么得来的呢? 复制代码 1 2 方式一:自己想 方式二:看题解 我不知道大家的想法是怎样的 很多人会觉得上来就直接看题解不好 会扼杀自己的算法思维 成了"背题怪" 这个问题可以从下面几个方面来考虑 1.你可以把这200多到题理解为种子题 , 就像高中数学题, 例题做多了 , 看懂了他们思想 ,熟练了他们的解法, 其实举一反三很容易 , 可以把这两百多道题理解为训练样本, 用训练样本的最优题解来训练自己的算法思维, 两百题之外的作为测试样本试试看 . 说一句比较拗口的话来表达就是 思维的发散不是凭空而来的 而是根植于你脑子里已经汲取的东西 说人话就是 记的多了,思路自然就开阔了 2.题解上表达的一般都是最优解 学会了最优解是怎么样的, 恰恰是对培养自己算法思维最好的养料, 相反如果你一上来就按照自己的思路来 , 除非你天赋异禀 否则很难在短时间内找到最优解, 然后如果就这样一直按照自己的暴力解法走下去 , 自己的算法思维反而会走跑偏了 3.面试中的手撕代码环节虽然说是开放性的 也就是说你可以用任意解法都行 但是据我几十场面试下来的观察 其实面试官它自己心里是有他的标准答案的 而他的这个标准答案其实很大概率上就是leetcode题解里面的最优解 如果你写的和他自己心里的标准答案不一样的话 他会叫你解释 解释完如果他觉得不合适的话 他还会叫你优化 优化不好的话就会大大减分 所以呢 合适的路子应该是什么样的呢? 我觉得应该这样 复制代码 1 2 3 4 5 6 7 8 先自己思考自己的方案 五分钟后 不管想出来了 还是没想出 都要看题解  看题解里面的最优解 .   然后要记住他的思路  然后看他的实现代码记住关键的几步代码  还有要记住他的一些诸如边界条件  等等这些特殊情况处理代码 这一步下来要达到什么样的效果呢 要能够在你的脑子里形成画面感 形成数据流动的动画 然后同时能够牢牢的记住题解里面的关键几步代码 可以按照tag的分类来刷 在看题解思路的时候 可以做一些笔记 因为只是记录思路 所以不会笔记不会记得太大篇幅 记录关键思想和过程 或者自己不理解的地方 看第一遍可能会有点吃力 时间方面的一个安排 关于时间的话 按照我个人的一个实践 我觉得一个小时3~5道题应该没问题 然后一天如果能够投入8个小时的话 一天30道题应该是没问题的 然后第二天继续看 另外的30道题 同时复习昨天看的30道题 复习的话因为有了印象和自己记得笔记当然会很快 就是按照这样的节奏持续 我觉得3~4天完成100道题是没有问题的 注意 这三到四天只看不写 只记思路 然后第四天第五天 把前面三天看的100题综合在一起复习 也就是一天100题 因为你有前面三天的学习的基础 而且如果你前面三天确实理解了思路 我觉得虽然100题看起来数量很多 其实难度并不高 这一步的两个小建议 这里面还有两个小的tips: 1.可以在手机端下载力扣app 很多人可能还不知道力扣竟然也有app 下载力扣app的作用是什么呢? 在力扣app里面是可以登录查看自己收藏的题的 而且也是可以调出看讨论区和题解部分的 所以可以很方便的随时学习复习 不用一直坐在电脑前比较束缚 也可以很方便的利用日常零碎的时间来看 而且网页端的内容还是比较繁杂臃肿不轻便 2.在前面三天初次的看题的时候 可能会有一些题很难搞 很难理解 你就是记不住或者想不通他的解决思路 , 可以把这些题单独单独扣出来,放进浏览器收藏夹里面的文件夹中 然后后面第四第五天复习的时候看这个文件夹下面的题 类似这种想法 可以刷完一遍就筛选出哪些自己疑难杂症题 把那些自己掌握的题就剔除 这样不断筛选 最终留下的也就二三十道难搞的题 第三步 各个击破 开始手撕 关于手撕时候的一些思考 通过前面的只看不记阶段下来 如果你能够很好的去贯彻理解的话 以个人经验 完全可以达到 看到一道题 就能够反应出它的解题思路 而且还是最优解 同时脑袋里 会条件反射般的有数据流动的动画出来 在这一步的话就需要你开始写代码了 但是不用慌 因为你已经把最难搞的部分搞定了 只要你脑袋里还能记住那些解法和过程 你脑袋里还存在那个动画的话 我觉得问题不大 在这一步的难点就是一些逻辑上的小细节 比如边界条件 一些特殊情况等等可能会卡一下 所以就要求你 在前面的第二步能够去记住一些 关键环节代码 和边界条件 在这一步你依然可以结合按照 tag去刷的方式 这一步会耗一点时间 每天需要你投入一定时间 按照我当初的进度 我是5天内拿了下来 算是挺肝的 因为我不想把战线拉的太长 当然并不是每道题都是AC了 有一些虽然没跑通但是不想 一直阻塞在那里因为一些小细节卡的太久 所以就跳到下一道了 其实以我的经验来说 第一遍也不用十全十美一定要AC 重要的是要能够撕出来 能够将第一二步的思路用代码落地 并且没有逻辑上没有太大的问题 因为下面几个方面 一是 你的进度很大程度上就是被这些难搞的题或者题目里面的一些小细节给拖住的 如果第一遍能先放他一马下次在研究的话 完全可以很快就完成 大的逻辑方向掌握了其实问题不大 可能你第二遍刷的时候那些小细节自己就想通了 (我是这样做的 因人而异) 二是 面试的时侯很多情况下并不要求你一定得要去运行 很多时侯你写完了面试官看懂了觉得没问题也就过了 所以小的细节错误可以先放一边 大的逻辑方向别出问题就行 三是 类似第一步那样的做法 你可以用浏览器文件夹 一步一步剔除那些自己会的题 留下难搞的题 关于手撕时候的时间安排 第一遍100题的手撕我大概花了五天 第一遍手撕之后你的浏览器收藏文件夹 里会放着没有拿下来的题 好的 下面的话 那些会的题 也就是那些你一遍过的题你就可以不用管了 专门针对那些你浏览器文件夹里面的题 也就是那些难啃的骨头 发起猛攻 可以用3天时间或者更长 对他们反复刷 可以是一两遍 也可以是三四遍 四五遍 刷到你会为止 刷到你形成肌肉记忆为止 关于手撕时候的小建议 这其中当然也有一些小的tips 1.别遗漏了那些没有放进收藏夹里面的题 那些没有放进去的题可以进行用第一步的方法进行翻滚复习 2.手撕的时候可以按照tag 分类进行总结.总结关键思想 关键代码 3.参考刚才说的思路 可以不断的筛选 每刷一遍 把那些自己觉得会的题剔除 当你刷了三四遍以后就会发现最后的残留的疑难杂症就只有二十来道题 其实这个过程也是有科学依据的 可以百度一下 艾宾浩斯记忆曲线 第四步 解决遗留 发起总攻 重复上面的过程 按照这样的一个过程 整个的时间花费应该是 5+7+3也就是15天 理想状态下15天可以搞定100题 当然每个人的特点是不同的 你当然可以按照合适自己的一个时间去规划 100题搞定了 200题还会远吗? 继续按照上面的流程 干就完了 还需一个小建议就是 在刷第二个100题的时侯 可以用力扣app端 每天去巩固复习前面的100题 不会花太多时间 可以充分利用一些零碎的时间 对难题发起总攻 其实到最后这200道下来 你会发现真正会卡住你的其实就是几十道题 这几十来道题就是你最后的拦路虎 那还怕什么 干就完了 然后就对这几十道题发起总攻击 反复刷 不停刷 刷到忘我 刷到形成肌肉记忆 刷个四五遍 反正一遍下来也花不了太长时间 每次面试前他们更是你的重点关注对象 突击的刷他个两三遍 面试前 对于那些非疑难杂症题 可以就直接复习看他的思路就行了 可以通过力扣客户端 或者自己总结的思维导图 或者笔记 复制代码 1 2 3 只要刷出肌肉记忆 面试不费吹灰之力 skr~ 经验之谈 下面结合我实际面试过程中的一些经历 有一些关于面试时候手撕算法的一些思考 复制代码 1 2 3 4 5 1.面试的时侯面试官可能还会叫你手撕一类题 就是那些非leetcode题  比如叫你手撕一个单例模式 手撕一个快排  手撕一个生产者消费者等等这些计算机基础方面的题 我有专门总结一个文档 有需要的小伙伴可以后台私聊 复制代码 1 2 3 4 2 .面试的时候主动的和面试官交流 不能面试官出完题 就一个人闷头在那里写   因为面试官是会代入实际工作时的情景的 如果你写题的时侯和他一点交流也没有   那万一把你招进去了以后对需求交接的时侯是不是也是这样的状态?   这个也是我在面试的时侯听面试官提的意见 复制代码 1 2 3 4 5 6 3.还有一个套路就是如果这道题对于你来说你做过或者你觉得很简单  此时千万别提起键盘就秒杀它,面试官肯定看出你刷过这道题 这样的话他可能对你的印象分就加不了多少 你至少应该思考片刻 或者假装思考片刻然后 表现出忽然豁然开朗的样子 再继续操作 会更好一点 让他知道你是思考过的 复制代码 1 2 3 4 5 4.搞清楚题目的需求 面试中我碰到过一些比较难 需求比较复杂的题 他们不是力扣上的原题 可能看完一遍都觉得自己理解模棱两可, 这个时侯你在看完题目以后要把自己对题目需求的理解和面试官阐述一遍  确保自己的理解是没有偏的 否则的话一开始题目背景就理解错了  后面写出来肯定就对不了 复制代码 1 2 3 5.如果你拿到题目觉得很懵 先去和面试官说暴力的解法 一来是不会一直卡在那 二来也许你说着说着你就有想法了 复制代码 1 6.如果是笔试的话 先去熟悉输入输出 一般是在牛客上笔试 笔试前先去牛客的模拟笔试界面测试输入输出 复制代码 1 2 3 7.如果你是搞c++的 那一些常用的STL容器和算法的api一定要搞熟练  像什么比较复杂的priority_queue 可以自己把常见容器的用法总结在一起  或者我后续会更新这样的一篇文章 感兴趣的小伙伴赶紧关注一波 复制代码 1 2 3 4 5 6 7 8 9 10 7.刷题不是全部 面试也不只有算法题 虽然算法题很关键 但是真正能够然后拿下面试,征服面试官的 绝不能仅仅只靠刷算法题 而是各方面的基础知识 项目能力等等的均衡 也就是水桶效应里面的要保证没有短板 而且如果你想要拿下大厂 拿下sp 你必须要有个人在某一方面或多个方面的亮点和优势 如果有效的构建独特的个人优势 拿到sp  也有值得说道的地方 感兴趣的可以点个在看 老规矩 人过的话 我就分享 总结 ok 我的刷题法的核心思想就是上面这些 是不是感觉也没有啥太高深神秘的东西? 确实是这样 有效的办法 并不一定得是充满各种奇技淫巧 各种骚操作 他也可以是朴实无华的 只要有用就行 但是还是想说明一下 这里只是提供一种刷题思路 它是适合我的 但是由于个体差异 不能保证它适合于每个人 如果你觉得这种方法对自己没多大作用 觉得我都是在说废话的话请轻喷😂😂 其实想要验证一下这种方法 适不适合自己的话很简单 你可以先用30道你没刷过的题作为测试样本 然后走一走上面的流程看效果怎么样 我想说的是 复制代码 1 2 3 4 5 6 7 做各种东西都应该是有行之有效的方法论的 根据自身特点总结出属于自己的方法论才是最关键 总比无头苍蝇一样盲目的就开始上手开干好 对吧? 很多人觉的刷题是一项拼智商的活 但是我觉得找到一种有效的合适自己的方法论 再加上努力 是完全可以抵消和那些大神们的先天差距的 如果大伙觉得有用 有一点小小的收获 可以关注一下我的公众号"陈同学在搬砖" 关于秋招 我还有很多压箱底的存货 一些 技巧和方法 和笔记 绝对是你在别的地方没看到过的 比如写简历 比如项目的准备 比如计算机基础知识的速成 比如非科班同学如果从0开始转行拿到BAT 比如如何找到第一份实习 等等
分享
4
先马后看