C++技术网会员指导记录:应届生的困惑解答

1697 人浏览 | 时间: 2017-07-09 23:09:09 | 作者: codexia

        应届生对于工作实际情况还是不了解,所以产生了疑惑。如何学习?学什么东西?要掌握到什么程度?是实习还是参加培训还是自己恶补?基础课程要不要学习,不知道基础课程的重要性,基本都忘光了。

        下面就是对这位会员的指导记录,希望更多应届生能够得到启发。当然,每一个人的情况都不相同,请仅做参考。如果你想根据自己的情况得到符合自己的指导,请预约我们网站的指导服务即可。

    


简要说下个人情况吧。目前我大四毕业,大学读得计算机系。问过身边一些朋友和长辈,了解到Linux服务器方向好就业,所以个人想往Linux服务器方向发展。
会员 16:36:12
我学习的内容与官网推荐的学习路线近乎一样,目前已经坚持有一年了。因为是看视频、看书自学,总感觉效果没有达到想象那般好。所以来请教下你。
会员 16:49:22
第一大类,是关于大学计算机课程的学习问题:
1.官网推荐学习操作系统、计算机网络,但这两门课我没有学。我直接学的QT,SQL,Linux系统编程和Socket,基本内容都学得会。请问还有必要专门花时间学这两门课吗?

2.数据结构、计算机组成原理、操作系统、计算机网络是计算机考研的4大课程。目前个人学习过程中大量地接触到了数据结构、操作系统、计算机网络的相关知识。但计算机组成原理几乎没碰到过(毕竟是一门偏硬件的课程),那么有必要专门花时间学这门课吗?

