【vb精品源码栏目提醒】:网学会员,鉴于大家对vb精品源码十分关注,论文会员在此为大家搜集整理了“Java程序员上班那点事儿 - 软件工程”一文,供大家参考学习!
前言 不久前,我曾在网上论坛上看到了一个这样的帖子: 大家给我个底吧,我是即将毕业的大学生,现在有软设的证书了。
主要擅长于计算机的维护、应用以及开发; 软件方面:现以通过国家软考中心软件设计师资格考试; 主要熟悉的 IDE 环境:VC,CBUILDER,
VB; 主要使用的数据库接口:ADO; 主要使用的数据源:ACCESS,SQL SERVER,擅长使用 SQL 语言; 主要使用图形接口:OPENGL,对 DirectX 接口也有一定了解; 其它语言:JAVA(J2EE、J2ME); 网络方面:熟悉 ASP,PHP,JAVASTRIPT,以及网络构架设计、施工、调试,对安全知识也有相当的了解; 系统维护方面:有三年的计算机维护经验,熟悉系统工作原理; 其它:熟悉 CAD、PHOTOSHOP 等几乎所有常用软件的使用,UNIX 系统的应用; 我投了很多简历,并面试了几家公司,目前只有一家公司出1500,大家说我去吗? 这个quot准程序员quot朋友的简历真可谓是quot高、大、全quot,所掌握的技术很是全面,几乎是无所不知无所不晓。
然而,为什么只有一家公司愿意聘用他,而且才给他1500元的月薪?他很迷茫。
过了几天,有一个在软件公司开发团队做 Team Leader 的朋友想招聘 Java 软件工程师,找我帮忙推荐,招聘要求如下: 软件工程师 (1人) 1、计算机或相关理工科专业;2年以上工作经验; 2、熟练运用 Java 等编程语言,熟悉其他编程语言如,VBVFP 等者优先; 3、熟练使用 MySQL 等主流数据库,熟悉 Oracle 者优先; 4、对 Linux 操作系统熟练,熟悉 Solaris 者优先; 5、工作踏实认真,具备良好的团队合作精神及良好的沟通能力; 6、有独立项目开发经验者优先。
(私下透露月薪范围是4500-6000视个人能力而定) 他跟我说他们贴出这个招聘启示已经一个多月了,也没有招到合适的人,请注意这个招聘要求可比上面那位仁兄简历中写的技术少多了。
是什么原因让我们的用人单位总是招不到人,在其并不复杂的用人需求面前如此的困惑,又是什么原因让我们的quot准程序员quot在应聘工作岗位时四处碰壁呢? 是我们的quot准程序员quot们掌握的技术不够全面吗?还是用人单位岗位要求太复杂?显然都不是,现实情况却正好相反,那是什么原因造成的这种局面? 我告诉大家,无非是两点原因:第一点,应聘者对自身没有一个清晰的定位,不是好高骛远,就是定位过低。
第二点,应聘者所掌握的技术知识和工作岗位的需求脱节,要么是学了用不上,要么是有用的没有学。
这两点原因无外乎就是quot对即将走向的工作岗位没有清楚的了解quot。
如果,我们的quot准程序员quot能够做到quot知己知彼quot那么自然quot百战不殆quot了。
本书就是让我们即将走向程序员岗位的朋友们,能够做到既quot知己quot又quot知彼quot,在入职前能够对这个职业有一个清楚的了解,在入职后对职业方向有更清晰的认识,从而,使大家更加充满自信的走向工作岗位。
目录 《我工作 我 Java》 1 《 》原 名 : Java 程序员要上班! 1前言 8第一卷 生存法则 9第1章 知己知彼,百战不殆 101.1 问题1:这个职业赚钱吗?赚多少钱 101.1.1 修炼第一层境界:剑指四方,试问天下谁与争锋 111.1.2 修炼第二层境界:世界如此之大,要学的东西很多 111.1.3 修炼第三层境界:最深即最浅,最浅即最深,不过如此 121.1.4 点评quot修炼三层境界quot 131.1.5 回答这个问题 131.2 问题2:大学毕业生找不到职业入口 131.2.1 工作经验都是什么经验 141.2.2 他们为什么面试的时候这么问? 151.2.3 程序员的笔试 201.2.4 回答这个问题 231.3 问题3:跨行业真的这么难吗? 241.3.1 跨行业最难的是什么 241.3.2 跨行业的入口--原来从事行业的业务知识 241.3.3 农民造出了飞机,为什么他还是农民 251.3.4 回答这个问题 251.4 秘诀:经营自己的优势 251.4.1 善于发掘和积累自己的优势 261.4.2 善于展示与利用自己的优势 261.5 点评quot经营自我quot 28第2章 软件开发职业的误区 282.1 误区1:软件开发职业是青春饭 292.1.1 不必为30岁以后烦恼 292.1.2 30岁以后照样可以编程序 292.1.3 50多岁的程序员多的是 302.1.4 点评quot青春饭quot 302.2 误区2:做软件开发必须要加班熬夜的工作 302.2.1 程序员们熬夜工作的借口 302.2.2 常态加班的危害 312.2.3 控制好工作的一日时间表才是关键 322.2.4 quot偏执与狂热quot不等于加班加点 332.2.5 程序员的大脑与第二大脑 332.2.6 点评quot加班熬夜quot 342.3 误区3:开发一个软件产品一定是集团作战 342.3.1 几百人的公司其他人都在干什么 352.3.2 需要较全的人员配置的项目 382.3.3 坚信,只要是quot人quot做到的我就能做到 382.3.4 点评quot集团作战quot 392.4 误区4:程序员不是一般人 392.4.1 程序员的与众不同与平凡 392.4.2 程序员们就是一般人 412.4.3 点评quot一般人quot 422.5 误区5:存在quot软件蓝领quot岗位 422.5.1 quot软件蓝领quot是个quot美梦quot 422.5.2 quot让程序员放弃思考?quot是个quot噩梦quot 432.5.3 软件开发流程quot理想quot的quot不理想quot 432.5.4 quot软件蓝领概念quot忽略的东西 462.5.5 现实中的软件开发团队 482.5.6 点评quot拧螺丝quot 502.6 关于误区 50第3章 程序员的quot菜鸟心态综合症quot 513.1 症状1:指望着公司里有一个老师 513.1.1 临床表现 513.1.2 治疗1:弄明白她为什么辞职 513.1.3 治疗2:理解公司的本质是什么 513.1.4 治疗3:要搞清楚你的主管是你的老板,他绝对不是你的老师 523.2 症状2:不知道怎么让自己前进 523.2.1 临床表现 523.2.2 治疗1:你只管低着头上山,暂时不要向山上看 523.2.3 治疗2:明知山有虎,偏向虎山行 533.2.4 治疗3:没有过不去的火焰山 533.2.5 治疗4:虚心使人进步,骄傲自满要不得 543.3 症状3:想做圈养的羊,不想做野生的狼 553.3.1 临床表现 553.3.2 治疗1:理解quot丛林法则quot生存的法则 563.3.3 治疗2:向掠食动物学习如何生存 573.4 症状4:缺乏自信,总对自己说 No 573.4.1 临床表现 573.4.2 治疗1:生活取决于自己 573.4.3 治疗2:找到通往高楼的那扇门 583.4.4 治疗3:逐个排除你恐惧的理由 583.5 症状5:缺少幸福感,内心总在跳跃 593.5.1 临床表现 593.5.2 治疗1:比一比到底谁最幸福 593.5.3 治疗2:要努力进取也要找到幸福的理由 603.6 症状6:困兽心态,焦躁与不安 603.6.1 临床表现 603.6.2 治疗1:像猴子一样生活 603.6.3 治疗2:多和团队成员沟通 613.7 症状7:缺少感激心,心存感激让你受益匪浅 613.7.1 临床表现 613.7.2 治疗1:心存感激不等于低人一等 623.7.3 治疗2:首先应该对你的领导心存感激 623.7.4 真心换真心 633.8 症状8:不知道什么是quot团队合作quot 643.8.1 临床表现 643.8.2 治疗1:分析在公司上班的三个目标 643.8.3 治疗2:团队合作--就是团队主管的目标 653.9 点评quot心态quot 65第4章 换位思考,项目主管的招聘技巧 664.1 招聘就像大海捞针 664.2 技巧1:是否有独立完成项目的经验 664.2.1 独立完成一个项目的经验是什么经验 674.2.2 没有独立生存的能力不能有最佳团队合作 684.2.3 测试手段 694.2.4 锻炼攻略:需要主动寻找独立工作的机会 714.3 技巧2:是否有独立解决问题的能力 724.3.1 见招拆招的能力 724.3.2 程序员的韧性 724.3.3 测试手段 724.3.4 锻炼攻略:训练创意思维 744.4 技巧3:评价程序员的思考方式 744.4.1 一切皆程序 754.4.2 找到规律 764.4.3 锻炼攻略:抓住中心把复杂的事情变简单 774.5 点评quot换位思考quot 79第5章 程序员,保持你前进的步伐 805.1 程序员前进的四个阶段 805.1.1 第一阶段,找到一个编程语言去入门 805.1.2 第二阶段,用所这门语言去分析和推理 805.1.3 第三个阶段,新知识新技术的积累 815.1.4 第四个阶段,大道无形 815.2 学习与积累 815.2.1 找到好书,相当于找到一个好老师 825.2.2 每本书都没有从头看到尾是不是等于不用功? 845.2.3 学会建立沉淀目录 86第二卷 制胜法宝 88第6章 Java 程序员的七种武器 896.1 武器1:编程 IDE 开发工具 896.1.1 Team Leader 的嗜好 896.1.2 什么功能是程序员最需要的 896.1.3 下面这些 IDE 你都用得到 936.1.4 点评quot开发工具quot 986.2 武器2:数据库系统 986.2.1 广告与市场的力量 986.2.2 不要盲目选择数据库,根据用途选择合适的数据库 996.2.3 以下这些数据库绝不能仅仅是quot眼熟quot 1006.2.4 研究一下 JDBC 源程序 1026.2.5 不熟悉数据库就会quot绕远quot 1136.2.6 点评quot真相quot 1176.3 武器3:Web 服务器软件 1186.3.1 Web 服务器是如何工作的 1186.3.2 支持 JSP 的 Web 服务器的原理 1196.3.3 常用的 WebServer 1206.3.4 研究一下 Web Server 的源程序 1206.3.5 点评quot深入研究quot 1246.4 武器4:操作系统 1256.4.1 让我们看看这个招聘启事 1256.4.2 Java 程序员为什么需要研究操作系统 1256.4.3 我们应该更关心操作系统的哪些方面 1256.4.4 哪些操作系统我们要重点关注 1266.4.5 点评quotLinuxquot 1316.5 武器5:编程语言 1326.5.1 Java 程序员只会 Java 语言行吗 1326.5.2 各个编程语言的特长 1346.5.3 点评quot第二门语言quot 1366.6 武器6:辅助设计工具 1366.6.1 UML 图设计工具 1366.6.2 常用 UML 设计工具 1376.6.3 UML 要quot灵活quot的掌握 1406.7 武器7:版本控制工具 1406.7.1 工作原理 1406.7.2 常用版本控制工具 1406.7.3 融入团队的开发氛围 1416.8 点评quot武器quot 141第7章 破除 Java 开发中的封建迷信 1427.1 迷信1:Java 占内存到底大不大 1427.1.1 测试一:让程序去裸奔 1437.1.2 测试二:针尖对麦芒 1467.1.3 让人不再quot迷信quot的测试结果 1477.1.4 先天与后天 1477.2 迷信2:Java 和 C 到底谁快 1487.2.1 测试一:让程序转起来 1487.2.2 测试二:读取个大文件吧 1497.2.3 测试三:内存处理的速度 1527.2.4 测试结果分析 1537.2.5 也不要过于迷信 C 语言 1537.2.6 Java 语言与 C 语言之间的应用比较 1547.3 迷信3:Java 就等于 JSP 吗 1547.3.1 一个面试的现象 1547.3.2 JSP 开发时间长了的误解 1557.3.3 Java 的纯真年代 1557.3.4 Java 绝对不等于 JSP 1567.3.5 努力保持一个纯真的心态 1567.3.6 点评quot纯真quot 1567.4 迷信5:C/S 与 B/S 相比一无是处 1567.4.1 B/S 是一个很好的创意 1577.4.2 B/S 程序本身也是一个 C/S 程序 1577.4.3 C/S 程序的优势--速度 1587.4.4 C/S 程序的应用领域 1587.5 迷信6:J2EE 的开发必须用 EJB 1597.5.1 EJB 真人真事 1597.5.2 我们不禁要问,什么是quot服务集群quot?什么是quot企业级开发quot? 1607.5.3 把 EJB 掰开了揉碎了 1607.5.4 EJB 的最底层究竟是什么 1617.5.5 EJB 中所谓的quot服务群集quot 1637.5.6 这种部署难道是无懈可击 1647.5.7 EJB 活学活用,J2EE 不是必须使用 EJB 1657.5.8 quot技术quot不是神,不要动不动就quot崇拜quot 1657.6 点评quot迷信quot 165第8章 揭秘中大型应用系统 1668.1 何谓quot中大型应用系统quot? 1678.2 无法学习与模拟 1678.3 资深程序员的quot经验quot 1678.4 为什么要熟悉系统的运行环境 1688.5 带你进机房里去看看硬件设备 1688.5.1 机房的基本情况 1688.5.2 quotUquot的概念 1708.5.3 机房中的设备 1718.5.4 在机房里我们发现了什么 1758.6 安全与效率--永恒的主题 1768.6.1 绝对安全是不存在的 1768.6.2 RAID 1778.6.3 负载均衡 1788.6.4 双机、集群的配置模式 1798.6.5 网络流量与速率 1808.6.6 带宽 1808.7 一个软硬件部署方案实例 1808.8 点评quot经验quot 181第9章 为什么要学习用框架开发 1829.1 学习框架是因为它quot火quot 1829.2 使用框架开发的好处 1829.2.1 框架的目的是简化编程工作 1829.2.2 框架是一个应用程序的半成品 1839.2.3 框架的好处是代码重用 1839.3 框架不仅仅只有quotSSHquot 1839.3.1 WebWork 1839.3.2 EasyJWeb 1849.3.3 Click 1849.3.4 JBlooming 1859.4 用框架的思想去quot自由思考quot 1859.5 自己也可以试着做一个 1869.5.1 先看看不用框架怎么编写程序 1869.5.2 从应用程序中找到共性的东西 1889.5.3 我们试着做一个最简单的框架 1889.5.4 有了这个框架开发工作被简化 1939.6 点评quot自由思考quot 193第三卷 达人策略 195第10章 高手有多高菜鸟有多菜 19610.1 五年工作经验的quot菜鸟quot 19610.2 高手是怎样炼成的 19610.2.1 修炼1:Java 悟道 19710.2.2 修炼2:关注程序的品质 19710.2.3 修炼3:quot技术quot与quot技巧quot都很重要 21110.2.4 修炼4:走入 Java 的底层程序开发 21210.2.5 修炼5:从 Worker 到 Maker 22610.3 点评quot高手有多高,菜鸟有多菜quot 227第11章 控制内存的功力 22811.1 别指望 Java 和内存无关 22911.2 容易被搞晕的--堆和栈 22911.2.1 堆--用 new 建立,垃圾自动回收负责回收 22911.2.2 栈--存放基本数类型,速度快 22911.2.3 何谓栈的quot数据共享quot 23011.2.4 实例化对象的两种方法 23011.3 内存控制心中有数 23111.3.1 两个读取内存信息函数 23111.3.2 开发 Java 程序内存看的见 23111.3.3 必须要介绍的虚拟机的参数quot-Xmxquot 23211.4 内存控制效率优化的启示 23411.4.1 启示1:String 和 StringBuffer 的不同之处 23511.4.2 启示2:用quot-Xmxquot参数来提高内存可控制量 23711.4.3 启示3:二维数组比一维数组占用更多内存空间 23711.4.4 启示4:用 HashMap 提高内存查询速度 23911.4.5 启示5:用quotarrayCopyquot提高数组截取速度 24111.5 内存垃圾回收问题 24311.5.1 什么是内存垃圾,哪些内存符合垃圾的标准 24411.5.2 JVM 垃圾回收的相关知识 24611.6 点评quot功力quot 247第12章 产品和项目是程序员永恒的主题 24712.1 什么是项目,什么是产品 24712.1.1 quot产品quot的定义 24712.1.2 quot项目quot的定义 24812.1.3 quot产品quot和quot项目quot的区别 24812.2 软件产品开发是quot艺术quot 24912.2.1 软件产品开发需要灵感 24912.2.2 程序作品是你的一个传世的艺术作品 25012.2.3 软件产品开发需要quot前瞻性quot 25112.3 软件项目开发是quot军事行动quot 25312.3.1 开发者就是这个程序的quot三军统帅quot 25312.3.2 quot项目quot开发需要quot运筹帷幄quot 25312.3.3 项目控制,一艘船的故事 25412.3.4 点评quot军事行动quot 255第13章 非技术知识对工作的辅助 25613.1 辅助1:quot英语quot不需要专业,因为它只是工具 25713.1.1 英语与编程序无关 25713.1.2 用英语可以看一些英文文档 25713.1.3 掌握基本的工作交流时的英语词汇 25713.2 辅助2:quotGooglequot不是万能的,但不会用万万不能 26113.2.1 在网页标题中搜索关键字:intitle 26113.2.2 在特定站点中搜索关键字:site 26113.2.3 在 url 链接中搜索关键字:inurl 26213.2.4 精确匹配搜索:双引号 26213.2.5 搜索结果中不希望含某特定查询词:减号 26313.3 辅助3:程序员的常用文档写作 26413.3.1 程序员在软件开发过程中需要提交的文档 26413.3.2 程序员在日常工作中需要提交的文档 26513.4 点评quot非技术quot 265第14章 结束语 266第15章 本书简介 267第16章 相关人士对本书的赠言 268 第1章 知己知彼,百战不殆 从你决定迈出校门进入社会的那一刻起,你就进入了一个战场,这个战场虽然没有硝烟弥漫,没有炮火纷飞,但却绝不亚于任何一个真正的战场。
你要在这个战场上去搏杀,去竞争,利用各种可以利用的手段去赢取战斗。
在这个战场上,没有人会因为你的弱小而给予同情,也没有人会因为你是一个新手而手下留情,在这里你会感受到在学校里从来没有感受过的quot残酷quot,你将深深的体会到一句话,那就是quot优胜劣汰quot。
我们能在这个战场上获胜的法宝之一就是quot知己知彼,百战不殆quot。
我们如果能够在战斗前对双方的情况了如指掌,那么,取得胜利将会成为必然。
知己:要对自身的情况了解,要找准自己的定位。
这个定位是自己对自己充分了解的情况下进行的思考,对于准备迈向程序员职业的战士们来说,进行这个定位是绝对必要的。
知彼:要对未来工作岗位的一切做到尽可能的清楚,这就需要对你的对手有非常清楚的了解。
1.1 问题1:这个职业赚钱吗?赚多少钱 Java 程序员这个职业赚钱吗?能赚多少钱? 我们刚刚进入本书的正题就拿出一个俗不可耐quot钱quot字来和大家大谈特谈,未免不雅。
但是,我还是要在一开始就要说这个问题,因为这是很多朋友关心的问题,为什么不先说? 有很多即将进入这个行业的年轻朋友都很想问这个问题。
认真的面对这个问题,我们的回答是: 先不要急着问能赚多少钱,先要想想你为别人能提供什么服务。
任何一个职业都很赚钱!而且,都可以赚很多钱,想拿高薪不一定非要做程序员。
我不是在这里卖关子,这是真理,quot三百六十行,行行出状元quot。
那么这时,有些朋友听到了我说的这些话也许会很失望,其实也不要失望,这个职业有让你赚到高薪的机会,只是,赚高薪是在什么时候,或者是在程序员的哪个所属层级。
我们来了解一下程序员的修炼三层境界,了解一下这个内容会比较容易抓住本书中的内容要旨。
1.1.1 修炼第一层境界:剑指四方,试问天下谁与争锋 修炼第一层境界的程序员,对 Java 开发技术尽数掌握,开发工具掌握的也较为娴熟。
可以将第二层次程序员交给的任务完成的很出色,可以按要求独立完成类,接口和算法的开发。
注重技巧,对具体的编程语言非常熟悉。
能力之所及,皆无不用其极,认为所有开发知识,越是看起来深奥的越值得去研究,希望在自己开发的所有项目中,能用上的技术全用上,目的只有一个,就是尽可能多的获得实践机会。
总想四处试刀,看看手里的刀到底快不快。
满口都在谈,什么框架是最优秀的,C和 Java 的优劣,满脑子想着如何将一个程序编写的更复杂。
热衷于探讨技术问题,甚至有可能因为一个开发观点而和别人争论的面红耳赤。
在编码中,经常可以看到他们会这样写程序代码: if agt0 a else b 他们非常想证明自己掌握技术的娴熟程度,没错,他知道这个知识,在这里可以省略大括号。
这类程序员大有quot剑指四方,试问天下谁与争锋quot的气势,工作具有活力,常常因为一个技术细节加班到深夜,大多属于拼命三郎型。
如果项目不能让他们学到他们想要的东西,他们会放弃这些项目,去投靠别的公司,跳槽对于他们来说很平常。
第一层境界特征: 工作时间:三年内 工作时间: 工作任务:按要求编写类和接口的具体实现代码 工作任务: 工作内容:编写具体的代码 工作内容: 开发目标:无所不能 开发目标: 开发特点:注重技巧,对具体的编程语言非常熟悉 开发特点: 工作职位:初级程序员,程序员,软件工程师 工作职位: 参考薪金:¥2000-¥6000(仅供参考) 参考薪金: 1.1.2 修炼第二层境界:世界如此之大,要学的东西很多 修炼第二层境界的程序员,他们往往是从事了 Java 开发好几年了,从第一层境界进阶上来的好手,即,没有被优胜劣汰掉的那批人。
之所以说quot没有被优胜劣汰quot这么quot残酷quot的用词,并非危言耸听,因为,一般修炼第一层境界是非常艰苦的,没有坚强的意志,没有强健的体魄,完全不可能进阶到第二层境界,也就是说,要头脑始终保持清醒,抱有坚定的信念 ,同时,你的身体也要非常好,才能过关。
我们经常看到,在这一关掉队的人们,由于志向偏离,或者吃不了苦,或者对困难估计不足,甚至是身体原因放弃软件开发职业。
这里之所以强调quot身体quot,也是因为,第一关是如此的残酷,其实并没有人要求你加班加点,只是你的一腔热血使然。
所以,我们说在第二层境界中是quot没有被优胜劣汰quot的那批好手。
他们已经经历了若干个开发产品或项目,已经可以利用自己的知识去带领第一层次的程序员开发项目,可以说是一个很有经验的开发者,对在上一个层次阶段没有完全理解的技术知识已经相当的清楚。
可以自由的运用开发技术,并分的清楚什么技术用在什么地方。
最让他们头痛的是项目的quot工期quot和quotBugquot,根本无暇顾及什么技术实践的问题。
他们往往利用自己最擅长的架构方法去开发和设计整个程序的技术架构。
在编码中,经常可以看到他们这样编写程序代码: if agt0 a else b 他们老老实实的加上了quotquot大括号,因为他们知道,这些细节造成的 Bug 有可能让他们花去数天时间去调试,而这个省去的大括号,根本不会给系统带来任何优化。
他们知道的越多,越觉得世界是那么的广阔,不禁叹息quot世界如此之大,要学的东西很多quot,对 Java 开发技术方面的探求知识,大多是在产品的架构层面,更愿意去研究架构设计方面的知识,比如,他们很清楚什么时候使用 EJB,什么时候该设计什么样的一个接口。
他们逐步感到,Java 技术已经不能满足他们工作成功率的需求,他们不得不去花时间去研究项目管理的方法,对总体的技术关注点也从 Java 的具体开发技术,逐步的向和 Java无关的其他信息技术方向转移,比如,网络应用层协议,其他平台语言,甚至 Linux 内核裁剪等问题逐步纳入他们的视野。
后来他们会发现,他们想进入修炼的第三层境界的阻碍,恰恰是他们较高的技术水平。
第二层境界特征: 工作时间:工作三年以上,或直到退休 工作时间: 工作任务:按开发要求编写并指导第一层次.