校园招聘|C++后端开发学习路线(腾讯sp签约,附学习资料)

 2024-02-16 01:02:39  阅读 0

找到工作后,我一直在努力找时间写点东西,回馈牛可。 由于各种事情比较忙,所以一直拖到现在。 作为一名19班的老兵,我想在毕业前与大家分享一下我的学习总结。 希望对正在找实习或工作的同学有所帮助。

自我介绍

首先,让我自我介绍一下。 我是一名非技术硕士,本科专业是力学。 这期间,我参加了一些学科竞赛(智能汽车竞赛、机器创新等)。 我的研究方向主要是自动化,软件基础基本为零。 我真正开始学习软件的基础知识是在研究生一年级的时候。 实验室主要致力于C++开发。 由于我的硕士学位只有两年,在秋招前我学习了不到一年。 由于严格的实验室管理制度,导师项目压力紧张,我要学习的时间在做项目的同时一点点被挤出。 因此,如果你觉得自己学习时间不够或者你是非专业学生,也不必太担心。 时间是自己挣来的。 只要你有坚定的进入互联网的目标,愿意努力,并且能够静下心来学习和积累,最后的结果一定会很好。 那就太糟糕了。 一分耕耘一分收获!

个人报价情况:

实习结束后,9月份我准备了一段时间的基础,错过了很多公司的笔试或者面试。 真正面试的公司只有十家左右,而且有一些大公司面试的比较早,所以我在准备不充分的时候就去面试了。 成为GG也是很自然的事。 比如百度是早期面试官,我连基础都没有复习完,第一页就失败了。 阿里巴巴从7月份开始面试,到了9月初就几乎没有空缺职位了,正式的笔试只是走个形式。 9月中下旬,我基本复习完了基础知识,后来面试的公司通过率都比较高。 腾讯9月底完成面试,10月中旬才确认报价,目标一直是鹅厂。 这个结果本身也算是一个解释。

学习建议

对于技术岗位来说,基础的软件知识可以说是个人的硬实力,也是你通过面试的一大前提。 说到学习软件基础知识,很多没有基础知识的同学可能会有些迷茫。 软件基础知识如此复杂,技术书籍如此之多,该从哪里开始呢?

不要恐慌。 一开始我也有和你一样的困惑。 之后我一步步挖坑、填坑,才构建了一个比较完整的知识体系。 回想起来,如果我在还是新手的时候就能够确定一条比较合理的学习路线,由浅入深地学习知识,学习的过程会更顺利,效率自然会更高。 因此,我会根据自己的学习经历,结合软件基础几大领域的知识,制定一条适合自己的学习路线,希望能够挽救正在学习的同学不走上歧途!

首先,对于基础软件知识的学习,建议尽可能多的阅读一些经典书籍。 第一次读的时候不需要太详细,很快就能读完。 重点是理解书本的知识框架,把握全局。 有了逻辑框架之后,就可以第二遍详细研究各章节的细节了。 这时候你也可以根据自己的情况选择性地阅读一些相对重要的章节,这样会更有效率。 对于一些经典的技术书籍,仅仅读一两遍是很难完全理解其精髓的。 以后你可能要多次复习,也可能在实际应用中复习书上的理论知识,以获得更深入的理解。 。 比如《深入理解计算机系统》这本书,内容就非常经典。 当你再读一遍的时候,很多地方都会有不同的理解和体会。

每次读完每本书,一定要学会做笔记,总结消化所学的知识。 笔记中的内容是自己的,在学习的过程中,我们难免会对一些知识点有一些了解。 偏差和不足,笔记可以帮助我们很好的发现这些问题,然后改正,好好记录。

软件基础主要分为这几大板块:C++基础、数据结构与算法操作系统、计算机网络、数据库、设计模式。

C++基础知识:

在软件学习中,语言绝对是最基本的。 由于C++属于较低层,语法非常灵活(更适合写算法),所以语法规则相对复杂,涵盖了C语言的内容。 学习C++语法、Java等高级语言需要花费更多的时间。

