博客
关于我
用一份JAVA工程师的求职简历来说说求职简历怎么写
阅读量:726 次
发布时间:2019-03-21

本文共 5673 字,大约阅读时间需要 18 分钟。

Java就业指导

想要成为合格的Java程序员或工程师到底需要具备哪些专业技能,面试者在面试前到底需要准备哪些事情呢?本文详细列举了这些内容,可以用作个人简历的内容,也可以作为面试时向面试官展示的专业技能特点。相信此文会对正在寻觅Java程序员(Java工程师)职位的freshman以及希望成为中高级Java开发者的junior都会有所帮助。
专业技能
初级一点(基本上就是大学生水平,页面写过一点,后台也能使用框架)
- 熟练的使用Java语言进行面向对象程序设计,有良好的编程习惯,熟悉常用的Java API,包括集合框架、多线程(并发编程)、I/O(NIO)、Socket、JDBC、XML、反射等。
- 熟悉基于JSP和Servlet的Java Web开发,对Servlet和JSP的工作原理和生命周期有深入了解,熟练的使用JSTL和EL编写无脚本动态页面,有使用监听器、过滤器等Web组件以及MVC架构模式进行Java Web项目开发的经验。
- 对Spring的IoC容器和AOP原理有深入了解,熟练的运用Spring框架管理各种Web组件及其依赖关系,熟练的使用Spring进行事务、日志、安全性等的管理,有使用Spring MVC作为表示层技术以及使用Spring提供的持久化支持进行Web项目开发的经验,熟悉Spring对其他框架的整合。
- 熟练的使用Hibernate、MyBatis等ORM框架,熟悉Hibernate和MyBatis的核心API,对Hibernate的关联映射、继承映射、组件映射、缓存机制、事务管理以及性能调优等有深入的理解。
- 熟练的使用HTML、CSS和JavaScript进行Web前端开发,熟悉jQuery和Bootstrap,对Ajax技术在Web项目中的应用有深入理解,有使用前端MVC框架(AngularJS)和JavaScript模板引擎(HandleBars)进行项目开发的经验。
- 熟悉常用的关系型数据库产品(MySQL、Oracle),熟练的使用SQL和PL/SQL进行数据库编程。
- 熟悉面向对象的设计原则,对GoF设计模式和企业应用架构模式有深入的了解和实际开发的相关经验,熟练的使用UML进行面向对象的分析和设计,有TDD(测试驱动开发)和DDD(领域驱动设计)的经验。
- 熟悉Apache、NginX、Tomcat、WildFly、Weblogic等Web服务器和应用服务器的使用,熟悉多种服务器整合、集群和负载均衡的配置。
- 熟练的使用产品原型工具Axure,熟练的使用设计建模工具PowerDesigner和Enterprise Architect,熟练的使用Java开发环境Eclipse和IntelliJ,熟练的使用前端开发环境WebStorm,熟练的使用软件版本控制工具SVN和Git,熟练的使用项目构建和管理工具Maven和Gradle。
中级
- Java基础扎实,熟悉多线程,线程池原理,对线程安全有深刻理解。阅读过部分JDK源码。
- 深入了解JVM虚拟机:内存模型、GC、垃圾回收算法、以及垃圾回收器,具有线上调优经验。
- 熟练使用Spring Boot、Spring、Spring MVC、MyBatis框架,并且对框架源码有学习了解。
- 对Elasticsearch、Logstash、Filebeat、Kibana 熟悉。了解es读写原理,底层存储原理。
- 深入了解Elasticsearch集群规划,具有es调优经验,阅读过部分源码,例如es中线程池。
- 深入了解网关技术,独立构建业务网关。使用Gateway、Nacos、Sentinel。
- 改造过阿里限流组件Sentinel源码,具备一定的源码阅读能力和改造能力。
- 熟悉MySQL存储引擎,索引,有SQL调优经验,熟悉分库分表,熟悉
- 对Redis 哨兵模式以及Cluster集群模式有了解,熟练搭建集群和使用。
- 熟悉MQ使用场景,熟练使用Kafka,用作内外网穿透,作为数据中转。
- 熟练使用Docker容器化技术、了解k8s。了解微服务,SpringCloud体系。
针对开发过程中的实践经验:
- 合理使用开发规约,写出简洁的代码。重构相关知识有所掌握,有过项目重构的经验。
- 在开发工作中大量使用设计模式,来提高程序可扩展性和可维护性。
- 熟悉Linux环境,熟悉Linux常用命令,熟悉shell脚本。
项目经验
项目介绍
本系统是X公司委托Y团队开发的用于Z行业的系统,系统包括A、B、C、D等模块。系统使用了Java企业级开发的开源框架Spring(Java企业级开发的一站式选择),以及前端技术jQuery库及其插件或Bootstrap框架。如果需要构建单页应用(SPA),最佳的方案是使用前端MVC框架(如AngularJS)和JavaScript模板引擎(如HandleBars)。在表示层中使用Spring MVC(MVC架构模式)的实现框架,通过Spring框架实现事务管理、日志、安全性等功能,通过Redis实现缓存服务。持久层使用MyBatis封装CRUD操作,底层使用MySQL关系型数据库。整个项目采用瀑布模型进行开发。
项目开发流程
需求分析
- 采用用例图、时序图、活动图等OOAD方法进行分析,设计界面原型以帮助理解需求和业务层设计时推导事务脚本。
- 制定需求规格说明书和项目计划书。
设计
- 从业务实体(领域对象)开始设计,产生类图和E-R图(概念设计阶段)。
- 确定分层架构:确定各层的技术实现方案,具体到使用的框架、数据库服务器、应用服务器等。设计事务脚本模式:将一次请求封装为一个方法或函数,结合数据访问对象(DAO)和数据传输对象(DTO)的使用。
- 进行正向工程(Java代码生成)和逆向工程(UML类图生成),设计数据库物理模型(ER图转换成表间关系图、建库和建表)。
编码
- 使用Java编写对应的业务逻辑、Service层、Controller层、DAO层、持久化层等代码。
测试
- 编写单元测试(JUnit工具)和集成测试,确保各模块的组装和测试。
- 进行系统测试和验收测试,确保整个系统符合需求规格说明书并通过验收。
交付和维护
- 编写用户手册、操作手册等文档。
项目管理
- 使用CVS/SVN/Git进行版本控制。
- 使用Maven或Gradle进行自动构建。
- 使用Hudson或Jenkins进行持续集成。
系统架构
- 负载均衡:使用F5、A10等设备。
- 应用服务器:Apache、NginX(作为HTTP服务器和反向代理)、Tomcat(Servlet容器)、WildFly(EJB容器)。
- 数据库服务器:MySQL、Oracle。
第三方工具(插件)应用
- 图表工具:基于jQuery的图表插件(如jQchart)、Chart.js、Highcharts等。
- 报表工具:Pentaho Reporting、iReport、DynamicReports等。
- 文档处理:POI、iText等。
- 工作流引擎:jBPM、OpenWFE、Snaker、SWAMP等。
- 作业调度:Quartz、JobServer、Oddjob等。
- 缓存服务:EhCache、Memcached、SwarmCache等。
- 消息队列:Open-MQ、ZeroMQ等。
- 安全框架:Shiro、PicketBox等。
- 搜索引擎:IndexTank、Lucene、ElasticSearch等。
- Ajax框架:jQuery、ExtJS、DWR等。
- UI插件:EasyUI、MiniUI等。
- 富文本框:UEditor、CKEditor等。
面试提问
项目背景问:
- 项目是为哪家公司开发的?项目的投入是多少?
- 有多少人参与了项目开发?团队中测试人员、开发人员、项目经理的比例是多少?
- 项目开发了多长时间?项目总的代码量有多少?你的代码量有多少?
项目问:
- 项目采用了什么样的开发模型或开发流程?技术选型是怎样的?
责任和收获问:
- 你在项目中承担了怎样的职责?是否经常开会或加班?
- 项目完成后有哪些收获或是经验教训?
难点问:
- 项目中最困难的部分是什么?如何解决团队开发中遇到的各种冲突?
常见错误
- 只在计算机上练习,而不注重行为面试准备。
- 不进行模拟面试训练,缺乏自信。
- 试图死记硬背答案。
- 代码不够严谨,如果不写测试代码。
- 轻言放弃。
面试反问
- 乐于挑战面试官的技术选择并提出改进建议。
- 具体了解公司的技术栈,针对性的提出方案。
- 提出解决实际项目问题的具体思路。
S.A.R.法则
输出结果
算法题解法
算法题可以通过以下五种方式解决:
1. 举例法:通过举一些典型案例发现其中的一般规律。
2. 模式匹配法:通过发现问题的本质模式,找到解决问题的关键。
3. 简化推广法:简化问题规模和数据类型,找到通用的解决方法。
4. 简单构造法:通过构造一些简单的步骤,逐渐扩展成最优方案。
5. 数据结构头脑风暴法:结合自己熟悉的数据结构,寻找最优解法。
录用谈判
1. 具体说明你想要的待遇内容。
2. 如果在薪资方面有要求,可以适当降低,提出比预期稍高的条件。
3. 重视工作环境、科室发展机会等,避免只关注薪资待遇。
4. 采用最适合各方的谈判方式,通常可以通过电话或邮件沟通。
自我评价
1. 学习能力:技术发展日新月异,持续学习是必须的。
2. 团队意识:注重与团队成员的协作,充分发挥团队力量。
3. 抗压能力:面对高强度的工作环境,保持稳定的心态。
ps:作为面试官,我在筛选简历时会重视以下几个加分项:
1. 参加过省级比赛、算法比赛获奖等。
2. 熟悉多线程、深入了解JVM虚拟机,有调优经验更佳。
3. 熟悉设计模式和设计原则。
4. 熟悉至少一个消息队列和Linux环境。
5. 毕业于Top-tier学校更佳。
减分项:
1. 技术Stack描述与项目经验有较大出入。
2. 工作频繁跳槽情况。
3. 简历内容稀疏、缺乏重点。
4. 重复性项目经验过多,点餐系统、商城系统、外卖系统等过于常见。
建议每段工作历程覆盖不同的技术和项目,以体现专业能力的提升。同时,面试官更关注候选人解决问题的能力和项目经验,而不是繁杂的技术描述。

