每个大牛都是从小白成长过来的,对于刚刚步入职场的程序员来讲,面对身份的转变和还未熟悉的工作,都难免会有不适应,对自己未来的成长也会比较迷茫。
No.1
大部分的程序员从小白到大牛都是要经历一个循序渐进的过程,没有一蹴而就的成功,程序员的成长也是分阶段的,而每个阶段的侧重点又都不一样。
很多人总想一口吃成胖子,可往往就是这种急躁的心理,反而使得自己更难静下心来夯实基本功,适得其反。
要知道,成长从来就不是一件简单的事情。那么对于IT小白来说,java课程介绍怎样才能在更短的时间内成长为一名优秀的程序员呢?
No.2
首先,要制定详细而明确的阶段性目标。工作时如果有一个目标,会帮助你找到努力的方向,对自己的事业发展也很有帮助。而越详细、越明确的目标,其可实施性就越高,这也能使你找到短期奋斗的动力。
其次,要利用空闲时间多学习。技术实力始终是一个程序员能否往前走的关键,没事的时候多看代码,保持对代码的敏感度。只有看的多了,琢磨的多了,才能培养出好的代码审美感。
除了要保持对代码的敏感度以外,还要让这种敏感度成为你写代码中的利器。因此,你需要勤写代码,多做总结,不断优化自己写的代码。
最重要的是,要注重在项目中去锻炼自己。项目开发是帮助程序员快速成长的一个有效途径。实践出真知,只有多实践,才能发现自己在实际的项目开发中存在的缺点和不足,找出来并及时改正,将为自己积累下十分宝贵的经验。
No.3
不知道大家有没有听说过“空杯心态”?
“空杯心态”简单来说就是:如果你的杯子是空的,新东西就比较容易进去;反之,如果你的杯子已经满了,新东西就进不去。
举例来说,可能会有一小部分自以为是的同学,他们在刚从学校出来时思维较为固化,自己的东西太多,顽固又不肯放弃,新东西自然难以学进去,成长自然就慢。而具有空杯心态的同学,他们会适时清空自己,甚至有意识清除脑中顽固区域,虚心主动学习,渴望更多知识,学到的自然就会多。
一、知识点学习①字符串
1、strlen()函数的返回值是什么类型的?
2、字符串strlen() 的值,是否和他占据的内存空间相同?
3、你是否知道strcpy 函数存在的潜在风险?如何避免?
4、如果一个字符串没有字符串结束符,而调用str 开头的库函数,会发生什么?
5、Strcpy(),strcat(),strcmp(),strncpy(),strncat(),strncmp()内部到底是如何运行的?这些函数到底对源字符串和目标字符串做了些什么?你是否观察过它们运行时两个字符串内存的变化?
6、上面这些函数使用时,各有哪些需要注意的地方?
7、你会几种字符串查找 *** 作?
8、c语言中有字符串这个数据类型吗?
9、对字符串进行 *** 作的时候,是否为字符串结尾符预留存储位置?不然的话容易造成非常访问内存。
二、数组
1、你肯定知道,定义“int a[10]”, a[10] 这个元素是无效的。
2、你知道几种数组初始化的方法?
3、数组和指针有千丝万缕的联系而又不同,你是否对他们在不同情况下的使用进行过详细的总结?
4、“int calendar[10][20]”,这是一个什么样的数组?它拥有 10 数组类型的元素,还是 20 个?
5、“int a[10]”,数组名 a 在本质上是一个什么?你是否打印过 a 的值?
6、你知道几种获取数组某元素的方法?
7、指针和数组相同吗?什么时候相同?什么时候不同?
8、用指针和下标访问数组元素,那种方式更快?
三、结构体
1、你知道什么是位域结构体吗?如何定义它?如何使用它?
2、你知道字节对齐对结构体占用内存空间大小的影响吗?如何计算结构体占用内存的大小?
四、宏
1、你知道宏的本质是什么吗?函数?语句?类型定义?或者其他?
2、你知道语言设计者为什么设计宏吗?这些原因目前是否仍然成立?
3、你会设计带有参数的宏吗?
4、你知道使用宏的参数的的时候的注意事项吗?
5、你会设计带有可变参数的宏吗?
6、你知道使用宏有什么劣势吗?
7、你有没有更好的替代方案?
五、枚举
1、是否可以指定枚举中各项的值?
2、如果不指定值,枚举的第一个值是多少?
3、枚举的值是否可以是负数?
4、定义枚举的时候,你是否专门定义了枚举的最小值和最大值?
六、switch
1、switch©中的 c 的数据类型有哪些?
2、你是否在所有的switch 中都加了 default 语句?
3、是否在所有的case 中都加了 break 语句(一般情况的做法)?如果你不加 break ,将会发生什么?
七、static
1、static的三个主要作用是什么?
2、static的修饰的局部变量是保存在什么地方的?全局变量哪 ?
3、static修饰的全局变量和函数,在其他的文件中是否可以访问?如何访问?
4、你知道static 是 c 语言中实现封装和隐藏的利器吗?你是否经常使用?
5、定义在不同源文件中的static 全局变量,编译器是否允许他们的变量名称相同?他们在内存中的地址是否相同?函数那?
八、const
1、你是否经常使用const 来表明不能够被更改的变量?
2、你是否经常使用const 常量来代替宏?
3、下面四种情况,你知道是各表示什么意思吗?
int i_value= 10
const int* pvalue = &i_value
int const *pvalue = &i_value
int* const pvalue=&i_value
const int* const pvalue =&i_value
4、你知道const 常量如何初始化吗?
九、sizeof
1、对于字符数组,strlen 和 sizeof 的值是否相同?
2、S izeof本质上是函数还是宏?
3、S izeof的返回值是什么类型?
十、指针
1、“int *p” &p , p , *p 他们的值分别表示什么含义?
2、你定义的指针初始化了没?
3、你理解指针的指针的概念吗?你会使用吗?
4、“int *pi_valuepi_value = 0x100000” pi_value + 1 的值是是多少?
5、你会定义函数指针吗?
6、你会使用函数指针调用函数吗?
7、关于指针和数组,请参见知识点数组。
十一、动态分配内存
1、动态分配的内存是保存在什么地方的?
2、什么情况下使用动态分配内存?
3、动态申请内存一定要释放,否则会内存泄露。你是否使用过内存检测工具?
十二、函数
1、如何查看函数在内存中的地址?
2、如何给一个函数指针赋值?
3、你是否会定义可变入参函数
4、你是否可以区分函数的形参与实参?
5、如何定义函数名,以准确的表达函数的用途?
6、你是否使用const 来修饰函数入参和返回值,以表的特定的含义?
7、递归如何使用?
十三、变量
1、全局变量,局部变量,常量分别保存在内存中的什么地方?
2、不同类型的变量,你是否知道其作用域?
3、全局变量和局部变量是否可以重名?你是否在这样做?
4、局部变量在函数退出后是否有效,为什么?
5、全局变量为什么不允许定义在头文件中?有何危害?
十四、连接(Linux)
1、链接位于编译过程的那个阶段?
2、动态链接库和静态链接库使用时有何区别?
3、如何 对 动态链接库 进行 动态加载 (不用重启程序而加载链接库)?
4、动态链接有何优点?
5、动态链接库中是否定义了非static 的全局变量?你是否知道这是一个非常危险的动作?
6、动态库中的全局变量(非static )和函数(非 static )是否可以和上层全局变量和函数重名?重名后会发生什么事情?
十五、运行时的数据结构(Linux)
1、你知道什么是段的概念吗?
2、可执行程序可以分为几个段?每个段保存的是什么内容?
3、如何查看可执行程序各个段的大小?
4、当函数被调用时发生了什么?
5、你有没有试过程序的栈空间最大有多大?程序超过此大小会发生什么?
6、你使用的系统的栈是向下生长的,还是向上生长的?
十六、Include
1、如何避免对同一头文件的多次include ?
十七、声明
1、什么是 声明 ,什么是定义?
2、你是否会运用c 语言声明的优先级规则?
十八、关于 复杂度 :
1、软件的首要技术使命 是 管理复杂度。
2、优秀程序员的 一个特质 是将复杂的事情简单化,而非将简单的问题复杂化。所以,他们一般会选择简单的解决方案。
3、极尽机巧,复杂的解决方案,除了将新手搞得晕头转向之外,别无他用。
4、阅读优秀程序员的代码,是一种享受,你很少遇到思维的阻力,你可以尽情的享受简单之美。
慢慢来,一口吃不成胖子,asp.net网页设计线路、C#.net桌面程序线路,是两个不同的编程技术路线。但它们都要和数据库打交道,不管哪种数据库,至少要会使用一到二个,初期学习数据库重在应用,就是建数据库、合理设计表、写sql语句,存储过程等,后期重在数据库管理,如性能优化,备份恢复等。网页设计,做网站有时是分工做的,有人做美工,使用photoshop制作效果图,使用Flash做些小动画,有人写html页面就是将效果图转化为html代码,不管你是使用table还是div+css,只要美观、兼容性好,客户不在意技术多先进,关键是实现功能,使用简单方便,有人编写程序代码,就是后台代码文件。当然你要是独立完成整个网站,基本上就是要完成上面3种人完成的活。另外你说的都懂点,这也是现实中存在的,如果你不是老板,老板让你做什么你做什么,客户的需求往往是多样化的,保不准你正在编写桌面程序,突然说一个jsp网站让你改改,你不得不看看linux *** 作系统命令怎么用,即使是只使用cp复制替换个文件,安装个巨无霸oracle查看一个源程序提供的数据库表结构。电脑中病毒了,最后让你重装个系统,交换机坏了,买了个路由器,让你在制作个网线什么的。
最后想说的是自己独立完成项目,程序构架是非常重要的,首先要有这方面的基础,基础的获得最好的方法,就是分析被人写好的项目,看看别人都是怎么设计的,再遇到这类问题自己只管拿来用。事实上想创造一个好的架构太难了,如果有现成可用的只管用,没人在乎是不是你创造的。在一些行业,确实有一些行业特定的业务知识,当你参与到一个特定行业具体的项目的时候,通过学习行业其它软件,自己在做的时候只要实现已有的功能和本想加入的功能就可以了。单纯学习编写行业软件,没有市场需求,没有整改意见,也就没有持续更新的动力。行业软件除了业务不一样之外,大多是都是相似的。就目前的应用C/S还是主流,大多是MIS系统,但也有些公司开始向B/S转变,将以往的业务平台转到web上运行,要实现像桌面程序那样,哭的还是程序员,大量JavaScript代码,ajax应用足够忙活一阵的。
有一段编程痛苦的经历,其实是自己的一笔财富,当自己写过10万行代码、或50万行代码,再回首以前的经历,很多时候自己是在做着重复劳动。粘贴复制以前的代码。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)