[Java面试一]面试复习大纲.
一、Java基础部分 (搞定所有技术之后才考虑复习的技术点)
1.数组中的排序问题(笔试或者机试,前者可能性更大)
2.面向对象的理解
3.集合相关的问题,比如hashmap跟hashtable的区别。搞清楚每个集合对象的特性就欧了。
4.多线程启动方式,以及产生死锁的原因和解决办法【多线程问题不是很常问,有精力就复习这块内容】
5.IO流,了解常见的几个流对象以及基本的流操作即可,被机试的可能性比较小。
二、Web基础 (1年工作经验者需要重点复习的技术点)
1.http协议(定义、常见的请求头以及响应头<功能>、状态码)
2.tomcat(目录结构<存放的内容以及配置文件里面能做哪些工作>、常见配置;有能力者可以了解一下tomcat的原理<启动加载问题>)
3.jdbc(编程步骤、与hibernate以及mybatis的区别)
4.servlet(概念的理解;生命周期、线程安全问题、接口相关类型、体系结构<区别>、request以及response的用途、servletContext对象的功能、编码以及路径问题)
5.filter(生命周期、常见应用、dofilter里面的参数、应用场景)
6.jsp(隐式对象、常见标签<指令、动作>、EL以及JSTL)
7.cookie/session(概念的理解;生命周期,session创建的时期,相关方法的使用)
三、五大框架 (1年以上工作经验者需要重点复习的技术点)
1.struts2(action相关的问题<书写方式[区别]、接受请求参数的方式、相关配置、访问servletAPI的方式>;值栈相 关问题<定义、内部结构、如何获取值栈对象、EL为什么能访问值栈中的数据>;struts2与springMVC的区别;拦截器与过滤器的 区别;struts2工作原理<执行流程>)
2.hibernate(核心思想要了解;开发流程<加载文件的过程>;查询方式;如何优化;sql与hql的区别;update与 saveOrUpdate的区别;get和load的区别;Java对象三种状态的特征以及转换、核心API、一级缓存和二级缓存、延迟加载)
3.spring(springIOC和DI;生命周期;Bean注入属性的方式;aop极其相关名词解释;核心类;applicationContext与beanFactory的区别;bean实例化有哪些方式)
4.springMVC(工作流程;与struts2的区别;乱码问题如何处理;各组件的扩展类型)
5.mybatis(与jdbc/hibernate的区别;)
四、脚本 (此项与第五项均是需要掌握的内容、笔试题居多)
1.JavaScript核心对象
2.浏览器BOM对象
3.文档对象模型DOM
4.常见事件
5.Ajax编程(web交互2种方式的对比)
6.传统Ajax编程的步骤以及从服务器端返回的数据格式(之间的差别)
7.JSON数据格式的转换操作
8.jQuery选择器
9.jQuery的Ajax编程(常见方法)
10.其余的问题都是一些笔试题,让你直接写javascript代码实现某一功能
五、数据库
数据库这一块几乎都是一些概念性的问答题(存储过程、函数、事务、索引、触发器、视图、游标以及一些优化操作),笔试100%会出现,一般考察的都是多表联合查询
六、人事相关 (答案内容比较长,未做文字说明)
1.自我介绍(注重的是你之前在公司里面工作内容,特别是最近在公司里面做的项目<回答思路参考项目相关问题一>)
2.简单的介绍一下上一家公司的情况/评价
3.你为什么来XX工作,怎样看待跳槽?
4.你对我们公司了解吗?
5.你如果有幸进入我们公司,有什么规划吗?
6.你上一家公司的薪资大概是多少?有哪些组成部分?
7.你有没有投其它公司?如果其它公司也给了offer,你会如何抉择?
8.你有对象吗?打算什么时候结婚生孩子?
9.你对薪资待遇有什么要求?能再低一点吗?
10.你还有什么问题要问我吗?
七、项目相关 (重点讲解问题:商品管理、订单、购物车、单点登录等实现思路问题,其余问题参考文档即可)
1.请介绍一下你最近做的这一个项目吧【思路:项目给谁做的、项目涉及的领域、系统的架构(功能&技术)、系统的用途、系统的部署、使用了哪些比较新颖的技术】
2.谈谈你对电商行业的了解【思路:电商行业的发展、行业技术特点、行业的一些概念】
3.你这个项目大概有哪些功能,你负责了哪些核心功能?【拥有的功能尽可能说多一点,建议10个左右,自己负责的3个大(如商品管理、订单、购物车),其余的都是其他组员开发的任务】
4.谈谈xx(具体的,比如商品管理、订单、购物车)模块/功能的实现思路?实现的过程中涉及到了哪些技术,这些技术能介绍下吗?【可参考“02_电商项目面试问题”里面的答案】
5.你们公司有多少人?有测试吗?有美工吗?整个项目组人员配置是怎么样的?项目开发的流程大概是什么样子的?【检验是否有工作经验的一个问题】
6.这个项目使用了什么构建工具没有?有的话,多模块之间是如何划分的?为什么要这么划分?
7.在这个项目中是如何设计商品规格的?
8.这个系统中你是如何实现跨系统调用的?
9.在这个项目中,CMS系统是如何设计的,简单的说一下设计思路
10.在这个项目中,你们主要使用什么样的数据格式来进行数据的传输的?
11.单点系统的设计思想你了解吗?他在系统架构中的作用是什么?位置如何?
12.你们这个项目中订单ID是怎么生成的?我们公司最近打算做一个电商项目,如果让你设计这块,你会考虑哪些问题?
13.各个服务器的时间不统一怎么办?
14.你们线上部署时什么样的,能画一下吗?
15.你们生产环境的服务器有多少台?
16.你们使用什么做支付的?如果使用易宝做支付,请求超时了怎么处理?
17.你刚才不是说付款成功后易宝会有数据返回吗?如果付款后易宝没有返回,或者返回超时了,但是钱又已经扣了,你怎么办?
18.你们怎么做退款功能的,要多长时间才能把钱退回给用户?
19.你购物车存cookie里边可以实现不登录就可以使用购物车,那么我现在没有登录把商品存购物车了,然后登录了, 然后我换台电脑并且登录了还能不能看见我购物车的信息?如果看不到怎么做到cookie同步,就是在另外一台电脑上可以看到购物车信息
20.如果用户一直向购物车添加商品怎么办?并且他添加一次你查询一次数据库?互联网上用户那么多,这样会对数据库造成很大压力你怎么办?
21.购物车的设计细节问题
八、其他技术问题 (根据自己的精力和实际能力进行选取,主要是为了证明自己的技术能力强、经验足,提升薪资用的)
1.权限控制(一般情况,在公司必须有一定工作经验的开发者才会被分配该功能模块的开发,这意味着学员在刚开始参加工作的那个项目里面绝对不能写的内容。) 这里一般都会提及shiro技术,在这块需要掌握shiro相关的几个组件以及他们的调用关系,然后就是权限设计的几张数据库表(表之间的关系以及每张表里面的重要字段)
2.搜索系统(普通的查询会让面试官问及效率问题,那么势必要提到全文检索技术,由于刚学不是很熟,根据自己掌握的情况进行选择)
3.浏览器跨域问题(前台系统调用可以使用jsonp来实现浏览器跨域问题,去年有学员花几个小时学习这个,仅凭此技术入职8K。)
4.webservice(该技术已有替代技术,如果不会,可以不用花时间去复习)
5.Linux(水太深,只谈自己在项目中就部署的时候用了一下即可)
6.redis(根据自己的能力看是否需要提及次技术,毕竟购物车的实现方式比较多。)