转载地址:http://gyfgz.baihongyu.com/

你可能感兴趣的文章
Netty的Socket编程详解-搭建服务端与客户端并进行数据传输
查看>>
Netty相关
查看>>
Netty遇到TCP发送缓冲区满了 写半包操作该如何处理
查看>>
Netty:ChannelPipeline和ChannelHandler为什么会鬼混在一起?
查看>>
Netty:原理架构解析
查看>>
Network Dissection:Quantifying Interpretability of Deep Visual Representations(深层视觉表征的量化解释)
查看>>
Network Sniffer and Connection Analyzer
查看>>
Network 灰鸽宝典【目录】
查看>>
NetworkX系列教程(11)-graph和其他数据格式转换
查看>>
Networkx读取军械调查-ITN综合传输网络?/读取GML文件
查看>>
network小学习
查看>>
Netwox网络工具使用详解
查看>>
Net与Flex入门
查看>>
net包之IPConn
查看>>
Net操作配置文件(Web.config|App.config)通用类
查看>>
Neutron系列 : Neutron OVS OpenFlow 流表 和 L2 Population(7)
查看>>
New Relic——手机应用app开发达人的福利立即就到啦!
查看>>
NFinal学习笔记 02—NFinalBuild
查看>>
NFS
查看>>
NFS Server及Client配置与挂载详解
查看>>