我认为有以下几点,如果你能做到的话,拿到相对比较高的薪资还是没问题的。
1)算法
各大公司的笔试基本都考这个,《剑指 offer》上的所有题目如果能背下来,LeetCode 刷个一百到三百道题,参加过 ACM 竞赛的也可以。
《剑指 Offer》,指的是《剑指 Offer:名企面试官精讲典型编程题》这本书,里面剖析了 50 个典型的程序员面试题,包括基础知识、代码质量、解题思路、优化效率和综合能力等 5 个方面。
LeetCode,一个在线刷题网站,包含了海量技术面试题,包括算法、数据结构 和 系统设计等 1000+ 题目,能帮助大家快速地提高编程技能,轻松拿下世界知名 IT 企业的梦幻 Offer。
给大家推荐一份纯 Java 版的 LeetCode ,刷题笔记吧,作者是美团的技术大佬。基本上每道题都给出了多种思路,对算法薄弱的同学会很有帮助
2)数据结构
计算机存储、组织数据的方式,包括数组、链表、栈、二叉树、哈希表等,算法是解决问题的方案,为数据结构服务。算法能对数据结构中的数据进行各种处理,比如查找数组中的数据,或对其进行排序等等。
3)计算机组成原理
计算机是由 CPU、内存、显示器这些设备组成的硬件,但我们大学毕业后,往往从事的是软件方面的开发工作。那怎样才能在硬件和软件之间自由穿梭呢?答案就是学好计算机组成原理。
4)操作系统
为什么要学习操作系统呢?
第一,面试要考;第二,无论学习哪门子编程语言,比如说 Java、C/C++,都需要和操作系统打交道,像 Java 中的多线程技术,其实是由操作系统来负责进程和线程管理的;第三,学习操作系统,还能学到内存分配方面的知识。学完操作系统要能搞懂下面这几个问题。
- 进程与线程简单介绍,区别,以及进程间通信方式,线程同步方式
- 用户态和内核态
- 内存管理:分页分段,虚拟内存,空闲地址管理方法
- 死锁:死锁的必要条件,死锁的检测与恢复,死锁的预防,死锁的避免