大家首先要区分两个概念,找到工作和能工作是两回事,社招的岗位一般要求应聘者进来就能工作,而校招的岗位一般要求应聘者有良好的基础,经过初期的培训之后能胜任简单的工作,之后再一步步达到能胜任岗位的目标。楼主应该属于后者,偶就职于BAT,仅就BAT并且是偶身边的岗位对于校招的要求发表看法,抛开所有学历、学位和学校等级,就编程语言而言,语言关一定要过,不是说要把C++ Prime通读消化掉,但至少要能在理解业务逻辑的基础上读懂代码,有少量不懂的地方也可以通过搜索或查阅工具书快速的掌握。
那是不是只要掌握好语言就够了?答案是NO。
纵向来看,语言是外功,数据结构和算法是内功,内外兼修才是正道,算法导论的前几章最好要掌握,包括基础的算法复杂度的概念、排序算法、递归式、栈、队列、链表、二叉树、散列表等等,后续的高级数据结构和图算法可以按照兴趣和工作需要去掌握,另外,算法导论要求有概率论、线性代数的基础知识,如果有微积分的基础知识就更赞了。
横向来看,编程语言依赖于操作系统,如果使用C/C++语言,做PC端的Windows研发可能需要掌握MFC、Windows API等,做服务端的Linux开发可能需要掌握Linux API、Shell等。编程语言处理的数据需要存储,就需要掌握数据库技术(SqlServer、Mysql、Oracle、甚至是Hadoop和Spark等),如果是网络产品,不可避免的会涉及到网络编程(socket、网络协议等),网络编程往往还伴随着多线程甚至是多进程和分布式的要求,这就需要大家掌握多线程、多进程和分布式编程的技术,上述这些在工作中可能会部分或者全部涉及到,但一定不会是在工作中涉及到的全部,庆幸的是对于初学者而言,不需要全部掌握才能开始工作,偶建议最好都懂一些基础,知道这些概念是怎么回事、在什么情况下适合用什么技术,用到的时候再去深入掌握即可。