要学习C++语法,C++ 5th 是最推荐的书。 是学习C++语法最权威的书籍。 C++11 中对此进行了解释。 非常全面地讲解了C++的语法以及C++11的各种新特性。 读完后很有帮助。 如果有时间,建议至少读两遍。 如果时间有限,建议至少读一遍,掌握本书的大致框架,然后根据个人情况选择性地阅读一些关键章节。

STL源码分析书讲解了C++的底层实现,包括C++底层内存管理、各种容器的数据结构实现、常用算法的实现等,建议列为必读,有助于深入理解C++的底层,也是对数据的一个很好的介绍。 结构的审查和巩固。 还有很多面试中经常考的知识点,比如内存池的机制和技巧,以及一些常用容器的底层数据结构等。

操作系统unix属于_unix是( )操作系统_unix属于操作系统

《深入探索C++对象模型》一书讲解了C++面向对象特性的底层实现机制。 由于是翻译版,所以内容读起来会比较晦涩,但是内容很重要,尤其是虚函数的底层实现机制。 建议多阅读。 加深理解,这基本上是C++必知的知识点。 读完这本书,对我理解C++面向对象有很大的帮助。 建议必读。

这本关于C++的书主要讲解了编写C++程序时需要注意的一些术语。 有助于整理一些编写C++程序时常见的错误和注意事项。 它也经常在面试中得到检验。 如果你仔细读过C++,这本书会显得很快,而且很多内容都包含在C++中。

总之,由于C++自身的特点,学习起来并不容易,需要一定的时间。 不过,如果你仔细学习以上4本书,你会对C++有一个新的认识! 相信我,一旦你学好了C++,学习其他高级语言就会容易得多!

数据结构和算法:数据结构算法测试题

数据结构可以说是软件设计的精髓,建议打好基础。 《大话数据结构》是一本非常适合新手作为入门建立数据结构知识体系的书。 另外,浙江大学的数据结构在线课程也很好。 可以直接在B站搜索。 讲解简洁易懂,弥补了大华数据的不足。 结构的某些部分不清楚。 学习完数据结构基础知识后,就可以开始学习算法了。 建议学习一下这本书,可以帮助你梳理一些常用算法的原理和应用。

在学习数据结构和算法的同时,建议同时学习C++语法知识。 了解了两者的基础知识后,您就可以回答问题了。 在回答问题的过程中,你可以同时学习STL源码分析,这将有助于你了解更多。 轻松使用STL,提高代码效率。 如果想研究题,建议先研究一下。 如果你的英文不好,你可以去中文网站。 有一个数据结构探索专栏。 根据难度分为初级、中级、高级。 基本涵盖了各个知识板块的高频面试题。 可以帮助新手一步步解决问题,培养写代码的感觉。

此外,《建智Offer》一书还涵盖了很多高频面试题。 您可以前往牛客网“建志优惠”专栏进行解答。 由于题目难度不明确,新手答题效率会较低。 建议先完成探索栏的初级和中级之后,再温习一下剑道上的问题。 其中的问题在采访中经常出现。 建议大家刷两遍,掌握每一题的思路和优化。 方法。 最后,作为进阶步骤,你可以阅读左申写的《程序员代码面试指南》。 这是一本非常好的书。 里面讲解的编程题都非常经典。 它不仅限于国内IT企业,而是向全世界开放,包括国外。 一些来自知名IT公司的常见面试问题可以帮助拓宽你的视野。

在回答问题的过程中,一定要十分注意方法。 一般回答问题的方法分为乌龟式和兔子式。

龟刷法的本质是注重每一道题的质量,不满足于一种解法。 尝试写下各种解决方案并比较它们的时间和空间复杂度。 但海龟系统并不意味着你会在一个问题上死掉。 越是乌龟型的人,越需要注意时机,把握时机。 如果能解决就最好了。 如果解决不了,就不要固执。 我认为一个小时左右比较好。 如果一个小时后还是解决不了,可以看一下提示。 如果还是解决不了,可以在论坛里看答案或者网上搜索答案。

