程序员需要达到什么水平才能顺利拿到 20k 无压力?
程序源代码
共 1787字,需浏览 4分钟
·
2021-08-01 01:19
鹅厂程序媛小姐姐来回答下吧,2020 届,非科班,管理学转行,拿到腾讯后台开发offer。
如果你是985、科班的话,可能多刷题、背背八股文就可以了。
但是我本专业是管理科学与工程,身边很少有程序员,我是靠自学转行的,先去小公司实习,一步步从小公司到鹅厂来的。
和我一起秋招找工作的同学,有不少都拿到了鹅厂、京东、美团,这些一二线大厂的offer,他们薪资大多都在 20k 上下,年包 30w吧。
像我本专业的同学拿到的offer好多就是 5-8 k左右,少数极其优秀的能拿到过万,但是我看计算机似乎一二线过万很容易?
选择真的太重要了!!
我本身是非科班,所以复习准备秋招的时候一直都是把这几块当做重点:
CS基础课:计算机网络(自顶向下)、操作系统原理、计算机系统
编程语言的runtime,类似JVM、C++ 虚机制这些东西
数据结构与算法,就是刷一遍数据结构视频,再多刷leetcode题。
学习方法就是刷视频+ 刷书 + 刷题 + 写博客,费曼学习法以教促学。
按照这个路线学个六七成,大概需要多长时间:
如果你是非科班,比如传统工科,大学学过点 C 编程,其余完全不具备,那么可能需要 8 个月 - 1年 以上。 学习效率高、比较拼的可能五六个月也行(每天高强度学习、看视频、刷书十几个小时)。
如果你有其它语言基础、也学过操作系统、计算机网络这些 CS 必修课,那么只需要再强化突击刷题 + 系统化梳理下面试题 + 学习 Java,这个过程 6 个月足够,3个月勉强。
如果你本身是学 Java 的,做过项目,也学过 CS 基础课,我觉得你强化突击 1 个月就足够去面试了,主要是看一些高频面试八股文和刷 LeetCode。
细化来说,能做到以下这几点,我觉得还是比较容易拿到大厂offer的:
算法题,技术面试笔试都考这个,所以Leetcode至少得刷两三百道吧,《剑指offer》所有题目过一遍,搞过ACM当然更好,不刷题的话,那只有挂等着你了,毕竟现在很卷,面试官也只能通过算法题来加大筛选,给大家一本我秋招时看过的刷题笔记吧,真的很有帮助,像我这样转行的看完,一般中等难度的题就没问题了:
计算机系统知识,内存、堆栈、函数调用、数的表示等等,至少《CSAPP》得过一遍吧?(PS:这本书真的很适合程序员补齐计算机基础。
操作系统,这些东西你总得知道吧:
操作系统由哪些构成、进程的状态、切换、调度
进程间通信方式(共享内存、管道、消息)、进程和线程的区别、线程的实现方式(一对一、多对一等)
互斥与同步(信号量、管程、锁)、死锁检测与避免
并发经典的问题:读者写者、哲学家就餐问题
操作系统详细部分这可以去看下这个回答,我也是参考了这个回答:
程序员需要达到什么水平才能顺利拿到 20k 无压力?
4. 数据结构,不要求你手写红黑树,但是 AVL 哈希表 堆这些简单的数据结构得自己实现过;链表、线性表必须熟悉到不能再熟悉,语言的标准库实现得了解下吧?什么 Java hashmap,C++ vector 得知道实现吧。
5. 计算机网络,这个感觉相对简单,但是计网知识比较繁杂,很多同学都反映网络很难学,一大堆的网络协议,依次学完后,还是不知道网络是怎么构成的。
这就是没有用对学习方法,导致只见树木,不见森林。
学习时,推荐你抓住一条主线 「一个数据包是如何发送出去的?」
这就是自顶向下的思路,那自然要推荐:
《计算机网络:自顶向下方法》
这本书从我们最常接触的 HTTP、FTP、SMTP 等应用层协议讲起,可以清晰看到引入各个层的作用。
6. 数据库:sql得会写吧,这个推荐看下《SQL必知必会》,几个范式有没有正式运用过? 如何进行领域建模、数据库设计,才能够使得每次查询的开销最小?
数据库原理方面可以看看《数据库系统概念》,这本书挺厚的,包含了从 SQL 到数据库设计再到数据库原理、分布式数据库都有,可以挑着看,比如关系模型、数据库设计(三大范式)、数据磁盘存储和组织方式、索引、并发控制等。
当然了整个数据库最重要的还是索引和并发控制(锁、MVCC等)
评论