可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。
还记得自己那年考清华失败,被调剂到中科大软院,当初有几个方向可以选,软件设计、嵌入式、信息安全等等,毫不犹豫地选择了信息安全。
为什么选信息安全?这四个字听起来多牛多有感觉,我本科是学物理的,记得做一个光学实验的时候,一个老师看我做的结果,说,学物理不是什么人都可以的,这个是需要一点智商的。
好吧,当初其实并非对我一个人所说,但我确实感觉到受到了鄙视,同时,我没有任何在物理上的精湛技艺可以反击我的老师。
由于整个大学期间,我都在沉迷游戏和小说,以至于辅导员说,现在找你都得预约。
而我的同学基本在学期开始和考试前能见到我,当时为了应付考试,我不得不学习复杂的物理公式和推导,有一门课程是激光原理,老师是双博士学位,大概是很厉害的,在我考试时,过来看我的卷子,说你的”背功“很厉害。
考试时如期通过,但老师大概都对我评价不高。自然,我是感到不愉快的。
回到我的毕业论文,大概是做一个电离层特征参量的反演,其实就是用迭代法解病态方程。
这个论文基本是没有人选的,因为题目本身可能相对比较难,也需要编程实现,好吧,当时下载的是盗版的matlab,参考的是一个日本学者和我导师的论文,铿铿锵锵地写出来了。还做了个所谓的参数优化,以使得结果看起来更平滑。
当时觉得很得意,我女朋友(现在的老婆)也很惊讶,我一个月做完了。
其实这不是第一次领略程序的魅力,在很久之前,高中时期,为了追一个女生,我做过flash,当时我就觉得拖来拖去很麻烦,但苦于没有基础,看不懂actionscript,所以难以深入体会编程的精妙,如果看到网上有一些类似雪花飘落、旋转字等效果,都是直接拷贝修改到完工。
现在回到,为什么选择信息安全上来,因为在大学时,很喜爱游戏,尤爱单机,国情大家是清楚的,而且我没有钱,也不知道哪里可以买到正版,这个猥琐了,呵呵。
仙剑、上古、火炬之光、火焰纹章,各种类型都喜欢。也很喜欢生存类游戏。给一个单机游戏做的exe补丁和用lua拓展的mod至今看来仍让我怀念。
讨厌网游是因为自己没有钱,搞不过RMB玩家,而且砸装备总失败。
唯独一个,2006年时,我玩完美世界,后来玩它的SF,为了砸装备,我第一次想到写封包外挂,由于当时已经有一些socket、tcp/ip的概念了,虽然C++玩不转,还是各种参考,写hook、写字节转换,同时完美当时打击WG很厉害,游戏基址容易变,又加了很多防调试的功能。
但为了不手工砸装备(SF里的石头几乎免费,就是砸上去的几率太低),我欲望那个强啊,所以用OD调试找网络发送的函数地址, 然后C++写代码hook。
程序最终工作很好,我还分享给了几个玩友。
后面也写过一些类似跳舞自动击键的WG,主要也是为了自娱自乐,因为我真的反应不过来屏幕上瞬间出现太多的key!
与程序为伍的日子很少,但每一次接触,似乎都是为了达到自己的一些目标。
所以凌乱的编程体验,虽然不系统,不精湛,却让我快乐。
再次回到为什么选择信息安全上来?也许答案已经很清楚。
当时觉得虚拟机加密太高深了,联网解密也难搞定,所以觉得信息安全一定是能解决我的问题的!
后来你猜到了,就是C,就是汇编,就是linux,我当时是多么反感linux,当时还用的是ubuntu,但为了课程,实在是没有办法,为了考研,自己系统自学了数据结构、计算机网络、操作系统、组成原理,当时在考研论坛上还和一个清华搞计算机体系的探讨问题,刷了好几页的帖子,现在看来,多幼稚!但,快乐也是固定在那个过程之中了。
我讨厌汇编,我讨厌C,我讨厌linux,但他们强大,能够满足需求,这就够了。
其实这不应该是我们真正的主题,而且入了行的也很少会java还是c#这么比,但初学的,java和c#往往就代表了两大流派,java代替了j2ee,c#代替了.net,ok,没有关系,这么作为title,不影响我们说事。
如果从语言的角度上来讲,c#毫无疑问胜出,易用、门槛低、优雅、较为简洁。但java和c#的语言特性是相似的。
在很多类的命名上,它们都如出一辙:
|
最近总有些断断续续的思考,想想从我入行以来,我到底学会了什么,做成过什么,以后要做什么,如何提升自己·······
工作3年了,常听人说3年,5年,10年是程序员的坎,每过一个都会有新的想法,新的改变。
最近刚失业,原公司要解散开发团队,转做其他业务,这个消息对我来说在意料之外,但是又在情理之中,只是没想到来的这么快,再这家公司待了2年,学到了不少技术,但是最后的半年,因为公司产品研发的一些问题,加上自身的懈怠和懒惰,基本上是在打酱油,现在想起来感觉很后悔,浪费了光阴,像这样能有一份收入同时又可以学到东西的机会其实是很难得的,只怪自己当时没领悟到。
然后就是投简历找工作,我预想的是有了工作经验再找工作应该不像当年刚毕业找工作那么难了吧,实际上却是当我拿着3年工作经验的简历面试了一些公司之后发现,其实我的能力对于胜任3年工作经验的工程师岗位还是有些差距的,突然感觉到比刚毕业时更无助的感觉,也后悔工作3年却没积累到3年的经验,也许我是一个经验用了3年,而不是有了3年经验。
我是做j2ee开发的,一直都在做网站方面的开发,但是这一段时间的面试下来,我感觉现在的公司招人特别是工程师这一岗位的要求是全能型人才,必须了解并掌握软件开发中每个环节的具体操作。而我,却只掌握了其中部分,其他的只有听过或见别人弄过,是只知其然,不知其所以然。所以鉴于我这样的情况,一些公司给我的定性是初级开发工程师,一开始我觉得很不高兴,哥好歹也工作3年了,就给哥这评价,可后来仔细一想,人家讲的未必没有道理。现在大部分软件公司的技术团队都不会很庞大,但是工作量和工作强度却是非常之大,如果一个团队成员不能独当一面,不能兼顾多方面工作,没有很全面的实力的话,整个团队效率和能创造出的效益也是非常低下的。
那我们作为一个Java程序员到底需要掌握多少技术才能适应现在的用人单位呢?
我个人总结后觉得有以下这么几项:
这就不用多说了吧,不用说精通,至少是常用的要熟练,不会说连jdk里面提供的类都没认全的(我确实有小部分不常用的没记住的T.T)
eclipse,SVN ,数据库管理工具等等
只要你是用java来做WEB应用,绝对少不了使用j2ee框架,目前流行的有
你需要掌握基本使用,部署,性能调优,配置
数据库一直是程序员需要重点掌握的一部分,当下主流的还是关系型数据库,产品有oracle mysql sqlserver db2,当然nosql型数据库也是未来方向,很多公司也已经在使用,如redis mongodb membase 等等
你需要掌握基本使用,和根据业务逻辑设计表,索引,视图,存储过程,函数等
凡是web应用首先都要部署到应用服务器上,常用的产品有tomcat,jboss, apache,resin 等等,还有用来提升性能的反向代理服务器如nginx等
你需要掌握如何部署项目,基本调试,调优
我们平常的编码通常在windows环境下,可是生产环境却通常是在Linux下,因为微软的东西,你懂得
所以我们需要掌握的是shell脚本,vi ,各种软件的安装,部署,其中shell脚本是最重要的(我个人觉得哈)
如果你不是专攻服务器编程的话,你一定会接触前端开发,这其中html你需要掌握各种标签的使用,css首先你得看得懂是吧,js 目前来看属于一门独立的程序设计语言,也是前端中非常重要的一块,需要掌握其语法和一些常用框架如jquery,extjs等的使用(我之前的公司前端只负责切html和css,js啥的都是我们自己来)
面试官最喜欢问的问题之一,这个被很多人吹的很神的东西我个人认为既不用奉为圭臬,也不用弃如敝履,这是一个思想的东西,也许写一辈子程序那23个设计模式也不一定全用的上,但是知道并且能够在适当的时候用他来解决问题就够了
记得国外哪位大神说过,编程=数据结构 + 算法 。虽然感觉平常的工作中用到的不多,但还是觉得这是一个内功的东西,不会这两样也许你也可以完成很多开发工作,但是如果你精通这两样,你的思想境界和思考问题的高度就不是一般人能比的了,如果想要在程序员这条路上继续走下去,不管以后是成为技术专家还是技术性管理人才,都是必须要烂熟于心的。
上面几点是我觉得应该掌握的具体的技术,再讲些其他层面的吧
这里的项目管理我指的是对项目架构的理解和软件开发标准化流程的一些东西,因为一个团队除了技术老大之外其他成员也还是需要深刻的达成一个这方面的共识,不然没法共事对吧
这个就是需要大量实践和多看书来培养的了,如果你想成为架构师这是必须的,目前web方面的项目架构都是朝着高性能,高可用,大数据的方向,你需要掌握的不仅是上面提到的所有技能还有技术之外的产品,业务等更深更广的东西
上面仅仅是我工作中遇到和我认为应该掌握的,也是仅针对Java的web开发方向,如果你是android开发的话,还需要掌握android sdk中的方方面面。
如果将上述方面的技术都掌握到熟练的程度,胜任一个3年经验的开发岗位应该是没有问题了(我就没有全部掌握...T.T),当然 如果你希望你的技术水平不只是熟练的话,个人认为则需要把上述其中几项往深度方面修炼,然后有所成再往广度发展,
先在一个领域有足够的深度,再往广度发展会容易很多,职业道路也会好走很多。
首先感谢您看我啰嗦废话到这里,以上都是我在工作3年这个十字路口的一些所思所想,肯定有所不足和幼稚,希望您看到这里也能发表下您对您职业生涯的感想,我们大家一起交流成长,努力提高自己的技术水平,可以为将来更好的工作机会做准备。
可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。
计算机语言有教学用的,并不一定就成为所谓的母语。
当时vb,。了,。当然还有c++