⑴ C语言 高级程序员进
学习过程中,最主要的并不是只花心思在做题上。应该先把C语言基础语法,基础算法理解透彻,学会用计算机的思维去理解问题。比如在内存分配上,从抽象上和逻辑上进行思考。
建议把C语言的基础语法和常用算法看的透彻些,看熟练后,开始专注书上的例子,看例子是如何执行的。在上机练习时,多用断点调试,以便跟踪代码的执行过程,这对你熟练C语言有很大帮助。
其实C语言的学习过程,就是把人的思维方式转变为计算机的思维方式(过程编程)。如果是OOP的话,就需要让计算机知道人的思维。
⑵ 请问想成为C程序员,需要具备C语言中的那些知识
这个问题好,知道是为了什么而工作,奋斗有目的,具备知识才去找工作,而不是千篇一律的“C程序员待遇如何啊,能不能赚钱”之类。
我也是计算机专业。C语言算法语言的熟练仅仅是入门。c仅仅是操作底层的,主要作用就是契合硬件跟分配内存,最最主要目的是提高程序运行速度。
c语言要跟C++语言搭配。C操作低级硬件访问,C++提供高级抽象。C语言要认真学,一定一定要扎实,C++学习就要掌握很多面向对象的编程技术,说白了考虑的是算法。学程序,学的就是编程思想,算法很重要。
c语言跟C++面向的不是java之类的,java hadrop等语言主要目的是连接,不针对硬件的快速量产的软件,所有java之类语言速度慢不安全,仅仅适合数据库管理跟面向普通民用。c语言类高效快速安全,并且节省硬件,追求稳定,主要就是工业生产了,面向的主要对象就是工厂。写winCE,pda或者转硬件走嵌入式,单片机,都是你以后要选择要走的路。到底怎么走完全看你自己。
推荐的书就一本,C++ primer plus。搞明白这本书,对你很有用。
还有就是,得学数学。函数,方程是必须的。要走C++游戏编程还要学扎实物理,比如曲面建模,顶点运算,三角形等等。完全看需分配。当然,学完那本书,你自己就有了思路。
竟然三年前发的问题,不好意思。可能你已转行或者已经有所成就,我的回答仅仅坐个参考
⑶ 全国计算机软件水平考试之高级程序员
不晓得你有没有具体的去了解过,我本人和你的情况也差不多,自己对这方面也比较感兴趣,所以也考了几个证,简单的和你说一下。
1、软件设计师。
说实话,你可以先去考试中心的网站了解一下,至少我当时是还没有高级程序员这个说法,只有初级程序员,上去就是软件设计师了。我觉得你的意思应该和软件设计师差不多。考这个东西也不难,编程的思想主要是考察你的数据结构知识怎么样,都是非常基础的。他不在乎你会哪一种语言,只要会一个就可以了。相信你看了这么多,已经有一定的认识了。其实不管什么语言都是差不多的,程序的核心还是数据结构,语言只是一个工具而已。像软件设计师的考卷上最后就有3道选做题,就是不同的语言,你只要会其中的一种就可以了。语言不在于多,而在于精。我想这对任何一门课程的学习都是一样的。
2、感觉你自己前后说的都不一致。所谓的国家计算机二级以及三级四级,其实对于真正的计算机学院学生他们都不考的,因为对他们来说太简单了。而这个和我上面说的软件设计师又不是一回事了。
3、考这些考试都没有专业和工作经验的要求,你想考就可以报,工作以后想考还是可以报。
4、关于找工作。我想说的是如果仅仅凭一个证书就想进入该行业工作还是比较难的,除非你还有相关的工作经验或者项目经验。比如你可以找一个该行业的公司进去实习,参与一些项目。对找工作来说这些证书其实说实话含金量都不是很高的。思科的一些认证考试还是非常有含金量的,那个对找工作有帮助,但是像你不是软件专业学生,想通过那个认证的话,自己就要自学很多课程,还要参加外面的辅导班才行。不过刚开始你先考考这些个软件设计师,网络工程师什么的,对你后面的学习理解也很有帮助。
5、我个人建议你如果基础不是特别好的话,可以先考国家计算机等级考试,再考软件设计师,网络工程师,最后再考虑思科认证。国家等级考试非常简单,随便弄个C语言书,再加一个考试辅导就可以了。软件设计师和网络工程师可以参考各省的人事考试网,上面有各类指定教材,参考辅导书,非常详细。
6、个人认为面试的时候网络工程师很有用。毕竟考察编程能力需要你动手写,而计算机网络知识你却可以和别人聊。
就这么多了,希望对你有用。
⑷ 什么才算是“高级”c/c++程序员
二楼的说法上我不明白;
只有,
初级的才有 程序员
中级的有 软件设计师
高级的有 系统分析师
到底是那个
我想那应是熟练的程序员吧
⑸ 高级程序员 具体有哪些要求
综合的,软硬通吃,还要了解初部的网络知识。但如果是基础程序设计员的话对计算机原理要深入学习
⑹ 一般需要多少时间才能成为高级C语言程序员
这个要看个人c也分c和c++,时间的话看你打算下多少功夫了
⑺ c/c++程序员的平常工作是怎么样的。
程序员是从事程序开发、维护的专业人员。一般我们将程序员分为程序设计人员和程序编码员,但两者的界限并不非常清楚,特别是在中国。
作一个真正合格的程序员,应该具有的素质。
1:团队精神和协作能力
团队精神和写作能力是作为一个程序员应具备的最基本的素质。软件工程已经提了将近三十年了,当今的软件开发已经不是编程了,而是工程。独行侠可以写一些程序也能赚钱发财,但是进入研发团队,从事商业化和产品化的开发任务,就必须具备这种素质。可以毫不夸张的说这种素质是一个程序员乃至一个团队的安身立命之本。
2:文档习惯
文档是一个软件系统的生命力。一个公司的产品再好、技术含量再高,如果没有缺乏文档,知识就没有继承,公司还是一个来料加工的软件作坊。作为代码程序员,必须将30%的工作时间写用于技术文档。没有文档的程序员势必会被淘汰。
3:规范化的代码编写习惯
知名软件公司的代码的变量命名、注释格式,甚至嵌套中行缩进的长度和函数间的空行数字都有明确规定,良好的编写习惯,不但有助于代码的移植和纠错,也有助于不同技术人员之间的协作。 一些所谓的高手甚至叫嚣高手写的代码一般人看不懂,我只能说他不是一名合格的程序员。
4:需求理解能力
程序员要能正确理解任务单中描述的需求。在这里要明确一点,程序员不仅仅要注意到软件的功能需求,还应注意软件的性能需求,要能正确评估自己的模块对整个项目中的影响及潜在的威胁,如果有着两到三年项目经验的熟练程序员对这一点没有体会的话,只能说明他或许是认真工作过,但是没有用心工作。
5:模块化思维能力
作为一个优秀的程序员,他的思想不能在局限当前的工作任务里面,要想想看自己写的模块是否可以脱离当前系统存在,通过简单的封装在其他系统中或其他模块中直接使用。这样做可以使代码能重复利用,减少重复的劳动,也能是系统结构越趋合理。模块化思维能力的提高是一个程序员的技术水平提高的一项重要指标。
6:测试习惯
测试是软件工程质量保证的重要环节,但是测试不仅仅是测试工程师的工作,而是每个程序员的一种基本职责。程序员要认识测试不仅是正常的程序调试,而要是要进行有目的有针对性的异常调用测试,这一点要结合需求理解能力。
7:学习和总结的能力
程序员是很容易被淘汰的职业,所以要善于学习总结。许多程序员喜欢盲目追求一些编码的小技巧,这样的技术人员无论学了多少语言,代码写起来多熟练,我们只能说他是一名熟练的代码民工,他永远都不会有质的提高。一个善于学习的程序员会经常总结自己的技术水平,对自己的技术层面要有良好的定位,这样才能有目的地提高自己。这样才能逐步提高,从程序员升级为软件设计师、系统分析员、项目经理。
作为高级程序员,乃至于设计师而言,除了应该具备上述全部素质之外,还需要具备以下素质:
1、 需求分析能力
2、 整体框架能力
3、 流程处理能力
4、 模块分解能力
5、 整体项目评估能力
6、 团队组织管理能力
⑻ C程序员怎么学习
一、知识点学习
①字符串
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_value; pi_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、阅读优秀程序员的代码,是一种享受,你很少遇到思维的阻力,你可以尽情的享受简单之美。
⑼ 如何才能成为高级程序员C语言的
个人感觉
各种语言都是相通的,一种会了其他的真的都没什么,你说你过了C二级,很不好意思
我不得不泼你凉水在真正从事软件开发的人中,考了软件设计师都可能是个初学者
更何况是c二级呢?你看的那本书仅仅是基本的语法
编程的入门部分!以后还有很多东西要你学的(我单指C语言这块!)数据结构很重要的!建议你不仅要看完,而且要多看几遍
书上的算法最好能自己编程实现!图的部分可能比较麻烦你可以暂时作为了解!链表,顺序表,二叉树,排序查找算法等等都是非常非常重要的!
⑽ C 程序员和JAVA 高级程序员哪个比较难学
C绝对比java难,一个面向过程,一个面向对象。
学c,要有很强的逻辑思维;
java相对就容易好多了,很多方法,人家都帮你做好了,你调用就可以了。