兔式刷法的本质就是暴力,天马流星拳,强大的力量可以产生奇迹。 作为兔子型选手,需要注意的是要疯狂,一上来就看答案,并根据答案进行写作。 这种做法看似不靠谱,其实有内在的合理性:大多数算法都不是我们发明的,比如动态规划、二叉树、线段树、并集搜索、贪心算法等。后来就叫不看回答。 当你自己做的时候,你实际上是在使用固定的套路。 另外,编程题的知识点较多且复杂。 问题分为不同的标签。 建议按照标签的广度优先顺序回答问题,并尽量覆盖每个标签。 我个人更喜欢海龟法。 这种方法可以更好地理解每道题的方法和套路,也可以训练你的思维。 毕竟,回答问题并不是扼杀问题的策略。 回答问题的质量更重要。 做完一道题后,最好将思路和方法记录下来,然后定期进行总结,对一些常用的方法进行总结和分类。 慢慢的你会发现那些套路都是你一直在用的,而且你会非常熟悉。

操作系统:操作Linux内核的一般知识

除了语言基础和数据结构之外,操作系统可以说是面试中考的最多的内容。 在面试过程中您可能会被问到更深入的问题。 毕竟操作系统是很博大精深的!

要学习操作系统知识,可以先阅读《深入理解计算机系统》。 操作系统圣书非常经典,通俗易懂。 很适合入门。 对于软件,建议先学习第二部分和第三部分,然后再根据个人情况进行学习。 研究第一部分。 然后学习操作系统的本质和设计原理。 这本书比现代操作系统更容易理解。 可以和CSAPP一起阅读。 两本书的知识点是互补的。 看完前面两本书后,如果想进一步了解编译和链接的原理,可以参考《程序员的自我修养》。 本书非常详细地讲解了程序编译过程的具体细节。

另外,如果你想学习Linux,可以先看鸟哥的Linux私房菜。 快速浏览一下主要是了解Linux的基本命令。 要进一步学习系统编程,可以学习APUE,它讲解了Linux/UNIX中常用系统编程接口的使用以及相应的应用示例。 由于本书对一些理论知识的讲解比较简单,而Linux/UNIX系统编程手册则讲解的比较详细,建议两本书一起阅读。

学习了上面提到的操作系统书籍后,如果你还想学习Linux内核的原理,可以阅读《Linux内核设计与实现》和《深入理解Linux内核》。 由于后者更注重理论细节,因此显得更加晦涩难懂。 要知道,人们很容易陷入细节之中。 LKD的书侧重于实践,没有涉及很多细节。 主要结合各个模块,从宏观角度进行讲解,可以帮助你快速建立一个比较完整的知识框架。 建议先学习后者,再学习前者,这样可以更好地理解各个知识块的逻辑关系和详细实现。

如果有同学对操作系统的底层知识感兴趣的话,可以看一下我的一个朋友的博客的底层知识学习记录。 总结的很好,看完以后很有帮助!

计算机网络:

要了解网络,可以先阅读《计算机网络》这本书。 解释很容易理解。 您可以快速阅读前面的物理层和链路层,了解基本原理。 重点学习网络层、传输层和应用层。 其中传输层TCP和UDP是面试中最常考的,非常重要。 互联网知识比较容易理解,但是知识点比较复杂,一时不看很容易忘记。 建议您学习后将每个知识点整理成文档或笔记,这将有助于您找工作之前的复习。

学习了计算机网络,基本上就可以建立计算机网络的知识体系了。 不过,这本书的深度还不够。 建议继续学习《TCP/IP详解卷1》,这本书作为对TCP/IP协议的深入理解,讲解的非常仔细,阅读的过程也非常详细。 很容易陷入细节之中,系统地学习整本书也需要时间。 如果时间有限,可以先选择性地学习一些章节。 建议先阅读传输层的内容,这将有助于你深入了解TCP和UDP。 了解其他层次的内容可以根据个人情况有选择地学习。