3.数据结构中的数组、链表、栈、队列、字符串这类简单的结构我能手动实现,但到了二叉树、图,尤其是BST,AVL,B-,B+树、红黑树等等高级一点的数据结构,个人实现起来总感觉困难重重。(学得懂但手动写不出来代码,因为没有思路)请问有什么好的学习方法吗?这些复杂数据结构的实现思路需要“背”吗?
C++技术网 21:32:12
您好,现在给你解答一下啊。
会员 21:32:15
[自动回复]您好,我现在有事不在,一会再和您联系。
C++技术网 21:40:22
1.你学习的是编程基础知识,学会了可以进行实际的编程开发工作。但是可以说,这只是表层的。当你使用这些编程工具(QT、Socket)深入之后,你会发现,不懂理论是不可行的。而这些理论作为一个学科,并不是一两篇文章资料能够说清楚的,否则也无法成为一门课。操作系统和计算机网络是最重要最基础的理论课,是编程的基础支撑。举个简单的例子,如果你不知道进程的基础理论,你在编程时只能机械的记忆使用,对于出现的问题,就不知所措了。你不知道进程为什么会挂起,不知道为什么多线程会出现各种问题,莫名其妙的问题。而这些问题都无法查资料解决的,这些问题本身就很奇怪,需要懂得进程线程的运作机制。这就是操作系统理论课学的。而socket编程支撑的是TCP网络通信,然后其他各种网络编程还有HTTP通信等等,如果你不学计算机网络,深入一点之后,你就不知所措了。你不知道两个局域网为什么不能直接使用UDP通信,不知道怎么广播消息等等。而如果只是调用函数,永远都搞不明白,更别说做出非常出色的软件。当然,你现在学的这些,对于目前的工作是非常直接而必要的。你现在可以迅速开始工作。但是为了长远的发展,操作系统和计算机网络必须学习,特别是做Linux服务器相关的开发。
会员 21:42:25
(⊙o⊙)嗯嗯...
会员 21:43:49
感谢回答,继续哈... 
会员 21:43:59
在吗?
C++技术网 21:44:25
软件工程的考研四大课程,是浓缩的精华。看似只有四门,其实涵盖了很多内容,是计算机的核心。而组成原理课程不仅要学习数字电路,数字电路还要提前学习模拟电路。看似偏向于硬件,但是并不是真的如此。组成原理只是让你去理解计算机运作的基础,是由这些基础的电路模块实现的。如果你不知道,你如何说你理解计算机了。组成原理可以加深你对计算机硬件的运作,内存、CPU等各种关键硬件的运作机制的理解。但是这个并不算是什么很底层的硬件,这门课是让你去理解硬件的工作机制,建立起对硬件的基础认知和理解。
C++技术网 21:44:52
所以,考研4大课程,都需要学好。
会员 21:47:29
我也感觉计算机专业,这几门课对C++应用方向的开发挺有帮助的,作为技术理论的支撑。也仅仅是这几门课,其他编译原理,汇编语言什么的,感觉一点都没什么联系。
会员 21:48:06
你的意思是,要想学懂计算机组成原理的话,还要学习数字电路和模拟电路咯?
C++技术网 21:49:51
3.而数据结构则是编程的很重要的课程。如果不是专门去做算法开发,只要掌握到考研的要求即可。如果专门做算法研究和开发,那么那些红黑树什么的,还是要掌握的。必须掌握的是,能够将常用的结构、算法都写的出来,知道复杂度。对于特别复杂的结构和算法,不必要求全都写出来,如果能写出来,那是更好。但是你一定要熟悉和理解这些复杂算法的思想和思路,而对于这些思路的掌握,在于理解,而不是背。算法是很灵活的,书上只是讲了一个标准的算法,在实际开发中,如果用到,必然是要进行扩展和变异的,以解决实际问题为准。如果你只是背算法,是无法掌握算法的。
C++技术网 21:50:13
是的。
C++技术网 21:50:38
如果不学习数字电路,你无法理解一大部分的知识,就只能强行记忆。这样还是无法理解的。
C++技术网 21:51:01
但是如果你不学习模拟电路的话,你对于数字电路的很多知识也是模棱两可的。
会员 21:51:12
嗯嗯~
C++技术网 21:51:14
所以这是有基础课程,一步步学习的。
C++技术网 21:51:35
编译原理和汇编语言,则是与编程密切相关的。
C++技术网 21:52:03
编译原理让你更懂得程序,汇编语言让你更加深入程序的本质。汇编语言就和组成原理挂上钩了。
会员 21:52:19
我不想去做算法开发,感觉这太需要天赋。做服务器开发不需要太高深的算法知识吧?就目前我学习的socket,线程等,就掉系统api就好,没感觉到什么算法知识。
C++技术网 21:52:28
汇编语言产生的机器指令也就是组成原理讲的各种指令。
C++技术网 21:53:11
开发中,如果不是直接做算法开发,一般不需要你写什么特别复杂的算法。一般都有专业的算法库供你使用。
C++技术网 21:53:25
比如STL提供数据结构里大部分的算法。
C++技术网 21:53:45
你会用就好。会用的前提就是,你懂的这些算法的原理和作用。
C++技术网 21:54:33
而服务器开发方向,有分布式算法、如果你能够写出很好的算法,自然也很好。如果写不出来,有很多现成的开源算法。
C++技术网 21:54:43
明白我的意思了吧。
C++技术网 21:54:54
你懂是加分,不懂也可以工作。
会员 21:55:07
嗯嗯,明白~ 
会员 21:55:36
STL的算法大部分非泛型版本的实现我都懂,就是红黑树感觉太难了。。。
会员 21:55:45
set和map的底层数据结构
会员 21:56:50
“你一定要熟悉和理解这些复杂算法的思想和思路,而对于这些思路的掌握,在于理解,而不是背。”你说的这句话,我感同身受。我能理解一些复杂结构的算法,比如AVL,B-,B+树的实现。但是算法思路太长了,如果不背的话,要默写几乎写不出来。这该如何是好?
C++技术网 21:56:50
嗯。
C++技术网 21:57:15
不会有人让你去默写这个算法的。
C++技术网 21:57:29
能够讲出来这个算法过程,就很不错的。
C++技术网 21:57:47
除非你去参加算法竞赛什么的,可能确实需要写吧。
C++技术网 21:58:20
如果面试官让你写,你可以让他也写一下。他要是有本事写出来,算他赢了。
会员 21:58:43
我就是怕面试大公司,别人让我默写。我有几个学得好的同学去面试大公司,啥项目经验也不问,就考察数据结构与算法。他们被考察,直接默写哈希表。。。
会员 21:59:35
不过红黑树似乎没人被考察到过,哈希表比红黑树简单多了。。。
会员 22:00:27
我也感觉不参加算法竞赛,应该不会考察到这种复杂数据结构吧。不过红黑树是STL里的底层数据结构,面试很有可能会提及到
会员 22:02:17
“如果面试官让你写,你可以让他也写一下。他要是有本事写出来,算他赢了。”感觉很霸气,我觉得是可以这么反问一句 
C++技术网 22:03:27
提到很正常,你知道,甚至能够说出原理,也就差不多了。
会员 22:04:18
嗯嗯,明白了。主要以考研要求的数据结构深度为准。
会员 22:05:18
另外我想咨询关于做项目的问题,还请站长不吝赐教。 
C++技术网 22:05:33
好的。
会员 22:07:11
我现在学了Linux的一套知识,比如文件操作,开启回收进程,进程间通信,线程知识。基本的socket网络套接字。但是不会做项目,该如何是好?
C++技术网 22:07:44
是没有做。
C++技术网 22:07:47
那就开始做。
会员 22:10:04
不知道怎么做。之前学过一段时间QT界面开发,拿书自学的。书本上有一些项目,比如车辆销售管理系统,QQ聊天室之类的。这些是客户端项目。但是到Linux这块,做的项目应该是在服务器下吧。我就不知道如何下手了。。。 也没有相应书籍的项目指导
C++技术网 22:11:13
控制台程序会写吗
C++技术网 22:11:26
socket编程不是就有一个标准的流程吗
C++技术网 22:12:05
不要管那些书上将的所谓的管理系统,都是一些简单的代码组合起来形成的。没有什么复杂的。
C++技术网 22:12:17
你就从基本的程序开始扩展。
C++技术网 22:12:37
你先写好一个基本的socket通信程序,一个客户端,一个服务端。
C++技术网 22:12:53
然后实现可以跟QQ一样互发消息。
C++技术网 22:12:58
这是基本的。
会员 22:13:23
嗯嗯,会写。socket,bind,listen,accept.read/write这些,感觉流程好死
C++技术网 22:13:30
然后自己再扩展,比如客户端发送一个什么命令,服务端就启动一个进程。
C++技术网 22:13:45
基本流程是死的,但是你要用活。
C++技术网 22:14:00
这样你就将socket和进程关联起来了。
会员 22:14:00
会写,但是控制台界面感觉太low了,面试拿不出手。服务端程序也至少要有个QT之类的界面显示吧
C++技术网 22:14:14
错。
C++技术网 22:14:20
界面都是唬人的。
C++技术网 22:14:32
你是要做一套完整的程序。界面不是必要的
C++技术网 22:14:38
服务器程序很多都是没有界面的。
C++技术网 22:14:51
哪来的界面太low
会员 22:15:02
好吧,我感觉没界面的程序做着好没意思。。。
C++技术网 22:15:10
说这样的话的人,都是新手或者水平不高,对程序理解不到位。
C++技术网 22:15:24
你记住这句话,改变一下你自己的观念。
C++技术网 22:15:43
那没有界面的Linux系统,照你这么说,是不是很low
C++技术网 22:15:48
为什么这么厉害呢
C++技术网 22:16:23
然后服务端在接收到客户端链接的时候,创建一个新的线程来处理。
C++技术网 22:16:49
然后支持大并发的通信,比如1000个客户端同时连上服务器,顺利通信。
C++技术网 22:16:54
不卡顿,不延迟。
会员 22:17:00
嗯嗯,这个明白,pthread_create,然后到函数中处理分线程业务逻辑
C++技术网 22:17:03
然后客户端和服务器实现文件互发。
C++技术网 22:17:12
你现在只是简单的列API而已。
C++技术网 22:17:30
实际上开发并不是简单列API,是要你做出功能效果。不是让你答题。
C++技术网 22:17:32
明白吗
会员 22:17:37
主要是没做过服务器的项目,目前只会书上讲的死流程。。
会员 22:17:40
嗯嗯,明白
C++技术网 22:17:56
要你做出一个可用的程序,不是问你要用什么函数。而你一旦自己做的时候,就发现各种问题。
C++技术网 22:18:16
服务器程序和客户端没有什么区别。都是程序而已。
C++技术网 22:18:40
你能把我前面说的这几个都做到,不需要界面,就控制台就行了。
C++技术网 22:18:47
这个程序就很厉害了。
会员 22:18:57
嗯嗯,在Linux下一般都用控制台的
C++技术网 22:19:01
比起那些所谓的管理系统,水平高出一截。
C++技术网 22:19:23
如果你想再高一点,那就支持10万并发量的服务器端程序。
C++技术网 22:19:45
然后再实现24小时不间断运行。
C++技术网 22:19:51
有的你做的。
C++技术网 22:20:07
而这每一步,都需要你学习大量的知识。
会员 22:20:24
我能懂你的意思,但是实际做起来感觉还是很困难。毕竟没有学习过类似项目。可能我QT学的比较多,做的都是客户端项目,到服务器这块就不知道做些什么。
C++技术网 22:20:30
所谓的水平的体现,也就是最终体现在你内在的功力如何,学的多学的深用得好。
会员 22:20:40
我做项目第一步都是实现图形界面的,Linux这边没图形界面我就傻了
C++技术网 22:21:01
控制台程序都不会写了?
C++技术网 22:21:09
这是进步呢还是退步呢
会员 22:21:32
会写,但是不习惯写了。
C++技术网 22:23:14
不要说习惯这个词。必须要做的就去做。
会员 22:23:27
嗯嗯,明白。我会好好体会你说的这一番话的。最后想你给我个建议,我做参考。
C++技术网 22:23:32
那你现在开始,就开始写一个客户端和服务器端。
C++技术网 22:23:52
客户端你可以用QT做,你想做的多漂亮就做多漂亮。
C++技术网 22:24:09
然后服务器端实现上面说的那些功能。
C++技术网 22:24:17
这样就可以了。
会员 22:24:34
服务器用控制台,客户端用QT的界面程序。是这个意思吧?
C++技术网 22:24:54

