入门-中级-高级一、JavaSE基础1.1、J2SEJAVA开发基础知识|Eclipse开发环境|J2SE5.0API|J2SE8.0新特性|多线程技术|Socket网络技术|RegularExpression|Java反射技术|Properties技术|各种实战设计模式|JavaDebug技术|面向对象设计原则详解|实例解决面向对象设计|面试题内部详解|面试答题技巧详解|AWT/SWING技术1.2、实战数据结构数据结构实战训练|数组、链表等常用数据结构实战1.3、正则表达式正则表达式基本语法。预搜索、断言、分组。JAVA操作正则表达式Matcher/Pattern1.4、反射机制JAVA的动态性、Reflection技术、JVM类加载器、Class对象、Method等。1.5、CHAT项目Chat项目通过完成一个模拟的在线聊天系统,主要锻炼大家对于TCP/IP、Socket编程、C/S模式的编程、线程的运用等方面的能力。1.6、坦克大战单机版/图片版/网络版这三个项目通过大家喜闻乐见的小游戏的形式来锻炼大家对于JavaSE综合运用的能力,并且能够初步运用面向对象的编程理念,锻炼初步的设计能力,并基本掌握多线程的编程。二、JavaWeb开发2.1、数据库技术Oracle基础管理;SQL语言PL/SQL语言;触发器、存储过程;MySQL,SQLServer简介;业界常见问题设计;数据库表的设计范式;数据备份与移植;多表连接难题详解;嵌入式数据库应用;2.2、JDBC技术JDBC基础;连接池技术;使用设计模式开发连接池;详细扩展与测试池效率;2.3、HTML4&CSS&JavaScriptHTML语言;CSS语言;JavaScript语言;JS常用模版;后台管理模版;DOM;JS操作CSS;JS操作DOM;ECMAScript;JS操作DIV;protoype;js基于对象编程;;Firefox和firebug调试技术;2.4、Bootstrap前端css框架,让我们的学生不会美工也能做出漂亮的页面;2.5、JqueryJquery基本技术;Jquery使用插件;2.6、Http协议深入使用HttpWatcher深入理解协议内部机制;2.7、JSTL标签库JSTL核心标签库,JSTL函数标签库、JSTL格式化标签库,JSTL之XML解析标签库、自定义标签技术;2.8、JSP&ServletServlet技术;JSP技术;JSTLTagLibrary技术;Filter&Listener技术;报表系统;FileUploading;Tomcat服务器技术;servlet过滤器和AOP编程;servlet监听器;2.9、SCM技术CVS初步;SVN简介;2.10、JavaWeb实战演练综合运用所学知识;HTML+CSS+JS;JSP+Servlet+JavaBean;FileUploading;分页技术;数据校验;MVC初步;Filter;Listener;2.11、XML技术XML+XSL+DTD/Schema;XML数据解析;XML应用详解;XQUERY技术;CAST技术(XML数据和对象互转);2.12、AJAX技术AJAX技术基础;AJAX技术框架;AJAX技术调试技巧;2.13、项目实战《基于servlet/JSP技术的电子商务网站》、《基于AJax和Jquery的BBS论坛系统》、《基于ApacheCommonsFileUpload的网络硬盘系统》三、主流框架技术及项目实战3.1、流行Web框架简介Struts2/spring4.x/hibernate4.x/springmvc/WebWork/mybatis等简介3.2、MVC模式ModelViewController模式深入3.3、SpringMVCspringmvc概述;springmvc的开发流程;springmvc基本配置;springmvc的注解开发;常用注解;service,control,reposity,reques+mapping,responseboby等3.4、Struts2.xStruts2的基本开发流程;action类的三种实现方法;XML配置的几种方法;Struts2国际化支持;Struts2异常处理;Struts2的验证框架;Struts2的多模块配置;拦截器;3.5、Hibernate4.xHibernate基本开发流程;ORM简介;模拟SQL语句的自动生成;hibernate的检索;性能优化一级缓存二级缓存查询缓存事务与并发悲观锁、乐观锁3.6、Spring4.x简单工厂模式;抽象工厂;工厂方法模式;Spring3简介;Spring的基本开发流程;IOC、DI;Bean的配置;SSH框架的整合;Spring的注解开发;SpringAOP开发代理模式静态代理、动态代理、CGLIB;3.7、MybatisMybatis简介;Mybatis的开发流程;配置文件;映射文件;面向接口的Mybatis开发;3.8、手工编写实战开发struts2.x框架亲自动手开发struts2.x框架,融入设计模式,让大家的对struts的核心机制烂熟于胸!3.9、手工编写实战开发Hibernate4.x框架芯学苑名师亲自带领你开发hibernate框架,让你真正将ORM框架理解透彻!3.10、手工编写实战开发mybatis框架完成另一个ORM框架mybatis的开发工作!3.11、手工编写实战开发Spring4.x框架Spring是最着名的框架之一!也是业界应用范围非常广泛的框架!是否对其核心机制有透彻了解,往往是高薪的关键!因此,芯学苑名师带领你完成spring框架核心机制的开发。当别人还在探讨如何使用spring时,你已经更上层楼!3.12、项目实战《基于struts2+spring+mybatis的电子政务系统》、《基于springMVC+hibernate的在线考试系统》
Ⅱ 如何成为一名优秀的java程序员
牛逼的人总是让人羡慕,但如何才能让自己成为牛逼的人对我们来说更重要,本文分享的是如何才能成为java高级程序员,你和java高级程序员只差这一篇鸡汤!干了这碗鸡汤,未来不可限量!
1、离开舒适区,提高个人代码能力
不安于现状,高级程序员一般都具有丰富的项目经验,经验是能力最好的试金石,即使在碰到未知的问题,丰富的项目经验也不会让你觉得就束手无策。程序员是一个技术跨度很大的工种,对某种既定环境语言的依赖性太强,知识和技能都无法很好的迁移。
2、将复杂的问题简单化处理
乔布斯曾经说过,简单便能移动一座大山。一个高级程序员之所以让人觉得牛逼,不仅仅能用写出优雅简洁的代码,更重要的是他们还能将这种化复杂为简单、化繁为简的功力内化至各项工作,不管是面对多复杂的项目、多棘手的 bug 都能面不改色、心不跳,步步拆解问题,逐一各个击破。
3、自我总结,提升学习和解决问题能力
代码能力、工作状态只是一个高级程序员区别于普通程序员的外在表现,王者和青铜的核心区别在于思考方式和解决问题能力的区别。高级程序员可能每天会花半个小时总结当天的项目经历,反思自己的不足,思考问题解决或优化的方案。区别于初级程序员,高级程序员总结问题的往往能从本质出发,不会只停留在表面,弄清问题内在联系,抓住问题关键。这也就解释了为什么拿到一个项目需求,很多高级程序员不会首先去想代码实现,而是去想需求与架构的行为。
4、责任心和需求理解能力
高级程序员对自己的要求不仅限制于完成项目、解决问题本身,往往还会去思考并权衡需求涉及的一切,比如如何去支持设计模式、库、框架、重构和流程等,从内核到外层界面,既重视功能需求,还会注意到拓展性能、稳定性等需求,甚至还需要评估设计模块对整个项目中的影响及潜在的威胁。
总结:如何才能成为高级程序员,关键还是思想,学习的思想、总结的思想、创新的思想!
Ⅲ 看资深面试官透露是怎样判断IT开发人员水平的
1、计算机相关学科的学历背景,或者即使没有计算机学历背景,也要有计算机学科体系的完整学习经历,基础知识在我看来是第一步,如果你不懂数据结构算法,不懂计算机体系结构,不知道怎么设计算法,不知道计算机软硬件怎么工作的,那写出的代码也是质量差的无效率的,你只是写出来了,但是在我看来是没有价值的代码,没有可维护能力和积淀性的,我从来就不相信一个没学过数据结构算法,计算机体系结构,编译原理,软件工程这些课程的人写出来的代码,那些很多策划改行的程序的程序员是不会到我这里一面的,所以来我们这面试的,无论你之前多牛逼,那都是虚的,一定要做笔试题,一纸笔试题直接看出基础能力,曾经见到技术总监不会写快排算法的,说太久忘了,那你来指导什么?用你的经验在这喝茶么?需要你来这里做什么?这不是笑掉大牙么?为什么我不招一个专业基础优秀并且有活力且成本低易塑造的年轻人,数据结构和算法设计是这里必须通过的。一句话,做技术的,太虚没用,用你的专业能力说话,在这里我们会偏向那些名校背景的人,因为经验上看,学历背景好的专业能力普遍非常扎实,这点我觉得网易现在的技术的一枝独秀,不得不说和他的校招只招清北浙交的策略有很大关系
2、游戏开发领域的专业知识,游戏开发有很多特定领域的知识基础,包括3D图形学,AI,物理,音视频,操作系统平台开发,业务逻辑系统,很少会有人把这些面面俱到,这里面每一个都需要几本书的系统知识去啃,但是我们只需要看到你在这里面某一个或两个上面有深入研究和经验,比如你非常通晓渲染,opengl D3D 各种shader效果,渲染优化都玩得很好,那就是一个加分,比如你非常善于研究ai,对行为树,寻路这些有深入的经验,也是很好的,如果对这些全都一知半解,那是不行的,我们需要的不是只是每个都懂一点的人,在游戏的专业知识领域方面,先做一个专才。
3、聪明。没错这是非常重要的一个衡量标准,开发者一定是这个世界上IQ最高的一群人,我很看重IQ,面对日新月异的开发工具技术的变革,聪明代表你有更快的学习适应能力,并能够对问题提出自己的一定见解和解决方法,这个很重要。
4、工具的使用,工具是针对不同游戏项目的,比如你做unity,那要求你掌握unity编辑器,你做unreal,你做cocos,在我看来工具并没那么重要,一个基础扎实聪明的人对工具的掌握是很快的,甚至很多非程序员都能玩转工具,所以在面试时这个只占25%左右的比例,和我说你多了解多了解某个工具,那其实并没有那么值得炫耀,就像练功的外功和内功,我们更看重内功,工具是可以花时间弥补的,专业基础则很难,那需要悟性。我们现在主要招聘U3D的开发,对这块,我们会衡量简单的U3D编辑器基础,U3D 的一些深入的概念,比如优化内存,drawcall,光照系统,assetbundle包,资源加载,动画系统,GUI系统,还会深入的考察C#,LUA的开发的情况。如果面试者只是把unity当office用,那就在这块没有分数了,一个并不是很复杂的问题可以难到很多人:两个资源BC共用A,那么ABC如何打包?加载b的时候要怎样加载?加载好b之后哪些包卸载哪些不卸载?不卸载的何时卸载?这个问题答得不完整不能说你深入的研究过UNITY
5、经验,经验在我们看来和工具差不多,这种依靠时间堆积的东西并不如专业基础重要,在技术开发来讲,10年经验绝对不是1年经验价值的10倍,经验多固然好,但那是在其他因素都一样的情况,一个聪明的名校毕业生,和一个10年经验做过10款游戏但是一直没有做过很多核心工作的程序员,我必然选择前者。而且关于经验,我们会把时间放在一边,先来剖析你所谓的经验多少是真正有价值的。首先,大厂大作的开发人员是加分的,这意味着你曾经同一些很棒的同事共事过,任何成功的产品都是有其成功的道理的(但是大厂的边缘发开人员则没有什么亮点,大厂往往把核心工作和非核心工作分的很开,一些非核心开发的人员很久接触不到主要研发工作,那反而是个劣势了),然后我会就着你的简历详细剖析你所做的工作,你说你做过寻路,那我问你A*算法原理怎样的,和navmesh有什么区别,A*在大型地图怎样优化,如果你答不出来,那我不认为你真正的做过寻路,你只是使用过工具而已,那知识不属于你,这一项经验我会清0,你做过战斗,那我会问怎样同步前后端的状态,怎样避免延迟导致的问题,怎样能够更好的表现打击感。所以经验绝对不是你做过什么,而是你详细的琢磨过什么,哪些东西真正的属于了你。所以很多10几年程序的经验开始很不屑一顾的坐在对面,说了一堆堆很着名的产品,这我做的那我做的,我要来当主程,那ok,问到细节一个也说不清楚,再加上基础的算法也都说你忘了,那没有任何意义,对不起,我喜欢刨根问底。
Ⅳ 程序员和软件工程师面试需要注意什么
作为一名软件工程师来说,因为不同的软件公司采用不同的方式对工程师进行评估,对于想走上软件工程师职业发展道路的求职者来说,了解这些评估人才的不同方法是很重要的一点。
特定领域知识面试。,特定领域知识面试通常涉及到你最熟悉的技术领域的具体知识点。例如,如果你主要使用 Angular 1.x 进行前端开发,并且面试公司又有 Angular
前端,那他们就可能问你关于 Angular 控制器、指令和服务的相关内容。也就是说,你需要做好准备去建立、展示和讨论 Angular。
计算机科学基础知识面试。计算机科学和基础编程面试明显不同于特定领域面试。计算机科学和基础编程面试是为了评估你解决问题的能力,更多的是关注找到最佳解决方案的能力,而不是简单的去完成某些特定任务。因此,面试官通常也不会问关于你是谁、你过去的工作经历或者你构建过的项目方面的问题。对于计算机科学基础面试这一类型来说,面试官的工作就是评估你的原始编程能力,通常他们是通过数据结构和算法相关的问题来进行评估。
如果你想进入
Google、亚马逊、Uber 等大型知名科技公司工作,那你基础知识一定要过关。在这样的情况下,你是否构建过最好、最复杂的产品其实并不重要,如果你无法通过计算机科学基础知识面试,那这些大型科技公司是绝对不会雇用你的。小型初创企业通常是在与时间赛跑,他们会争取快速的构建出产品、推出产品
并且推向市场。因此,这些公司通常会实行特定领域面试方式,因为他们希望了解捏可以构建什么样的产品,你最拿手的技术又是什么。
Ⅳ 为什么程序员都很排斥面试时做题
第一, 能做上的人真的不多。
所谓程序员,方向很广的,前端、后端、UI、架构等等,不同的岗位研究的方向不同;做不同的产品,用到的语言可能也不尽相同。用做题来衡量一个人的水平这件事,本身就不是很可行。明明是擅长数据库的从业者面试者,硬是要做一套Java的试题,是很为难的。对于企业来讲,从笔试想检测下专业水平,但是程序员术业有专攻是没错的。
第二, 写程序不是一项程序活儿。
面试时的做题的环境,心情和真正的工作是不一样的,我们说打球会有手感,写代码其实也有手感。在压力,虚拟的情景下,程序员容易造成失误,影响发挥。不仅是程序员,离开了学校之后,考试这种形式都不招人喜欢。
第三, 面试的诚意。
面试时一个双向选择的过程,如果是技术总监来聊聊,会显得比较尊重人才有诚意,双方一旦发现有不可调和的供求不匹配,也可以马上结束谈话。人是活儿的,但试题是死的。如果做完题目后一聊,发现双方并不合适,做题就很浪费自己的时间了。
Ⅵ 程序员面试的时候考官一般问什么问题(比较流行的)
给你提供点参考信息,希望能帮助到你:
1、使用相同的工具和时间限制模拟面试训练
Google和微软都会让应聘者在白板上手工解答编程问题,但通常大部分的应聘者都是习惯于在电脑上利用编程工具系统编写程序。因此面试的时候,某些应聘者离开了熟悉的电脑光标,站在白板前感觉手足无措不知该如何起行。又或者他们不习惯在编程之时旁边有人观看,这会让他们感到紧张而无法正常思考。
在现实生活中,如果你想要横渡英吉利海峡,自然不能总是在室内游泳池练习。你必须投身于大海在波涛之中训练,在准备面试的时候也是如此。
在面试开始之前你最好向招聘单位询问面试形式和面试问题。如果招聘单位让你在某个房间考试且仅提供没有汇编程序的编辑器,那么就应该在家中按照这种情景进行练习。如果招聘公司单位让你在白板上回答问题并会安排考官在旁监督,那么你就要找一位软件工程师来扮演考官配合你练习。即使找来的考官经验不如你也没有关系,他们依然能帮助你消除在他人面前出错所带来的紧张感,这样可以让你适应有人在旁边盯着看的面试氛围。
如果你恰巧认识我并希望由我来帮你联系,那我的条件就是必须请我吃饭:如果你已经工作了就吃日本寿司大餐;如果你还是学生,那么吃比萨饼也可以。
2、在面试过程中不要对细小错误耿耿于怀
我曾不止一次的在面试过程中碰到这种情况:当应聘者知道编程问题后,他马上就想到了最佳的方案、确定了边界条件,然后开始编写程序。但在编写过程中,应聘者犯了诸如首先检查是不是操作顺序错误或忘记设定某变量等无关大局的小错误,当我指出其错误之后,应聘者立刻变得十分紧张,这种焦虑情绪影响了他在后面环节的正常发挥。
其实这种恐惧心理完全不必要。一名优秀的程序员在编程过程中出现错误也是很正常的,就像是小提琴手在演奏高难度的巴赫交响乐时也会偶尔失误。音乐会的听众可能会觉察到这些错误,但是听众绝对不会因为这种细小失误就把出色的小提琴手看作是门外汉。
即便应聘者彻底搞砸了某个编程问题,面试考官也可能会提出不同的问题并会容忍应聘者在某个问题上的失误。再退一步说,就算某次面试彻底失败,你也有机会在其它面试上补救。
我的一位同事(一个项目的技术负责人)最近面试了一个人,在开始面试时他觉得面试者的交流方式存在问题,因此开始表现的相当不友好。但经过了整个面试过程后,面试者证明了自身的能力,而我的那位同事也成了那位面试者最坚定的支持者。在过去的一年中,我从未见过这位同事如此强烈的支持哪位面试者。
所以,因此就算面试进展不顺,也务必坚持到底不要放弃。
Ⅶ 大家有在面试高级程序员时,被问到类相关的函数名字吗
当然有,一般不会直接问你某个函数的英文名,都是问某个功能用到的重要函数。
比如
图片处理
反编译
克隆/深克隆
之类的。
如果自己被问到了,但自己又真的不知道,你就可以说,“之前了解过,但是在上一家公司开发中没有用到,就忘了。”
Ⅷ 我是一名程序员,在面试中被面试官嫌跳槽频繁,我该怎么应对
其实这个问题只要你承认自己开始在确定职业目标上有些困难,但现在已经十分明确了自己的职业方向(表明自己经过几次跳槽已经给自己定位了,今后不会发生频繁跳槽了);说明之所以离开之前的职位,仅仅是由于自己发现离开是为了加重责任,拓宽经验的方法(充分展现眼前的这个公司就是自己真正的归宿)。
Ⅸ 国内的程序员真的只能做到35岁吗到了35岁或以后就会被公司淘汰吗我26了,很害怕以后会失业啊!
会不会被淘汰,取决于个人的实力,有实力的人并不怕公司裁员。所以,努力提升自己