学完前面两本书的基础知识,你就基本掌握了计算机网络的理论知识。 建议将这两本书列为必读。 另外,如果你想练习网络编程,可以继续学习UNIX网络编程卷1。

数据库:

面试中关于数据库知识的问题不多,但是在以后的工作中肯定会用到数据库。 如果有时间,建议打好基础。 可以先阅读数据库系统概念了解数据库的基础知识,然后再阅读《MySQL必知之》。 本书可以帮助你快速学习mysql的基本语法。

设计模式:

关于设计模式,如果没有大型软件项目的经验,很难展现出自己在这方面的能力,所以可以作为知识点的延伸来理解它们。 面试中经常测试的常见的有单例模式、工厂模式等设计模式。

以上知识的学习路线和相关书籍是我根据自己的学习经历总结出来的。 它们可能并不适合所有的学生,但我相信大方向还是具有普遍性的,可以作为学习过程中的参考或者根据自己的情况来进行。 灵活调整自己的学习路线,找到自己认为最高效的学习计划。

上述所有书籍的电子版我都放在了网盘资源上。 有需要的同学可以点击这里->技术书籍整理(摘自原文)

面试技巧

在拥有技术硬实力的基础上,面试技巧也很重要,这决定了你能否充分展示自己的实力。

我从以下几点谈一下我对面试的看法:

简历一般包括个人信息、项目经历、专业技能、个人荣誉四个方面,其中项目和技能是最核心的。 对于项目来说,描述逻辑一般是:介绍项目的需求和目的->描述你主要负责什么->分几个点详细描述你的工作->最终的进展和相关结果。 你对自己所做的工作一定很清楚。 同时,要善于探索自己项目中的技术点,熟悉每个技术点,并问自己为什么,为什么使用这个技术,这个技术的优点和缺点是什么,为什么它是否适合当前的项目,使用后会获得什么效果等等。 。 。

然后有组织地把它们写在你自己的作品中。 对于专业技能,首先要真正了解自己的掌握程度,准确地描述自己的掌握程度。 一般的话是理解->熟悉->掌握。 如果您只学习了基础理论知识,但不深入,建议使用“了解”; 如果您已深入学习理论知识并有相关实践经验,建议使用“熟悉”; 如果你在某项技能上可以说是大师甚至专家,就用“理解”。 建议使用熟练度。 因此,一般建议大多数时候用理解和熟悉来描述专业技能,而尽量不要用熟练程度。

面试前首先要调整心态,有良好的心理素质,防止面试时自己过于紧张、惊慌。 然后就是自我介绍的准备。 一般需要3-5分钟的时间来简单介绍一下自己的信息、项目经历、一些获奖经历等,自我介绍时可以突出自己的一些亮点,可能会引起面试官的兴趣。 。

可以提前把内容写在纸上,在家或宿舍对着镜子练习几次,直到能清晰、流利、自然地表达出来。 然后就是面试问题的准备。 这方面首先要系统学习相关知识并对知识点进行总结或笔记,然后在网上收集一些高频面试题来测试自己。

之后你可以在网上找一些采访,尝试模拟面试来回答面试中的问题。 面试次数不多的同学都会有这样的感觉。 你其实知道面试官问的问题,但是当它突然问你的时候,你就不知道了。 您必须能够回答非常有条理且合乎逻辑的答案。 这种模拟训练可以很好的提高你这方面的能力。 面对每一个问题,力求回答清楚、描述流畅、分析透彻。 最好能够横向回答。 垂直方向做一些扩展。

