目录
-
大学选课那些事
- 语言程序设计,好好学,主要自学
- 数据结构,必学,十分重要
- 计算机网络,必学尤其是tcpip协议栈,是互联网的基石。
- 数据库,好好掌握mysql,超级重要
- 其它,可以选的,python数据分析,PaaS原理,
-
就业方向问题(前端or后端)
- 前端入门容易精通难,后端入门难,难学深,需要业务量来训练
- 后端注重功能性和稳定性
- 工资待遇
- 前端后端差不多,岗位需求也差不多,15-30k
- 发展也差不多,慢慢趋同
- 兴趣第一,Java或者spring学的多的话,可以搞后端
-
为什么不建议学python去找工作
- 写小工具,脚本比较方便
- python找工作很难,但是在人工智能,机器学习,数据分析,爬虫,web开发,自动化测试,运维的应用挺多
- 很少用python做后端的大规模项目
- Java是后端的主要生产力
-
如何快速的从GitHub上clone开源代码
- 国内有个类似的代码社区叫码云
- 1,转接
- 右上角+号,从GitHub导入仓库,导入GitHub上给出的下载地址,导入成功之后,然后在码云上下载,很快
- 2,把开源项目重新关联到GitHub上去
- 看项目路径,找到目录中的隐藏目录.git,打开,打开config文件,用vs打开,url中,把@后的gitee换成github即可
-
C语言和C++的学习路线
- 什么都能做,是哪种造轮子的语言,后台开发比较多
-
一、语言学习
- C语言主要检验能力:指针和内存管理学的怎么样
- 推荐书籍:《C Primer Plus》,《C和指针》,《C专家编程》
- C++
- 可看作是C语言的扩充和延伸,面向对象,封装,继承,多态。泛型,模板,STL库
- 语言学习尽快,高强度压下来,一鼓作气效果好
- C语言主要检验能力:指针和内存管理学的怎么样
-
二、基础四大件,比语言重要的多!!!
- 数据结构和算法(决定面试成败):
- 刷题特别重要!!!!!
- 弄好之后,记得高强度去刷LeetCode的题目,一定要多刷题目!!!!!!!!!
- 几大算法:查找,排序,动态规划
- 字符串,链表,二叉树,堆,栈,队列,哈希。
- 推荐书籍:《大话数据结构》,如果是Java的话,就去看《算法》,第四版,红色的。找工作必看的《剑指offer》
- 看完这些书,建议全部的精力去刷题。LeetCode的习题特别重要!!!!!!!!
- 计算机网络
- 狭义理解:TCP/IP协议栈,一定要了如指掌,
- 主要是原理,要记得原理,以及里面的一些具体的协议,比如ARP协议,IP协议,ICMP协议,包括TCP,UDP协议,还有DNS协议,还有HTTP协议和HTTPS协议,
- 推荐书籍:《TCP/IP详解》,
- 操作系统
- 面试时问的频次比较高的问题:进程和线程,还有以此引出的关于并发和多线程的东西,比如原子性,并发,锁等东西,
- 第二个比较重要的东西:内存,内存的分布,调度,
- 推荐书籍:《深入理解计算机系统》
- 设计模式
- 23种,不需要都熟悉,常见的几个有:单例,工厂,代理,策略模式,包括模板方法,用的多,熟练就行
- 推荐书籍:《大话设计模式》
- 数据结构和算法(决定面试成败):
-
三、应用与编程实践
- 工具,编程环境
- 建议操作系统:Linux,要学会使用,常见的Linux操作系统指令,要掌握。基本的shell编程要熟悉。
- 因为shell编程是生产工具,有一些批处理,还有自动化的脚本,还用shell写
- 推荐书籍:《鸟哥的Linux私房菜》(略厚,略多),可以看《Linux就该这么学》(通俗易懂,)
- 编译相关的编译工具
- 最重要的Linux上的编译器GCC,要熟悉
- 企业级项目开发中,编译的动作叫make,编译的动作都是写在一个叫makefile的文件中,这个文件要自己会写。即整个过程要自己设计自己写。makefile建议一定要学。
- 调试:Linux上,用GDB调试工具,会借助于它进行代码调试。英语好的,可以直接去看GNU官方的关于GCC和GDB的文档,中文版的可以去看第1版的《debugging with gdb》中文版,陈皓的《跟我一起写makefile》
- Linux的环境编程
- Linux系统编程
- 一定要去学Linux系统的一些API的使用,
- 多线程编程
- 线程,资源,信号,同步,互斥,锁
- 网络编程
- 具体的Linux操作系统上的一些网络编程的API,还包括一些IO函数的一些具体的代码编程,
- 推荐书籍:《Unix环境高级编程》(必看),《Linux高性能服务器编程》(非常不错),关于多线程的《POSIX多线程程序设计》
- Linux系统编程
- 工具,编程环境
-
C++书籍推荐
- https://www.bilibili.com/video/BV1ob411m76i
- 《Essential C++》侯捷,讲的基础,非常适合C到C++的过渡。很有收获。值得反复阅读。
- 《C++primer》中文版,讲的很全,也较基础,值得反复阅读。
- 建议装个VC环境编译编译
- 《Effective C++》基础一些,《More Effective C++》侯捷。更难些,主题更高级。
- 《C++标准程序库》,容器的概念,STL模板库,(因为STL本身就是一个很知名的开源项目),算法,迭代器,配接器,
- 《深度探索C++对象模型》主要是C++的底层的原理,虚函数表,主要是为了校招,细节的问题都有讲到。
-
Win?Mac?Linux?哪个系统适合编程开发
- 做文档,Visio画图,是在Windows上做的
- 写代码,做开发,是在Mac上做的。
- Linux里面的图形界面不怎么用。用Linux都是通过ssh终端远程连接上去用。
- 公司的线上环境,生产环境都是用Linux居多。
- Linux安全,稳定,开源,可定制。
- 使用方式:在Windows上装了个VMware虚拟机,在虚拟机上装了个Linux,通过XShell或者SecureCRT用ssh的方式远程连接到Linux上。Ubuntu
- 配置:
- 8G内存,系统盘固态,是否有显卡对编程影响不大
- 不推荐装系统,推荐在虚拟机中装Linux。
- 不推荐黑苹果,·
-
自学编程开发的误区
- 不顾基础,盲目追赶时髦技术。
- 一定要打好基础,搞懂基础概念。看VC++是学不了C++的
- 语言不分好坏。主要看使用环境。
- 封闭式的学习,不去交流。
- 多去找别人帮忙。找人指点。敢于分享,走出去交流。发现自己的不足和问题。
- 代码总记不住。
- 反复的练习,不停地思考。代码并不需要记。
- 需要记得是设计代码的套路,模式。
- 注意学习编程方式,方法和套路
- 到处搜集学习资料,但是从来都不看。
- 资源在精,而不在多。越精越适合学习。
- 容易忘
- 找需求驱动。考记录,思考,总结,回顾
- 不顾基础,盲目追赶时髦技术。