跳至主要内容

给学弟学妹的建议:我找工作的经验教训

昨天听说大三的已经开始春招时,我回想起我的许多笔试面试经历,我踩过的许多坑,于是记录下来,希望学弟学妹可以少走一点弯路。

简历

虽然我经历了许多失败的面试,但是我的简历是基本合格的,(简历筛选基本上都是过得去的,并且还有面试官说过我的简历写的不错),所以可以分享一下。
首先,简历要有多个版本,不是指文件格式(顺便说一句,简历最好是pdf的,要是遇到面试官用的linux,正好打不开你的doc,可能就直接pass了),而是内容。
面试不同的岗位,就要针对性的修改内容,比如我的简历现在大概有三个版本:java类,c/c++类,大数据类。每一个版本都要有相关的项目经历或者是学习经历或者是可以快速掌握相关技能的能力(换句话说,要展现你能干,而不只是想干),要展现出来你去了就能干活。
当然还有一些其他林林总总的,我尽量列举了:
  • 联系方式:及其重要,需要反复确认,多留几个
  • 个人信息:不要忘记学校
  • 不是大牛的,尽量不要超过2页
附件是我的java版本的简历,供大家参考一下。并且附送大家我的简历生成网站: stackoverflow。你没有看错,Stack Overflow不仅可以问答,你还可以有自己的在线简历,并且能导出pdf,不会的可以参考我的这个答案。(唯一的缺点就是如果遇到非要要中文简历的公司的话,就会比较麻烦)

笔试

说到笔试,我大概就只有失败教训分享了。
最重要的一点是要认真准备,不要相信有些人说的“笔试就是个形式,用来筛简历的”(不要问我为什么知道)。
至于笔试的形式与内容,推荐刷一刷leetcode,并且我现在也在刷,欢迎一起讨论。

面试

对于面试可以分为电话面试和现场面试,我先介绍他们的相似之处,然后是区别。

共同特点

自我介绍

首先他们都是要自我介绍的,对于技术岗位来说,我们可能觉得这个似乎不是很重要,但是如果你站在面试官的角度,如果一个人连自己的介绍不清楚,是不是意味着将来与他工作的沟通成本会很高,那为什么我不找一个更容易沟通的呢?并且面试官可能一天要面试很多人,你的自我介绍太平庸,另一个技术能力和你差不多的人介绍的好,可能面试官就记不住你了。
相信我说服你自我介绍还是要稍微准备一下的。怎么准备呢?介绍一个套路:贴标签,讲故事。
我们在生活中应该能够发现,不管我们父母为我们起的名字有多么高大上,同学们记忆比较深刻的都是绰号。同理,要让面试官很快记住我们,我们需要给自己贴上一些标签。需要注意的是,不要像某些小家子气的人一样,把各种美好的标签都往自己身上贴,你敢说,人家也不敢信呀。当然也不是要你贴坏的标签。这个标签应该是:咋一听好像是缺点,然后觉得是特点,仔细想想还是优点。在这里,为了防止大家以后都用同样的标签,那就没有意义了,所以我不能给出一个具体的标签的例子。一定要结合自己的特点,想一个独特的你的标签。
至于讲故事,就更因人而异了。需要注意到就是与你标签的对应,并且要练习到比较熟练。

知识结构

对于咋们这个行业,技术当然是非常重要的。我着重介绍一下java后端的知识结构,其他方面我也不是很懂,同学们可以自己类比一下(或者收集很多个你心仪的职位介绍总结一下)。
如下思维导图是我在别人的基础上总结的要求(你也可以自己修改修改):
知识结构

其实说起来也简单,但是做起来难:就是按照上面的知识结构,查看自己缺少什么知识,就去找好书看,并且练习。比如我觉得我网络知识缺乏,如今在看tcp ip illustraed,并且在尝试实现部分协议栈

两个建议

  • 整块时间:看书,练习
  • 碎片化时间:看碎片化的知识问题,并且尝试自己回答(不要迷信答案,特别是没有ref,没有代码实验过的答案),比如

区别

电话面试 vs 现场面试

我印象中最大的不同就是,现场面试有可能会让你用手写代码/不用IDE写代码(虽然电话面试也有可能,但是比较少)。这个对于像我这种idea重度使用者其实相当困难。所以要提前练习。用记事本也好,用纸也好。语言无所谓,可以用前文提到的leetcode题目练习。

总结

最后,我想提醒你的是,既是你做到了如上所说的全部,也有可能失败。但是我想说,可能,失败不仅是无法避免的,也是必须的:只有通过失败,你才能意识到自己没有办法完成所有事,才能接纳自己;只有失败,以及失败的耻辱感,才能让你不断努力,追求自己想要的生活。

ps. 如果有什么有趣的问题(什么是有趣?比如 Java program runs slower when code that is never executed is commented out。那种google第一二页就有答案的,那种自己试试努努力就能得出结论的,都不算有趣),可以通过各种账号发我共同讨论:
ps. 如果你打不开某些页面,那么你需要科学的上网,不管是免费,收费,vpn或是socks。我认为这是干技术工作,必需的工具

评论

此博客中的热门博文

Spring Boot: Customize Environment

Spring Boot: Customize Environment Environment variable is a very commonly used feature in daily programming: used in init script used in startup configuration used by logging etc In Spring Boot, all environment variables are a part of properties in Spring context and managed by Environment abstraction. Because Spring Boot can handle the parse of configuration files, when we want to implement a project which uses yml file as a separate config file, we choose the Spring Boot. The following is the problems we met when we implementing the parse of yml file and it is recorded for future reader. Bind to Class Property values can be injected directly into your beans using the @Value annotation, accessed via Spring’s Environment abstraction or bound to structured objects via @ConfigurationProperties. As the document says, there exists three ways to access properties in *.properties or *.yml : @Value : access single value Environment : can access multi

Elasticsearch: Join and SubQuery

Elasticsearch: Join and SubQuery Tony was bothered by the recent change of search engine requirement: they want the functionality of SQL-like join in Elasticsearch! “They are crazy! How can they think like that. Didn’t they understand that Elasticsearch is kind-of NoSQL 1 in which every index should be independent and self-contained? In this way, every index can work independently and scale as they like without considering other indexes, so the performance can boost. Following this design principle, Elasticsearch has little related supports.” Tony thought, after listening their requirements. Leader notice tony’s unwillingness and said, “Maybe it is hard to do, but the requirement is reasonable. We need to search person by his friends, didn’t we? What’s more, the harder to implement, the more you can learn from it, right?” Tony thought leader’s word does make sense so he set out to do the related implementations Application-Side Join “The first implementation

Implement isdigit

It is seems very easy to implement c library function isdigit , but for a library code, performance is very important. So we will try to implement it and make it faster. Function So, first we make it right. int isdigit ( char c) { return c >= '0' && c <= '9' ; } Improvements One – Macro When it comes to performance for c code, macro can always be tried. #define isdigit (c) c >= '0' && c <= '9' Two – Table Upper version use two comparison and one logical operation, but we can do better with more space: # define isdigit(c) table[c] This works and faster, but somewhat wasteful. We need only one bit to represent true or false, but we use a int. So what to do? There are many similar functions like isalpha(), isupper ... in c header file, so we can combine them into one int and get result by table[c]&SOME_BIT , which is what source do. Source code of ctype.h : # define _ISbit(bit) (1 << (