你应该了解的简历和面试知识
今天,杭州“烟花”来袭,字节在家办公,也是趁着午休的时间,和大家聊一下我觉得比较好的准备简历和面试的知识。
不想叫做“XX技巧”是因为技巧会让人觉得是捷径或速成的办法,但实际上绝大部分知识都是长期的积累而成的。
也希望大家以后给自己的评价是:“无他,唯手熟尔”,而不是,多亏我看了一本秘籍。
我看到很多毕业生花费大量的时间在寻找某某宝典或面经,的确面经在一定程度上可以指明我们学习的方向。
但是,如果只看面经上的那些题,而不去深究题目背后的原理,往往只会泛泛而谈,只能回答的上面试官1-2个问题
而如果没有系统得看过相关书籍或实践相关项目,也不会理解题目和题目的关系,只见树木,不见森林。
另一方面,这些不成体系的面经技巧,会快速被遗忘,对于长期的学习和技术积累是没有用处的。
以下6点是我觉得大家应该掌握或应该注意的知识:
1. 怎么安排好时间:
在简历和面试准备上,越早越好,哪怕你是大一新生,你都可以准备一份现在的简历,以后可以看看你已经有了哪些技能,往前可以知道自己应该要学哪些东西,
特别是同宿舍的同学,往往大家学的和就业的方向很接近,可以一起对比一下看目前简历上已有的知识,也可以一起规划学习或实践的项目。
在时间的量上,看书和自己的工程实践一定要占大头,4成+4成的样子,而面经,简历准备等占据剩下的1成
而且是要穿插着来:准备简历->知道自己哪里不会->看书+实践->再补充简历->看面经->……
总结:越早越好,内功为主,交替进行
2. 怎么写好一个项目经历
项目经历可以由课程设计、开源项目、学校技术社团或个人兴趣项目发展而来。项目时间上,需要2-3个月以上。
简历上的项目数量2-3个就足够了,每个项目之间尽量不要重复,(比如都是游戏项目或都是网页后台就可以合并为一个)
在项目描述上,一个典型的问题是写很多的功能描述,而且只有功能描述。其实功能描述应该只占20-30%,大段的篇幅要给技术实现,
所用的技术框架、设计模式和解决的技术问题需要重点描写,剩下的篇幅给最终实现的效果(并发、速度、规模)等等。
这里再多说一下技术框架,很多同学特别喜欢从头手写项目,可能这样有“全部都是自己写的,可以掌控”的感觉,另一方面,可能也是框架所需要的知识体系和思考维度更加高的原因。
为什么我推荐大家多用技术框架,是因为如果我们把当前的项目当做长期的目标去思考,会发现从头开始写到后面肯定会有无法解决的难题或技术瓶颈,
无论是分布式的消息同步和部署、异步协程框架或多平台UI框架等,涉及的问题都是从头造轮子难以解决的,而前人已经把这些问题的解决方案都总结到了框架中。
所以,如果一个项目经历没有涉及到框架,可能需要重新审视一下目前的项目是不是太小,可能只是一个能跑的程序。
而在工作的实践中,比如新开一个游戏项目,往往也都会面临技术框架选型,对于架构师,需要的是不同技术框架的了解,而对于开发者,需要的是所用框架的熟悉和改造能力。
但是同时,我也遇到很多同学,把所有问题都丢给框架,对其中的实现原理却并不了解,比如熟悉Sprint框架,但是对为什么要反射构造类和IOC的出发点不了解,这就是捡了芝麻丢了西瓜。
总结:项目时间、技术细节和效果三个要点要写好,善用框架,深入框架。
3. 怎么进行技术积累
在我看来,计算机的四大门课程永葆青春:组成原理、操作系统、数据结构和计算机网络。而上层的语言再多,语法糖再多,都只是表层的魔法,最终还是要回归到这四门的内核中去的。
在串联各部分知识的时候,我们可以用“分层”的思想去思考。
在深入底层原理的时候,我们要至少探究到上面教材提到的知识点中去。
举个例子,switch语句比if-else快吗?
这个问题,是考察switch的实现原理,在这里我以C#语言为例子举例
首先,分层:上层语言层->字节码层(如果有)->汇编层->机器语言
第一阶:如果你看过《深入理解计算机系统》或相关文档,就知道switch底层是通过跳表来实现的,跳表中存着的是跳转地址
第二阶:如果你用的是Java或者C#,可以尝试去看switch生成的字节码或IL,看一下不同类型下生成的不同,如果你是C++语言的,可以看一下不同情况下的汇编生成
第三阶:如果你再深究,可以研究一下编译选项,或者编译器的代码,或者看一下标准文件。
第四阶:做自己的语言,设计语法,做AST解析,做编译器和优化。
绝大多数止步于第一阶,少数人实践和了解过第二阶,只有极少数走到了第三阶。
并不是所有的问题都需要探究到那么深入,但是,只有尝试过这么思考,你才会发现,所有的技术问题本质上都是相通的,也就越来越能举一反三。
从而从解决问题到掌握解决问题的方法。
总结:详读教材、分层思考,深入研究,融会贯通。
4. 怎么答好一个技术问题
理解面试官是怎么看待面试者的回答,就能知道面试者应该怎么回答好面试官的问题。
很多时候,面试者的经历和所需能力会差别很大,比如跨专业求职,或者语言不同,或者研究生项目方向不同等。但是这些对校招来说都不是大问题。
因为计算机这一行每天都有新技术新框架出来,面试官看中的是面试者思考问题的方式,解决问题的能力,是他学习的能力,这些比他现在掌握的知识更重要。
所以,面试官的问题往往都是由浅到深,找到面试者会到不会的界线,再让面试者尝试去思考和给出解法。
所以,要想答好一个技术问题,或者说要想回答好一系列技术问题,要么你平时接触的技术就足够深,要么是你有解决技术问题的思维方式,哪怕没有接触过,在面试官提示下,也能给出思路和优化方法。
这就需要我们有很强的类比思维,不同的项目很有可能解决过类似的问题,给出你遇到过的问题和解决方法,也算是回答了面试官的问题。
同时,也要有一个概念,大部分的方案都是妥协后的结果,那么所谓的最佳方案肯定是有适用场景,了解了这一点,也就能更好的理解面试官的问题。
这就需要我们平时刻意得去深入和联系,多问自己为什么?为什么换个平台就不行了,为什么要这样调参,为什么这里要自己实现网络协议?等等
总结:比问题方案更重要的是思维方式,多在平时问自己,回答时多类比。
5. 怎么进行好一场面试
首先大家可以先问一下自己?考试是什么?期中考期末考是为了什么?
对于学生来说,考试和考试前的复习其实是一次查漏补缺的过程,让你可以更好得掌握知识。
同样,面试也是一次次考试,是互联网公司为大家免费准备的考试,而且面试官是工作至少几年的资深程序。
所以,我们的每一次面试,都是一次对自己掌握知识的体检,都是一次可以提升自己的机会。我们应该尽量得用好每一次面试。
根据目标岗位描述针对性得修改简历,对写在简历上的技术点都了然于心,这样面试官就能问出更好的问题,才能在每一次更好得拓展已有知识圈的外层圈。
面试的过程,也是一个交流的过程,面试者要抱着平和的态度去,不用妄自菲薄。当遇到自己没听清或有问题的时候在,即时提出就可以。
特别的,最后一问,面试官会让面试者提出对他的提问,你可以问他对你简历和面试过程的看法,更好的吸收和完善。
总结:充分准备,放平心态,问好最后一问。
6. 怎么面对面试结果
无论面试结果是好还是不好,都尽量用平常心去对待,一般来说,80-90%(我观察到的)的毕业生甚至更高最后都能找到比较满意的工作,只是面试的时间长短和次数多少而已。
因为随着面试次数的增加,会不断得复习和精进,可能比这个面试过程更重要的是我们在其中的收获的学习方法。
我也见过有同学刚开始拿到一个比较满意的offer就无所谓了不再继续面了,这其实也是缺失了一次比较好的成长过程。
在这里也分享一个我自己的小心得,如果在面试失败或遇挫折的时候,人的情绪会处于悲伤之中,这个时候坐下来看书会特别认真。
总结:戒骄戒躁,持续战斗,平和心。
最后,字节今年的校招开始了,字节杭州游戏有大量岗位招聘:
游戏研发工程师、前端开发工程师、后端开发工程师等各种职位。
欢迎对游戏感兴趣的22届毕业生(校招)和之后届的学弟学妹们(实习)来投递简历。
大家可以直接按照下面的网址投递,算作我内推的,也可以牛客私信我,提供免费简历指导(记得找我内推啊亲)。
字节跳动校招内推码: TQYREEM
游戏研发工程师投递链接: https://jobs.toutiao.com/s/e7G5d8n
前端开发工程师(游戏方向)投递链接:https://jobs.toutiao.com/s/e7GntPV
#字节跳动内推码##字节跳动##内推##校招##实习#