面试复习大纲(最全面)

Java基础

1.数组中的排序问题(笔试或者机试,前者可能性更大)

2.面向对象的理解

面向对象主要有四个特性:

封装、抽象、继承和多态。

封装:在面向对象语言中,封装特性是由类来体现的,我们将现实生活中的一类实体定义成类,其中包括属性和行为(在Java中就是方法),就好像人类,可以具有name,sex,age等属性,同时也具有eat(),sleep()等行为,我们在行为中实现一定的功能,也可操作属性,这是面向对象的封装特性;

抽象:抽象就是将一类实体的共同特性抽象出来,封装在一个抽象类中,所以抽象在面向对象语言是由抽象类来体现的。比如鸟就是一个抽象实体,因为抽象实体并不是一个真正的对象,它的属性还不能完全描述一个对象,所以在语言中体现为抽象类不能实例化;

继承:继承就像是我们现实生活中的父子关系,儿子可以遗传父亲的一些特性,在面向对象语言中,就是一个类可以继承另一个类的一些特性,从而可以代码重用,其实继承体现的是is-a关系,父类同子类在本质上还是一类实体;

多态:多态就是通过传递给父类对象引用不同的子类对象从而表现出不同的行为

3.集合相关的问题

比如:Set与List的区别。ArrayList与Linkedlist区别。HashMap与HashTable区别。搞清楚每个集合对象的特性就欧了。

4.多线程问题

多线程启动方式,以及产生死锁的原因和解决办法,乐观锁悲观锁,线程同步,创建方法jdk1.5之前/之后【多线程问题不是很常问,有精力就复习这块内容】

5.IO流

了解常见的几个流对象以及基本的流操作即可,被机试的可能性比较小。

6.数据结构

例如:集合,枚举 7.设计模式

单例,工厂,MVC等 8.排序算法

冒泡,快速,基数,插入,希尔等

9.JVM

GC回收,调优,内存溢出

JavaWeb

1.http协议

(定义、常见的请求头以及响应头<功能>、状态码)

2.Tomcat

(目录结构<存放的内容以及配置文件里面能做哪些工作>、常见配置;有能力者可以了解一下tomcat的原理<启动加载问题>)

3.jdbc

(编程步骤、与hibernate以及mybatis的区别)

4.servlet

(概念的理解;生命周期、线程安全问题、接口相关类型、体系结构<区别>、request以及response的用途、servletContext对象的功能、编码以及路径问题)

5.filter

(生命周期、常见应用、dofilter里面的参数、应用场景)

6.jsp

(隐式对象、常见标签<指令、动作>、EL以及JSTL)

内置对象

名称

类型

描述

out

javax.servlet.jsp.JspWriter

用于页面输出

request

javax.servlet.http.HttpServletRequest

得到用户请求信息,

response

javax.servlet.http.HttpServletResponse

服务器向客户端的回应信息

config

javax.servlet.ServletConfig

服务器配置,可以取得初始化参数

session

javax.servlet.http.HttpSession

用来保存用户的信息

application

javax.servlet.ServletContext

所有用户的共享信息

page

java.lang.Object

指当前页面转换后的Servlet类的实例

pageContext

javax.servlet.jsp.PageContext

JSP的页面容器

exception

java.lang.Throwable

表示JSP页面所发生的异常,在错误页中才起作用

作用域范围

PageContext常量名

描述

作用域名称

域对象类型

PageScope

当前页面中有效

pageContext

PageContext

RequestScope

一次请求范围

request

HttpServletRequest

SessionScope

一次会话范围

session

HttpSession

ApplicationScope

应用范围

application

ServletContext

静态包含/动态包含

7.cookie/session

(概念的理解;生命周期,session创建的时期,相关方法的使用)

8.Xml定义文档的形式,都有什么区别

a: 两种定义形式 dtd(文档类型定义) schema(XML模式);

b: XML Schema和DTD都用于文档验证,但二者还有一定区别;

本质区别:schema本身是xml的,可以被XML解析器解析(这也是从DTD上发展schema的根本目的)。另外:

XML Schema是内容开放模型,可扩展,功能性强;而DTD可扩展性差;

XML Schema支持丰富的数据类型,而DTD不支持元素的数据类型,对属性的类型定义也很有限;

XML Schema支持命名空间机制,而DTD不支持;

XML Schema可针对不同情况对整个XML文档或文档局部进行验证;而DTD缺乏这种灵活性;

XML Schema完全遵循XML规范,符合XML语法,可以和DOM结合使用,功能强大;而DTD语法本身有自身的语法和要求,难以学习;

c:有DOM(文档对象模型),SAX(Simple API for XML),STAX等

DOM:文档驱动,处理大型文件时其性能下降的非常厉害。这个问题是由DOM的树结构所造成的,这种结构占用的内存较多,而且DOM必须在解析文件之前把整个文档装入内存,适合对XML的随机访问

