任职要求: java
java面试宝典
精通java,熟悉socket和多线程开发,熟练掌握JSP、Servlet JDBC等相关技术,熟悉常用的数据模式
熟悉JVM性能调优(对JVM有一定的了解)
熟悉面向对象的系统分析、设计与编程思想了解设计模式、重构以及敏捷开发的基础知识 有敏捷开发和测试自动化经验者优先 框架
熟练使用主流来源框架,如Spring、struts2、mybatis、hibeenate,熟悉ssh、ssm框架集成 (使用过一种RPC协议、缓存技术)
能够熟练使用主流框架技术,包含:Spring Boot、Spring MVC 能够熟练使用主流框架技术,包含:Spring、Axon(CQRS) 熟练使用Springmvc+FreeMarker进行开发 数据库
熟悉关系型数据库,有redis等开源的NOSQL相关知识 能够熟练使用主流存储技术,包含:MySQL、MongoDB、Couchbase、Cassandra、Redis、FastDFS 熟练掌握MySql、Oracle等数据库,sql语言,索引、过程、触发器的使用,掌握pl/sql编程 熟悉mysql使用,有一定的sql优化,维护经验;熟练掌握SQL、存储过程、触发器、视图的编写
熟悉至少一种NoSQL数据库,如MongoDB、Memcached、Redis、HBase等 至少掌握Oracle、DB2、Sql Server三种数据库中的两种 了解Oracle,Sybase,DB2等数据库系统之一 熟练使用MsSql、MySql、Oracle中的一种数据库
掌握postgreSQL数据库的使用和开发,有相关数据库经验也可
熟练掌握常用sql,使用过sybase,sqlserver、mysql等主流数据中一种或几种
熟悉数据库建模,熟练使用Oracle、DB2、mysql数据库并进行调优熟悉设计模式和UML
数据库高并发
有数据库优化和设计经验(对软件系统的高性能、高并发、高可用等有了解和实践经验) (熟悉Linux/Nginx/haproxy负载均衡、反向代理等配置) 熟悉多线程及高性能的设计与编码及性能调优 Jquery
熟练使用HTML/XML、HTML5、CSS3、jquery、javascript、AJAX 、easyui、bootstrap等前端web应用程序开发技术
(掌握Ajax技术,熟悉jquery或Prototype应用) (了解前端dhtml技术,有一定js编程经验) 熟练使用js框架(extjs mootools) 熟悉Kendo UI开发者优先考虑。 服务器
熟练使用Aapache、tomcat、nginx等常见应用服务器,具有相关的部署和配置经验
(熟悉tomcat/Jetty/Jboss等主流服务器) 熟悉Tomcat、JBoss的配置和管理 (熟悉Tomcat等应用服务器,同时对在高并发处理情况下的负载调优有相关经验者优先考虑,具有分布式系统开发等方面经验者优先) 了解Tomcat,Jboss,Weblogic,Websphere等应用服务器中的两种以上 精通Tomcat、Apache、Nginx等多种开源服务器,熟练掌握至少2种应用服务器,如WebLogic、Tomcat、Resin、JBoss、WebSphere等; 至少熟练使用weblogic、websphere、resin、tomcat、Jboss五种中间件的三种 熟练掌握和使用apache、varnish、nginx、jetty、tomcat等应用服务 熟悉Java开发,对Weblogic、WebSphere App Server及WebSphere Portal Server中的至少一种以上 精通WebSphere、WebLogic、JBoss、Tomcat其中一到两种应用服务器,并具备服务器调优能力 工具 熟练掌握svn、git 、Ecplise、Maven等工具 熟练使用nodejs 能够熟练使用Eclipse、PowerDesigner、SVN或CVS等工具 熟练使用(My)Eclipse、NetBeans等开发工具并能够使PowerDesinger、Rational Rose进行设计工作 分布式工具 三年以上互联网产品开发经验,有海量数据存储、大用户量项目经验,有dubbo、thrift、zookeeper等分布式工具使用经验 建模工具 熟悉UML建模工具,能进行分析和设计 消息队列 熟练掌握和应用 acticemq、kafka、rocketmq等消息队列 Linux
基本Linux的使用(熟练在Linux下的开发与运行环境,有长期Linux使用经验者优先考虑) 熟悉OS原理,能使用linux/unix常用基本命令 结构算法 了解常用的数据结构和算法 架构 熟悉Dubbo,Zookeeper分布式架构,mysql集群,Lucene,solr全文检索 了解分布式架构、缓存、异步、消息系统等思想 大数据 熟悉hadoop生态系统,具备Hadoop/Storm等分布式计算平台的开发、运维经验者优先 了解Hadoop、Hive、HBase、Storm等相关技术基础,并能围绕展开开发工作 检索(电商) 了解Lucene全文检索机制,能参与到全文检索的开发 阿里云 有阿里云使用经验 能够熟练使用阿里云服务,包含:MQS、 SLS、ODPS、OAS等。
熟悉工作流、Auto、MQ
熟悉IM,websocket,XMPP,MQTT等即时通讯方面技术优先考虑
能够熟练使用主流队列技术,包含:ActiveMQ、RabbitMQ、kafka、Disruptor 能够熟练使用主流RPC技术,包含:Thrift、Dubbo
能够熟练使用主流通信技术,包含:Mina、Netty、Protobuf
资深java工程师
精通C++或java;能够在 Linux 系统上进行开发部署工作
精通 TCP/UDP 等常见协议,并具有丰富的网络服务器开发经验 熟悉代理服务器、负载均衡常用网络组件
熟悉常见的服务器开发模式,并精通其中的一种或多种
熟悉缓存/消息队列等常用中间件技术,并且熟悉常用的开源框架 能够带领团队设计、开发 10w 行以上代码的核心服务器
熟悉长期运行、高并发的 C++ 或java服务器的开发、部署、测试、排错等工作 熟悉至少一种网络协议栈,能够快速理解和开发新的协议栈 中等规模软件项目的规划和管理能力
自我评价: 有较好的沟通交流能力与抗压能力 学习能力强,拥有优秀的逻辑思维能力
性格开朗、善于沟通、有良好的学习能力、有良好的团队协作能力、较强的抗压能力、有良好的编码规范意识、勇于接受挑战、善于自我激励 职业规划 项目流程
*************JavaOOP******************
☆1.谈谈你对oop的理解,oop有哪些特性?各有什么特点? Java的三大特征[中科软科技有限公司]
oop :面向对象编程,oop有继承,多态,封装,抽象
继承 : 子类可以拥有父类的属性以及方法,也可以拥有自己的属性以及方法。 多态 : 父类的方法,子类有不同的实现方式 封装 : 将现实生活中具体的事封装成一个类。
抽象 : 使用private修饰属性和方法,对外提供公有的get和set方法 2、什么是方法重载和方法重写,有什么异同?
方法重载:同一类中,同名不同参 !方法名相同,参数列表不相同(个数 顺序),和访问修饰符 返回值类型 异常无关
方法重写:子类重写父类,同名同参数 !方法名相同,参数列表相同,访问修饰符大于等于父类 返回值和父类相关(基本数据类型等于) 异常是父类的子类或子集
3、抽象类和接口有什么异同?(面试) 抽象类 接口
抽象方法 0-多个 是 属性是静态 不一定 是 用途 给类继承 给类实现 构造方法 产生子类对象初始化父类属性 无
从语法角度上,接口是一种特殊的抽象类,但从设计角度理解而言是错误的 抽象类是父类的共同特征,是\中间产品\子类才是\最终产品\是子类是\的关系,既在概念上本质是一样的
接口表示一种约束和一种能力,是\a can do\的关系.接口定义\做什么\实现类负责\怎么做\体现是功能和实现相分离的原则
4、异常有哪几种类型,怎么自定义异常? RuntimeException Error CheckedException 继承Exception或子类 定义有参构造方法
在有异常的地方,throw异常
5、什么是多态?使用多态的两个前提条件?有哪两种表现形式和应用场合? 同一事物,有不同的表现形态...父类的方法,子类有不同的实现方式 前提: 继承 重写 表现形式:重载 重写 应用场合:方法形参 方法返回类型
6、什么是内部类?内部类有哪几种?有什么优缺点? 类中定义类 成员内部类 方法内部类 静态嵌套类 匿名内部类 优点:a.减少参数传递 b.封装(隐藏内部实现方法和细节) c.减少类文件 缺点:a.增加语法的难度 b.使结构复杂化
7、什么是构造方法,有什么作用,如何调用本类和父类的构造方法? 和类同名,无返回类型
初始化父类属性 this(参数) super(参数)
☆8、final、finally、finalize有什么异同? [上海优觉]
final 最终的 修饰属性表示常量 修改方法表示不能被重写 修饰类不能被子类继承 finally 异常中总会执行,除了System.exit(0) finalize 是Object类的一个方法,在垃圾收集器调用垃圾回收的此方法,会覆盖该方法提供的回收对象的其他资源
9、类和类之间有哪几种关系?面向对象设计原则有哪些? 类和类之间的关系:继承、实现、依赖、关联、聚合、组合 设计原则:
1.依赖倒置原则(面向接口编程)
2.迪米特法则 (尽量减少类和类之间的依赖) 3.接口隔离原则(一个接口只一个规定) 4.聚合/组合原则(尽量使用聚合组合关系) 5.里氏替换原则(慎用继承)
6.开闭原则(对扩展开放 对修改关闭) 7.单一职能原则 (一个类只做一件事情)
10、String和StringBuffer、StringBuilder的区别?[中软 上海优觉] 同:都是final类 异:
①String类是不可变字符串,可以像基本数据类型一样直接赋值(直接存放常量池), StringBuffer、StringBuilder是可变字符串,只能通过new产生对象
②StringBuilder是线程不安全的,用在字符串缓冲区被单个线程使用的时候,建议优先采用该类,因为在大多数实现中,它比 StringBuffer 要快。
11、如何区分运行时异常与检查异常,他们使用时有何区别?[中软]
RuntimeException及其所有子类都属于运行时异常,在程序中可以不用处理,直接由jvm处理,
检查异常必须在程序中处理。
12、static, abstract可以修饰什么,有什么作用?abstract可以和final共同修饰吗?
①static修饰变量、方法,在类加载的时候就会初始化,所有实例共享,可以用类名.属性、类名.方法名;
abstract修饰方法表示该方法没有具体实现,必须由其子类实现,修饰类表示该类为抽象类不能被实例化。
②他们不能共同修饰,因为abstract是代表抽象必须被实现,final代表终极的不能重写和继承。
13、当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回