我认为有以下几点,如果你能做到的话,拿到相对比较高的薪资还是没问题的。
1)算法
各大公司的笔试基本都考这个,《剑指 Offer》上的所有题目如果能背下来,LeetCode 刷个一百到三百道题,参加过 ACM 竞赛的也可以。
《剑指 Offer》,指的是《剑指 Offer:名企面试官精讲典型编程题》这本书,里面剖析了 50 个典型的程序员面试题,包括基础知识、代码质量、解题思路、优化效率和综合能力等 5 个方面。
LeetCode,一个在线刷题网站,包含了海量技术面试题,包括算法、数据结构 和 系统设计等 1000+ 题目,能帮助大家快速地提高编程技能,轻松拿下世界知名 IT 企业的梦幻 Offer。
给大家推荐一份纯 Java 版的 LeetCode 刷题笔记吧,作者是美团的技术大佬。基本上每道题都给出了多种思路,对算法薄弱的同学会很有帮助。
2)数据结构
计算机存储、组织数据的方式,包括数组、链表、栈、二叉树、哈希表等,算法是解决问题的方案,为数据结构服务。算法能对数据结构中的数据进行各种处理,比如查找数组中的数据,或对其进行排序等等。
3)计算机组成原理
计算机是由 CPU、内存、显示器这些设备组成的硬件,但我们大学毕业后,往往从事的是软件方面的开发工作。那怎样才能在硬件和软件之间自由穿梭呢?答案就是学好计算机组成原理。
4)操作系统
为什么要学习操作系统呢?
第一,面试要考;第二,无论学习哪门子编程语言,比如说 Java、C/C++,都需要和操作系统打交道,像 Java 中的多线程技术,其实是由操作系统来负责进程和线程管理的;第三,学习操作系统,还能学到内存分配方面的知识。学完操作系统要能搞懂下面这几个问题。
进程与线程简单介绍,区别,以及进程间通信方式,线程同步方式
用户态和内核态
内存管理:分页分段,虚拟内存,空闲地址管理方法
死锁:死锁的必要条件,死锁的检测与恢复,死锁的预防,死锁的避免
对于计算机专业的同学,西安电子科技大学在 2021 届的报告里提到了下面 5 点:
我觉得非常重要,这里就细说一下。
1)信息搜索与处理能力
互联网时代,信息不再是匮乏的,而是精华与糟粕并存,如果信息搜索和处理能力没有提高,看到的都是一些垃圾,那自然差距就和别人慢慢拉大了。
对于计算机专业来说,GitHub、Stack Overflow、百度、谷歌,一定要用得好,像 GitHub,大量优质的内容都在上面,学会搜索,基本上任何宝藏你都能 get 到。
2)环境适应能力
进入一个公司后,不管是实习,还是正式参加工作,一定要能尽快适应下来,和同事打成一片,关系融洽,才能更好的工作,把自己的能力表现出来。如果这不适应,那不适应,工作的状态就会很差。
3)解决问题能力
大家想一想,程序员最核心的竞争力是什么?
当一个问题摆在你面前,你不能束手无策呀!你热爱,你努力,最终是要解决问题的,你做不到的话,就只能被扣上“纸上谈兵”的帽子了。
解决问题的过程可以分为三步:
透彻理解问题是什么?
导致问题出现的根本原因是什么?
找到最佳的解决方案。
对于新人来说,一开始遇到问题的时候,只能面向搜索引擎,去看看别人有没有遇到类似的问题,有没有解决方案,然后套用一下,看能不能把问题给解决了。
问题解决不了的时候,想问领导,想问大佬,能不能手把手教一教啊!
有一说一,我一开始也是这样的。但渐渐地,我就会去思考,为什么会出现这个问题,这个问题的底层逻辑是什么,除了这种解决方案,还有没有其他更好的呢?要不自己再花点时间去研究一下?
当你有了敢一个人去解决问题的胆量后,其实已经证明你进步了,因为只有支撑你的基础扎实了,你才会有这样的胆量。
4)终身学习能力
活到老,学到老,这没什么可说的,一旦停下来脚步,很可能马上就被别人超越了。生如逆旅,不进则退啊。
5)阅读能力
阅读能力是各行各业的必备技能之一。
声明:转载此文是出于传递更多信息之目的。若有来源标注错误或侵犯了您的合法权益,请作者持权属证明与本网联系,我们将及时更正、删除,谢谢。