SAX:不同于DOM,SAX是事件驱动型的XML解析方式。它顺序读取XML文件,不需要一次全部装载整个文件。当遇到像文件开头,文档结束,或者标签开头与标签结束时,它会触发一个事件,用户通过在其回调事件中写入处理代码来处理XML文件,适合对XML的顺序访问,且是只读的。当前浏览器不支持SAX

SAXParserFactory factory= SAXParserFactory.newInstance();

SAXParser saxparser= factory.newSAXParser();//创建SAX解析器

MyHandler handler=new MyHandler();//创建事件处理器

saxParser.parse(new File(“Sax_1.xml”),handler);//绑定文件和事件处理者

STAX:Streaming API for XML (StAX) Streaming API for XML (StAX)

是用 Java™ 语言处理 XML 的最新标准。StAX 与其他方法的区别就在于应用程序能够把 XML 作为一个事件流来处理。StAX 允许应用程序代码把这些事件逐个拉出来,而不用提供在解析器方便时从解析器中接收事件的处理程序。

框架

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.你为什么来北京工作,怎样看待跳槽?

4.你对我们公司了解吗?

5.你如果有幸进入我们公司,有什么规划吗?

6.你上一家公司的薪资大概是多少?有哪些组成部分?

7.你有没有投其它公司?如果其它公司也给了offer,你会如何抉择?

8.你有对象吗?打算什么时候结婚生孩子?

9.你对薪资待遇有什么要求?能再低一点吗?

10.你还有什么问题要问我吗?

项目相关

1.请介绍一下你最近做的这一个项目吧

【思路:项目给谁做的、项目涉及的领域、系统的架构(功能&技术)、系统的用途、系统的部署、使用了哪些比较新颖的技术】

2.谈谈你对电商行业的了解

【思路:电商行业的发展、行业技术特点、行业的一些概念】

3.你这个项目大概有哪些功能,你负责了哪些核心功能?

【拥有的功能尽可能说多一点,建议10个左右,自己负责的3个大(如商品管理、订单、购物车),其余的都是其他组员开发的任务】

4.谈谈xx(具体的,比如商品管理、订单、购物车)模块/功能的实现思路?实现的过程中涉及到了哪些技术,这些技术能介绍下吗?

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

(根据自己的能力看是否需要提及次技术,毕竟购物车的实现方式比较多。)

原文发布于微信公众号 - Java帮帮(javahelp)

原文发表时间:2017-11-30

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏西枫里博客

thinkPHP升级到5.0.13导致update更新出错的问题

话题还得从tinkPHP群消息说起,双十二那天,群内通知官方发布了5.0.13版本。刚好那几天在折腾redis缓存。官方文档中说5.0.13是一个集合诸多改进的...

13550
来自专栏玄魂工作室

CTF实战26 CTF题目练习和讲解四

该培训中提及的技术只适用于合法CTF比赛和有合法授权的渗透测试,请勿用于其他非法用途,如用作其他非法用途与本文作者无关

49610
来自专栏java一日一条

优秀的Java程序测试是什么样的?

测试的名字至关重要,特别是从文档角度来看的话。我们应该能够大声读出测试的名字就像一组需求一样。事实上,有一个伟大的IntelliJ插件,叫Enso,它会将你的测...

7420
来自专栏java一日一条

优秀的Java程序测试是什么样的?

作为测试驱动设计和开发的忠实粉丝,我相信创造良好的测试是我们作为Java开发人员可以做的最重要的事情之一。我们写测试出于许多原因:

9610
来自专栏CVer

免费资源 | 快来Pick《准备秋招学习笔记》

项目地址:https://github.com/CyC2018/Interview-Notebook

15030
来自专栏腾讯移动品质中心TMQ的专栏

测试左移之代码评审

最近两年,品质中心极力推动测试工作左移,以期能提前发现产品的问题,降低成本。笔者自认代码基础能力还不错,就想通过代码 Review 来提前发现一些Bug。

22210
来自专栏desperate633

深入理解数据库索引原理

转载至 https://tech.meituan.com/mysql-index.html

23310
来自专栏九彩拼盘的叨叨叨

给新手的 JavaScript 介绍

人与人沟通的语言称为自然语言,人与计算机沟通的语言称为编程语言。编程语言和自然语言的主要不同点是:自然语言表述的内容可以是有多种意思,编程语言表述的内容不会有歧...

9620
来自专栏JAVA高级架构

Java高级程序员(5年左右)面试的题目集

1 时隔两年 再一次的面临离职找工作,这一次换工作有些许的不舍,也有些许的无奈。个人所在的技术团队不错,两年时间成长了很多,也很不舍这个团队。但是,由于公司...

43460
来自专栏PHP在线

MySQL时间函数,用起来比PHP还爽

前一篇写了PHP的时间函数(还是草稿),这一篇就写Mysql的时间函数吧。最近做的项目,关乎权限,于是自然而然的就与有效期联系在了一起。其 中有一个功能是生成特...

36660

扫码关注云+社区

领取腾讯云代金券