5.6 从 0 offer 到春招上岸,我只做了这一个决定...
- 作者
- Name
- 青玉白露
- Github
- @white0dew
- Modified on
- Reading time
- 7 分钟
阅读:.. 评论:..
大家好,我是白露啊。
今天我想和大家聊一聊关于春招编程语言的选择问题。这个问题其实我一直就想写了,但是之前忘记了···
其实白露当年毕业找工作的时候,可谓是一波三折。
最沉痛的打击就是在4月份的时候,原本实习转正的部门被优化了,因此只能够被迫毕业前两个月开始“春招”。
在当时那个时间,市场上几乎已经没有HC了,于是我就在不停地投递,但是都石沉大海。
最后,我做出了一个违背“祖宗”的决定,那就是更换编程语言!
当时我在学校里主学的是C/C++、辅修Java,通过对当时形式的判断,我选择了主修Go,并且在三周之后顺利拿到offer,成功上岸。
今天我特地把这个方法分享给大家,只是想给大家提一个醒,在招聘的时候,尤其是校招,千万不要在一棵树上吊着,试试多吊几棵树。
顺带一提,我们实验室的几个师弟今年春招也通过更换语言顺利上岸~至于这个方法是否有用,仅供参考,祝大家好运啦。
我需要提醒一下的是,这只是我个人的经历和建议,并不意味着Go一定就是最好的选择。
因为在面临选择时,我们需要全面考虑多种因素,比如自己的学历背景、技能程度、就业市场的状况等等。
而且每个人的情况都不一样,也许你会有比我更多的选择,也许你会面临和我完全不同的困难。
所以,我的建议只能作为参考,你需要根据自己的实际情况来做出最适合自己的选择。
具体来说,我们可以将这个“转Go”的计划大致分为三个部分:
第一部分(约2天):语法基础
是语言本身的学习,你只需要对Go有一个概观的认识,能看懂和写出常见的Go代码即可;
首先,我们需要掌握Go语言的基本语法。
这个部分并不需要深入学习,只需要你能看懂和写出Go的基本代码即可。
推荐的学习方法是看Go的语法示例。
你或许已经掌握了其他编程语言,比如Java或者C++,这样你就可以直接通过对比示例代码来理解Go的语法结构和特性。
在这个过程中,你可能会遇到一些疑惑或者不理解的地方,这时候你完全可以通过搜索或者看视频教程来进行查阅和学习。
总的来说,你应该以最适合自己的方式来进行学习。
第二部分(约7天) :基础概念学习
接下来,我们需要深入到Go的内部机制,学习一些原理性的知识。
这个部分主要包括:slice、map、channel、sync.Map、context的使用和原理,以及GPM调度器和垃圾回收机制等。
这看上去似乎很多内容,但是请不要被这些名词吓到,你不需要深究每一个细节。
你可以在网上去搜索经典的博客文章,根据自己的时间和精力情况,去学习其中的部分或者全部内容。
需要注意的是,这些原理并不是你应对任何面试题目都需要的,你可以根据自己的实际情况,进行有选择性的学习。
比如,如果你只有有限的时间,或者你对某一方面的知识特别感兴趣,你可以优先选择学习这部分内容。
第三部分(约5天): 项目实践+八股文
在理解了Go的基本语法和重点原理后,我们接下来要关注的是:在实际的Go项目中,我们需要注意哪些常见的八股和坑?
八股文就是Go面试常问的问题,包括但不限于:
- 请解释一下Go的主要特性是什么? 这个问题主要测试你是否对Go语言有一个全面的理解。你可以从并发处理、垃圾回收、内存安全、跨平台等方面来进行回答。
- Go的语言机制是如何支持并发的? 在这一问,你需要讲解Goroutines和Channels的工作原理和用法,并且解释一下在Go语言中如何实现并发编程。
- 什么是Goroutine?它与线程有什么区别? 此问题考察你对Goroutine的理解,你需要详述Goroutine的特性以及它和传统线程的不同之处。
- 解释一下Go中的"defer"关键字的作用是什么?你自己在实际开发中是如何使用它的? 面试官希望知道你是否了解并会实际应用Go的语言特性。
- 描述一下你对Go内存管理的理解。 这问题用来考察你对Go的底层运行机制的理解,包括垃圾回收机制等。
- 请解释一下Go中的指针,它在Go语言中如何使用? 对于这个问题,你可以解释一下什么是指针以及它在Go中的用法,包括如何声明和初始化一个指针,如何获取指针的地址和值。
- 请解释一下“接口”的概念,并给出一个在Go中如何使用的例子。 这个问题旨在测试你对Go接口的理解和使用。你可以解释一下接口的概念,并给出一个使用示例来演示如何通过接口来实现多态。
- 请解释一下Go中的错误处理机制,它和其他语言(如Java)有什么不同? 在这个问题中,你需要说明Go如何通过返回错误值来进行错误处理,并阐述与其他语言如Java的异常处理的区别。
- 请解释一下你对map、slice和channel的理解,并且给出一些实际应用的例子。 你需要介绍这些数据结构和类型的用法,并解释在实际项目中如何使用。
- Go如何实现面向对象编程?如何实现封装、继承和多态? 面试官会问到这个问题来看你对Go的对象模型和面向对象编程理解。
记住,这些建议只是一份基础清单,真正的面试可能会涵盖更多的主题,包括但不限于框架、数据库、网络编程等。
至于实践,找几个开源的Golang项目,跑起来就对了!
最好是有那种博主分享源码解析的项目,这样看起来事半功倍,并且也能够提前了解到面试里可能会问什么问题。
这些知识点能够帮助你在面试中更好地展示自己,避免一些常见的问题。
更进一步说,无论如何准备,都没有真实编程经验更为重要。
因此,多做项目练习,不断深化理解和运用Go语言,都将直接帮助你在面试中站稳脚跟,祝你成功!
当然,你的简历上写什么,面试官就会问什么,所以在这个部分,你只需要学习和回答自己所擅长和感兴趣的方向。
你不必面面俱到,而应该在自己的领域展现出深度和广度。
等你学完这些内容之后,你就可以 confidently saying that "我会Go",并且能够在实际项目中使用Go来进行开发了。