当前位置:首页 > 技术知识 > 正文内容

程序员修炼内功的方法_程序员 内功

maynowei6个月前 (09-04)技术知识60


给自己定个目标,每年要至少新增两本书。

1、编程基础

《C++ Primer》

《C++编程思想》

《代码大全》

《Clean Code》

《深入理解C++对象模型》

《大规模C++程序设计》

《Effective C++》

2、LINUX基础

《鸟哥的linux私房菜》

《UNIX环境高级编程》

《深入剖析Linux设备与驱动程序》

《Linux kernel development》

3、算法和数据结构

《算法导论》

leetcode刷题

4、计算机基础

《深入理解计算机系统》

《编译原理》

5、设计模式

《设计模式:可复用面向对象软件的基础》

《Head First设计模式》

6、Android开发

《老罗的android之旅》



此外还需掌握

一、网络基础

现在的信息世界已经离不开网络,人们的生活也离不开网络,这一点也不夸张,是网络了实现了信息互联,打破了时间和空间的限制,在整个因特网上连接着数以万计的计算机,那么对于程序员来说网络基础知识的修炼必不可少。

网络的物理基础

要构成一个网络,我们需要什么,是怎么做的,有哪些设备支持,交换机,路由器,网线,局域网、广域网、IP地址、DNS服务器等等,这些虽然跟具体工作可能关系不大,但是了解它们有助于你理解网络的工作方式,理解信息是如何互联的。

网络协议

这部分内容对于程序员来说就非常重要了,因为我们编写的程序要实现网络通信,都是要按照通信协议来,深入了解协议,能够帮助你快速优化程序和判断问题,以下几个协议是必须要吃透的:

TCP/IP 协议

UDP协议

HTTP 协议

FTP协议

另外对于OSI 7层网络模型也要熟悉。这些东西可以说是整个网络通信的基石,万变不离其中,也是很多大厂在面试的时候的必考知识。

二、操作系统基础

现代计算机的操作系统大家熟知的是windows和linux,操作系统本质上为用户提供了一个与计算机更容易去交互的人机接口,在很大程度上屏蔽了计算机底层的复杂性,使得普通人都可以顺利的用计算机来执行任务,并且提供了一系列的编程接口方面人们对计算机的应用功能进行扩展,可以说非常的了不起。

作为一个优秀的程序员,对于操作系统的原理应该做到非常熟悉,比如操作系统的启动过程,应用程序的加载过程,用户模式、内核模式、进程和线程等等,

windows的话,推荐大家看《windows核心编程》

linux推荐看《Linux内核设计与实现》、《深入理解Linux内核》

这些书都适合反复阅读,第一遍没有看懂没关系,要结合工作内容,工作经验再去反复理解,终将有所收获。

三、数据结构和算法

程序 = 数据结构+算法,可想这两个东西在编程领域的重要性质,也是每个优秀的程序员必须要掌握的东西。

现在确实有很多封装好的算法库和数据结构,所以很多人停在了会用的阶段,对于背后的原理并不清楚,我们不重复造轮子但是必须要有造轮子的能力,因为你很可能遇到没有适合你的轮子,这也是为什么很多大厂面试都要考算法和数据结构的原因,它能看出一个人解决问题的思维模式,而不是应用工具的能力。

常用的数据结构:

数组、链表、栈和队列、树、图、哈希表

这些结构就是各种高级数据结构的实现基础,也是算法的实现基础,务必要熟悉和掌握

常用的算法:

排序算法:

1.冒泡排序

2.选择排序

3.插入排序

4.快速排序

查找算法:

1.折半查找

2.倒排索引

3.二叉树查找

4.散列表查找

以上就是我认为一个优秀的程序员应该努力和花时间去修炼的内功心法,这些内功和心法才是你真正的核心竞争力所在,有了这些内功,那么你练起外功来也会感觉相当的容易,最重要的是你能解决别人解决不了的问题。

当然书上说来终觉浅,欲知此事要躬行,积累的过程就两个字:坚持!!!!!

相关文章

单片机C语言编程,心得都在这里了

单片机写代码总踩坑,头文件被无视,老工程师的经验哪里来?前几天写8x8矩阵键盘的程序,搞了三天代码一直乱报错。后来发现自己连头文件是什么都不清楚,之前写的都是小程序,压根没碰过.h文件。看别人的程序都...

ExpandListView 的一种巧妙写法(三十的另一种写法)

ExpandListView大家估计也用的不少了,一般有需要展开的需求的时候,大家不约而同的都想到了它然后以前自己留过记录的一般都会找找以前自己的代码,没有记录习惯的就会百度、谷歌,这里吐槽一下,好几...

Xamarin.Android使用教程:列表视图和适配器(2)

昨天我们已经一起学习了第1部分,这是探索Xamarin.Android的列表视图和适配器的的第2部分。在今天的文章中我们将探讨列表视图项排列使用BaseAdapter,还有自定义布局。让我们深入到代码...

Android让视图折叠(安卓叠加视图设置)

Android UI Libs之ExpandableLayout1. 说明ExpandableLayout,顾名思义,可扩展的布局,是一个可以帮助我们实现折叠功能的第三方库,折叠时,只显示头部,打开时...

Shopee新手指南:Shopee卖家中心用户界面介绍

1.Shopee各站点前台网页链接:2.Shopee各站点后台网页链接3.Shopee APP下载:安卓版下载链接:https://pan.baidu.com/s/1eSp8M1k#list/path...

btrace 3.0 重磅新增 iOS 支持!免插桩原理大揭秘!

重磅更新btrace 是由字节跳动抖音基础技术团队自主研发的面向移动端的性能数据采集工具,它能够高效的助力移动端应用采集性能 Trace 数据,深入剖析代码的运行状况,进而辅助优化提升移动端应用的性能...