会员 22:25:35
懂了。那我说最后一个问题吧,还麻烦你能给个好的建议。
C++技术网 22:25:56
项目经验就是实际写软件的经验
C++技术网 22:26:24
软件是完整可用的程序,而不是临时写的测试的
会员 22:28:43
我刚大四毕业嘛,在家学了1个月,需要求职工作了。目前个人状况是:有QT方面的几个项目,Linux这边没项目。数据结构与算法方面略低于考研的要求。我同学建议我试试中大型公司,成功就进去实习;不成功就去培训机构,补充几个Linux项目后再应聘。你怎么看?
C++技术网 22:38:57
现在正是毕业季。赶紧找工作。有基础,有经验就可以了。可以投大中型公司,多投点公司,没有关系的。本来就是应届生,应届生的水平,大家也都知道。没必要因此而培训。培训的话,费用也很高。错过了招聘时间,找工作反而不好找。现在找,看准是接受应届生的。
C++技术网 22:39:19
另一方面,现在有点时间,那就赶紧做一下linux的程序,熟悉linux的使用。
会员 22:39:55
嗯嗯,好的。
C++技术网 22:40:25
作为会员,我们另外提供了一个服务就是简历指导。
C++技术网 22:40:57
虽然只是10元会员,但是我希望能尽量帮到你们。更多是做一下公益,多支持一下你们。
会员 22:41:02
我是打算先投下大中型公司的应届生岗位,同时参加下校招。实在不行才考虑培训的,费用开销不小。
C++技术网 22:41:10
所以,你们需要,我会大力支持的。
会员 22:41:34
我觉得网站做的挺好的,也感谢站长对我的解疑答惑。谢谢~ 
C++技术网 22:41:39
培训是针对非计算机专业的,或者完全没有写过程序,然后为了工作才需要培训机构补一下。
会员 22:41:51
哦哦,这样。。。
C++技术网 22:41:54
对于你来说,你有自学能力,也是计算机专业,没有多大必要参加培训。
C++技术网 22:42:11
你缺少的就是实际写程序写软件的经验。
C++技术网 22:42:36
而这些经验是培训机构无法保证的,他们要让你们学知识,然后写项目的时间也有限。
会员 22:42:54
嗯嗯,是的。基本开发知识有的,数据结构,操作系统和网络目前恶补中,计算机组成原理估计短时间无力回天了,当时就没好好学,好多也忘了。。。
C++技术网 22:43:06
如果经济富裕,你培训也可以。但是不建议。
会员 22:43:13
明白
C++技术网 22:43:32
你都学过,这些基础理论,你现在可以不用着急,工作之后再补一下。
C++技术网 22:43:41
现在针对工作,做好准备。
C++技术网 22:43:56
数据结构、操作系统、计算机网络需要熟悉。
C++技术网 22:44:09
组成原理这个对于工作来说是不重要的。
C++技术网 22:44:35
其他三个,数据结构面试题考,操作系统可能会涉及到,网络需要。
会员 22:44:38
那前面你咋又说组成原理要补啊?
C++技术网 22:44:56
现在分清轻重缓急
C++技术网 22:45:42
马上要面对的就是找工作。等工作找到之后,工作能够应付了,再补基础。现在是先找到工作。不是说这些理论知识不要。
C++技术网 22:45:45
明白吗
会员 22:45:48
嗯嗯,其他三个已经深刻感受到重要性了,操作系统讲的进程,线程和设备IO作为Linux系统编程的理论支撑,计算机网络讲的OSI五层也是socket的基础
C++技术网 22:45:56