首先,在服装方面,技术生只需穿着干净、得体的衣服即可。 不需要穿正式的衣服。 如果你穿着正式的衣服去面试,你很可能会发现你是唯一穿着它的人。 。 。 如果是现场面试,最好自己打印几份简历。 面试时,一定要保持自信,微笑,说话礼貌谦虚,给面试官留下第一印象。

在面试过程中,你通常会先介绍自己。 面试官在这个过程中了解你的基本信息,然后开始提问。 如果你对你的项目非常感兴趣,你通常会询问更多关于这个项目以及关于这个项目的信息。 每个技术点可能会被问到非常详细和深入的问题,并且可能会问一些关于项目的开放性可扩展性问题。 比如你觉得这个项目或者技术点有什么可以优化的地方,应该如何优化? 因此,你必须熟悉你的项目,了解每个技术点的细节,并能够发散性思考,对一些技术点进行前瞻性和扩展。

除了问项目之外,重点是问基础知识。 回答问题的时候一定要控制好自己的节奏。 尝试引导面试官了解你擅长的知识。 当遇到自己熟悉的知识时,也可以不要太着急,不要说得太快,有条理、全面地提问; 如果是自己不熟悉或者不记得的知识,可以先解释一下题中的一些概念,去掉棱角。 在这个过程中,你也可以给自己一些思考的时间。 如果你确实不知道或者不记得,就坦白说你不熟悉。 如果强迫自己胡乱回答,效果会更差,给面试官留下不好的印象。

另外,各大互联网公司一般都要求现场写代码,核心处理代码写在纸上。 因此,平时答题过程中,尽量一一输入字母,不要用代码补全。 当然,回答问题是非常困难的。 重要的。 面试结束时,面试官通常会问你是否还有其他问题。 这时候问一些你感兴趣的话题,比如系里的研究方向,用的什么技术等等。

每次面试结束后,不要太在意面试的结果。 去后及时记录​​面试问题,尤其是回答得不好的问题。 你必须花时间去研究和解决这些问题,以便在下一次面试中再次遇到它们。 同样的问题可以很好的解决。 每次通过面试,你都能发现自己的项目或者基础知识上的一些不足。 您必须适当修改并完成项目。 还可以找到自己在基础方面的薄弱环节。 你应该多看书,多学习,同时,你也能够发现自己表达上的一些不足,应该及时做出调整,争取在下次面试中做得更好。

简而言之,找工作是一场战斗,你会不断跌倒,然后再爬起来。 在这个过程中,你要调整心态,做好长期坚持的准备。 不要因为面试失败就否定自己。 如果你情绪低落,如果你确实感到沮丧,并且对你的心情影响很大,你可以和你的朋友和家人倾诉,这将有助于化解你的不愉快。 下次面试前一定要调整好心情,以饱满的精神去面对。 每次考试。

另外我主要提到了技术方面的一些技巧。 这里我补充一下HR方面的一些技巧。 一般来说,你的技术表现和个人性格都还可以。 HR方面不会有什么大问题,但是你也要注意一下。 毕竟,它是获得优惠的门户。 最后一个障碍。 HR面试一般与专业知识无关。 主要看个人性格和工作契合度。 会询问一些个人信息,比如家庭情况、有没有女朋友、想去工作的城市等。对于常见的HR问题,可以在网上搜索一些常见的回答技巧,面试时稍微注意一下。 在此基础上,最重要的是保持坦诚谦虚的态度,做真实的自己!

个人知识平台

我把一些高频的算法题进行了分类,归纳到我的中。 本仓库会持续更新。 相信对正在找工作的同学有一定的参考价值。 进入仓库可以点击这里->/-It/Code。 如果喜欢的同学欢迎star~

更多名企笔试题解析、面试经验交流、招聘信息推荐,尽在牛客!

找工作之前,先去牛客吧! 立即下载并获取优惠!

与作者交流:

标签: 面试 操作 算法

如本站内容信息有侵犯到您的权益请联系我们删除,谢谢!!


Copyright © 2020 All Rights Reserved 京ICP5741267-1号 统计代码