正在自学 Linux c/c++ ,列了一个计划,麻烦您指点下,看看是否有需要补充的修改的。

2014-07-14 20:42:40 +08:00
 itsuibi
我是奔着linux c/c++ 程序员的方向努力的,下面是我自己通过google 及亦师亦友的三哥帮助写得一个计划。(我想知道如果我通过掌握这些书是否能通过面试,看一些公司的招聘条件:本人没有学历硬伤啊。)。
如题是否有需要补充的,恳请从事IT的朋友指点计划是否可行,如果可以希望能耽误您一杯咖啡的时间写下您宝贵的意见。我将感激不尽,或许因为您的指点未来将多一个从事自己喜欢职业的人。


我也想在看的途中自己试着做个小项目什么的,希望自己以后进入这个行业可以最快的上手适应。但是这方面太空白了,如果可以希望您能多说一些。
List:
已看过的书:

鸟哥的私房菜
c primer plus
c++ primer plus
windows核心编程(看了一般多吧,不打算从事win下开发就搁浅了)

视频类教程看过:

郝斌老师的c,sql,数据结构。c语言也能干大事等,有些乱有点不知道先从哪下手了…

接下来打算看的书:

打算按着这个顺序看,不清楚这个顺序是否正确
Linux编程一站式学习   (正在看)
linux系统编程
C++标准程序库
深度探索C++对象模型
EffectiveC++
STL源码剖析
数据结构(C语言版) 严蔚敏
大话数据结构
数学之美
TCP/IP协议详解-卷一
算法导论(这个我的数学功底太差,不知道能否看的明白搁到最后)
Unix环境高级编程
Unix网络编程
深入python
高性能MYSQL(第三版)

因为没有学历所以想多提高些自己,以后面试通过的概率大一些。
9052 次点击
所在节点    程序员
47 条回复
tonyluj
2014-07-14 22:22:45 +08:00
打的稍快有基础错误,
TCPL the c programming language K&R 写的

python也可以开发后端:
一般是python + gevent / python(pypy) + twisted

go最适合开发后端了,不少MMOG游戏后端已经用Go,七牛也是Go

nodejs个人看不好,它能做到的别人都能做到,它做不好的,别人依然做的很好
GPU
2014-07-14 22:29:55 +08:00
@tonyluj 我也刚刚开始接触学习C 也是在看K&R的那个 .

我是打算把C 理解一下 , 然后用学习 go 去写我自己的需要的东西 ,因为貌似用C 做后端有点什么那个说不出来.

还有层主是否 可以说一下啊 有哪些方便的知识学习有助于学编程呢 ?

很多人都零零碎碎的说 什么 数据结构 微机原理这些 . 能否谈一谈呢?
itsuibi
2014-07-14 22:30:37 +08:00
@allenforrest 嗯嗯,谢谢您的指点,正如您说的我想做服务器方面的开发,还有您提到的大量的练习,我也想做实际的项目,我仅仅是把书上的习题和例子敲了出来,关于项目实在是太空白了无从下手。
luoqeng
2014-07-14 22:31:02 +08:00
书随便翻翻就可以了,直接上代码来的直接些,比如弄个编译器前端,OS内核,TCP/IP协议栈的源码。 你看这样基本都全面覆盖了。
iptux
2014-07-14 22:36:03 +08:00
把日常用的操作系统换成 Linux
tonyluj
2014-07-14 22:40:33 +08:00
@GPU “有哪些方便的知识学习有助于学编程呢 ? ”
操作系统 —》 C -》数据结构(里面多少有点算法) —》 Let's Go
当Go熟练的时候,开发过几个项目之后,你就会不知不觉的需要了解底层,这些以后再说也不晚
itsuibi
2014-07-14 22:56:56 +08:00
@tonyluj 谢谢您解惑,关于项目实践多练习,你能否说的详细些,我也想边看书边做项目,可是这个项目却无从下手。
allenforrest
2014-07-14 23:12:38 +08:00
@itsuibi
可以尝试用 C++ 在 Linux 上写一个简单的 HTTP Server,这样能用到你学习到的 C++ 语言、网络编程、多进程/线程、并发处理、STL、数据结构等等,麻雀虽小,五脏俱全。
总代码量不会很大,但是能学到和巩固的知识太多了。
tonyluj
2014-07-14 23:14:03 +08:00
@itsuibi
首先从APUE上,把每个重要的例题都敲一遍,重点是文件IO进程线程这些