会员 22:46:12
明白,谢谢站长指导。良心建议~ 
C++技术网 22:46:26
工作是实践编程的,没有人关注你组成原理是否掌握,你能很好的解决问题,就很好。
会员 22:46:35
(⊙o⊙)嗯嗯。。。
C++技术网 22:46:40
在后期,问题复杂了,你就需要底层的基础知识了。
C++技术网 22:46:58
所以才需要你看。现在刚进去,也只能解决简单的问题,写简单的功能。
C++技术网 22:47:23
所以现在主要是应对工作。好好做做面试题,好好写好简历。
会员 22:47:32
嗯嗯,刚进去主要学习服务端到底该怎么写。现在脑袋里没有一点思路,就会几个API,死套路
C++技术网 22:47:49
Linux的系统使用你必须会。
C++技术网 22:47:54
这是你现在需要学的。
会员 22:47:57
客户端思路多,比如用线程处理绘图,防止主界面卡顿。
会员 22:48:08
嗯嗯,明白
C++技术网 22:48:41
服务器端,你好好搞清楚socket基本套路,几种socket通信模式,如轮询、事件、异步等,就差不多了。
C++技术网 22:48:58
socket编程也就是这些东西,没有什么特别的。
会员 22:49:11
懂了,的确你说的这些是很重要的点。
C++技术网 22:49:22
但是这些东西你要掌握用好,那可不简单哦。
C++技术网 22:49:45
不是写一个demo那么简单,而是要撑起一个业务。
C++技术网 22:50:05
socket只是写的基本的通信基础,而其他的功能都是业务的处理。
会员 22:50:11
嗯嗯,用好是不简单。光说API我都没掌握完全,我只会使用部分参数,还有一大堆参数不知道怎么用。
C++技术网 22:50:30
你把网站的服务器开发的一系列文章好好学习一下。
C++技术网 22:50:37
感受一下
会员 22:50:58
嗯嗯,好的。网站上一些内容,对我帮助挺大的。的确有收获
会员 22:51:02
那今天就咨询到这吧,感谢站长解疑答惑。 以后有问题,再来麻烦站长 
C++技术网 22:52:10
好的。
C++技术网 22:52:39
我会将指导的记录发布到网站,供你后续回顾的。你只要好好理解我说的话就行了。
C++技术网 22:53:16
之后有任何问题,都可以咨询。如果是典型的技术问题,就直接在线提问就好了。
请微信扫码阅读
为防止恶意爬虫,
已开启反爬机制

相关阅读