然后看UNP吧,看TCP/IP、socket、select/poll这些就差不多,SCTP这些都没人用,不用看了,然后从网上搜搜epoll,学习一下。在看这些的时候 一定要动手看看源代码,推荐FreeBSD+Linux一块看,比如netinet/in.h这个头文件中sockaddr_in结构体,Linux 下的就和FreeBSD下就不一样,顺遍谷歌一下,印象肯定很深。

这时候,可以写一些Demo项目:比如单进程TCP服务器(从最简单的echo开始),多进程、多线程、select、一直到epoll。
然后对Linux 网络编程有初步了解

之后可以看看memcached的源代码,从网上找份别人整理的文档,调重要的部分看一下。
然后自己实现一个简单的。期间可以学学libevent或者libev这两个库(推荐libev)。

然后可以找份文档,看看Niginx源代码,这个可是好东西。Tengine(阿里fork的nginx)的文档不少
然后自己实现一个,简单的就可以

期间你可能需要温习TCP/IP的知识,了解HTTP的知识。

到这里,基本能满足校招或者初级后端工程师或系统工程师的能力需求了
当然必不可少的要刷题~~~leetcode 剑指offer 编程之美 微软100题 等等~~~
bnpysse
2014-07-14 23:23:15 +08:00
建议还是不要看太多的书,找一本中级左右的,从头做一遍程序就差不太多了。如果中间遇到什么问题,可以尽量多Google一下嘛。

类似编程这类需要动手的,光看书效果并不好
YouXia
2014-07-15 01:23:27 +08:00
Linux C/C++ 学习曲线太长,如果只是想找个不错的工作的话,不建议跳此坑。
hualuogeng
2014-07-15 07:14:47 +08:00
csapp打个基础。
xixi10111011
2014-07-15 08:56:03 +08:00
@tonyluj
要是当年找工作能意识到第一份工作的重要性,抑或是能按照这个方法走下来,现在的职业发展可能就会是另外一番景象。
建议即将找工作的/有意向从事偏底层开发的硕士生按照这个过程走一遍。
dingyaguang117
2014-07-15 09:40:50 +08:00
@tonyluj leetcode 什么时候火的
xgdyhaiyang
2014-07-15 10:49:21 +08:00
给LZ再推荐一本:《深入理解计算机系统》
C++不是必要的,Python 可以看一下。
不需要两年,我2010年大三开始走你现在打算走的路,只花了半年,就拿到了腾讯暑期实习offer.
itsuibi
2014-07-15 10:59:57 +08:00
@xgdyhaiyang 可是我没有学历哎...估计没戏
duzhe0
2014-07-15 12:19:36 +08:00
书不在多, 在精。 同类型的书看一本就够了, 太过深究细节的书也不要花太多时间。
帮你做些减法
----
C++标准程序库
深度探索C++对象模型
EffectiveC++
STL源码剖析
----
这几本只看第一本就可以,而且最好放在算法导论后面



-----
Linux编程一站式学习 (正在看)
linux系统编程
Unix环境高级编程
Unix网络编程
--------
前两本估计内容相似,都是linux编程入门书籍,内容泛而不精, 选一本快速过一遍即可。 后两本太过经典,只涉及标准UNIX系统接口和核心C库接口,需要精读。

-------------
数据结构(C语言版) 严蔚敏
大话数据结构
算法导论(这个我的数学功底太差,不知道能否看的明白搁到最后)
----------------
只看最后一本即可



--------------
数学之美
TCP/IP协议详解-卷一
深入python
高性能MYSQL(第三版)
-----------------
数学之美没看过,不评价
TCP/IP协议详解 我感觉有点老,可以考虑换成国内的教材《计算机网络》
python的话真不知道有什么书值得推荐,但我觉得你更应该先学Shell
高性能MySQL并不是一本mysql入门书
duzhe0
2014-07-15 12:26:30 +08:00
我建议的书单:

算法导论
深入理解计算机系统
linux系统编程
Shell脚本学习指南(非常重要)
UNIX环境高级编程
计算机网络
UNIX网络编程

边读书边实践是非常重要的,装一个linux的虚拟机, 多折腾折腾
itsuibi
2014-07-15 13:06:00 +08:00
@duzhe0 谢谢您给我一个清晰的思路,忘记说了,我已经装了centos 看的时候也都在机器上敲了,也认真的看了每个人的热心解答,关于建议我不要只看书,我应该怎么实践呢,只是书上的例子我自己也感觉有点少,不知道如何选择适合自己的项目。
duzhe0
2014-07-15 13:36:42 +08:00
实践就是说看书的同时把代码敲一下,编译运行一下看看效果,加深印象和理解。看完以后, 也可以选择写一个简单的ftp服务器, http服务器之类的东西练手。能找到一份相关的工作是最好的,就不愁不知道干嘛了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/122616

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX