1.简单介绍一下你的项目,说一下项目有什么模块

2.说说常见的集合有哪些吧

答:Map接口和Collection接口是所有集合框架的父接口:

Collection接口的子接口包括:Set接口和List接口
Map接口的实现类主要有:HashMap、TreeMap、Hashtable、ConcurrentHashMap以及Properties等
Set接口的实现类主要有:HashSet、TreeSet、LinkedHashSet等
List接口的实现类主要有:ArrayList、LinkedList、Stack以及Vector等

3.HashMap是怎么实现key是唯一的?

在HashMap的put方法实现中首先利用了hash()生成key的hashCode,生成一个hash值h1,如果这个h1在HashMap中不存在,那么直接将<key,value>添加
到HashMap中;如果这个值已经存在,那就会找出来HashMap中所有hash值为h1的key,然后分别调用key的equals()方法判断当前谈价的key值是否与
已经存在的key值相同,如果equals()方法返回true,HashMap会使用新的value值来覆盖掉旧的value值,如果equals()方法返回false,说明新增加的key
在HashMap中不存在,因此会在HashMap中创建新的映射关系
哈希冲突:不同的key值有相同的hash值

4.简单说说nio是什么,是哪个版本开始有的?

Java NIO(New IO) 是从Java 1.4版本开始引入的一个新的IO API,可以替代标准的Java IO API。
NIO与原来的IO有同样的作用和目的,但是使用的方式完全不同, NIO支持面向缓冲区的、基于通道的IO操作。为所有的原始类型提供(Buffer)缓存支持
增加通道(Channel)对象,作为新的原始 I/O 抽象
支持锁

5.aio是什么?了解过吗?是哪个版本开始有的?与nio的区别知道吗?

AIO即Asynchronous I/O(异步 I/O), 这是Java 1.7引入的NIO 2.0中用到的.
整个过程中, 用户线程发起一个系统调用之后无须等待, 可以处理别的事情. 由操作系统等待接收内容, 接收后把数据拷贝到用户进程中,
最后通知用户程序已经可以使用数据了, 两个阶段都是非阻塞的

与nio的区别为:
NIO是同步非阻塞的
AIO是异步非阻塞的

6.我看你用过RESTful,你能简单说说RESTful有什么特点吗?使用RESTful的好处是什么?RESTful有什么缺点吗?

REST,即Representational State Transfer的缩写,如果一个架构符合REST原则,就称它为RESTful架构
它主要有四个特点:
1.基于资源,("资源"是一种信息实体,它可以有多种外在表现形式。我们把"资源"具体呈现出来的形式,叫做它的"表现层",常用的Representation是json(推荐)或者xml(不推荐)等),资源通过URL来指定和操作。
2.统一接口,对资源的操作包括获取、创建、修改和删除,正好对应HTTP协议的GET,POST,PUT和DELETE方法。
3.连接是无状态性的。(如查询员工的工资,如果查询工资是需要登录系统,进入查询工资的页面,执行相关操作后,获取工资的多少,则这种情况是有状态的,因为查询工资的每一步操作都依赖于前一步操作,
只要前置操作不成功,后续操作就无法执行;
如果输入一个url即可得到指定员工的工资,则这种情况是无状态的,因为获取工资不依赖于其他资源或状态,)
4.能够利用Cache机制来提高性能

优点:接口简单,自解释,让人一看就明白是什么意思, 充分利用了HTTP协议,服务端只需要定义get/post/put/delete的实现,
缺点:规定URL中全是名词,因为一个URL代表的是资源的地址,对于复杂的关系和操作会变得困难

7.简单说一下你是怎么理解AOP,方法拦截和AOP有什么区别?xxxx功能是否能用AOP实现

AOP是面向对象开发的一种补充,它允许开发人员在不改变原来模型的基础上动态地修改模型以满足新的需求,如增加日志记录、安全验证或事务处理和异常处理

方法拦截对action负责,一般作用于controller层,
SpringAop 主要是拦截对Spirng管理的bean的访问,一般作用于service层

拦截器是链式的处理方式,每次请求都要在这个链的上下跑一遍
AOP有多种切入方式,可以更灵活的配置要监听处理的Bean

8.索引是怎么提高查询的性能的?具体来说说索引

DB在执行一条Sql语句的时候,默认的方式是根据搜索条件进行全表扫描,遇到匹配条件的就加入搜索结果集合。
如果我们对某一字段增加索引,查询时就会先去索引列表中一次定位到特定值的行数,大大减少遍历匹配的行数,所以能明显增加查询的速度

索引是用于提高我们查询的效率,但不是任何时候都应该加索引,有几种情况是可以无需加索引的:
1.每次都需要所有表记录,这样的情况下加索引也没有意义
2.对于非唯一的字段,例如“性别”这样大量重复值的字段
3.对于在查询中很少使用的列不应该创建索引,因为增加索引会降低系统维护速度和占据物理空间
3.对于记录比较少的列或者表,增加索引不会带来速度的优化反而浪费了存储空间
4.当修改性能远远大于检索性能时,不应该创建索引。这是因为修改性能和检索性能是互相矛盾的

9.既然说String是不可变的,那么String s = "aaa",为什么同样可以执行a = "bbb"

String s="aaa" 声明了一个可以指向String类型对象的引用,这个引用的名字为s,它指向了一个字符串常量"aaa",(也就是说,s只是一个引用,它指向了一个具体的对象)
a="bbb"这句代码运行后,s指向了另外一个String类型的对象,该对象的内容为"bbb",原来的那个对象还存在内存中,并没有被改变

10.String是怎么做到不可变的?

String使用private final char value[]来实现字符串的存储,也就是说String对象创建之后,就不能再修改此对象中存储的字符串内容

11.了解String常量池吗?String s = "aaa";和String b = "aaa";相比,它俩会相等吗?

例如:String s=new String("Hello"),编译期时在String常量池会创建1个对象,运行时在堆中创建一个对象
相等
因为对于==,如果作用于基本数据类型的变量(byte,short,char,int,long,float,double,boolean ),则直接比较其存储的"值"是否相等;
如果作用于引用类型的变量(String),则比较的是所指向的对象的地址(即是否指向同一个对象)。
引申:equals()方法是Object类提供的方法之一,在没有重写equals()方法时,与"=="运算符一样,比较的是引用
而String类对equals方法进行了重写,用来比较指向的字符串对象所存储的字符串是否相等。
其他的一些类诸如Double,Date,Integer等,都对equals方法进行了重写用来比较指向的对象所存储的内容是否相等。

12.现在有这么一个需求:一个用户可以填写多张调查问卷。调查问卷的数据是不确定的,可以是性别啊,工作年薪呀,等等等。现在你数据库怎么设计呢?

表格:用户表—选用网站用户表
问卷表—包含调查问卷自动编号、标题、前言、开启时间、结束时间、创建时间 、用户ID
问题表—包含问题编号、问题标题、相应的问卷编号、问题类型(单选、多选) 、问卷ID
选项表—包含选项编号、选项对应的问题、问题类型、问卷ID、问题ID
答案表—用户ID、问卷ID、问题ID、答案内容、问题类型

13.JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么?

1.jsp经编译后就变成了Servlet.(JSP的本质就是Servlet,JVM只能识别java的类,不能识别JSP的代码,Web容器将JSP的代码编译成JVM能够识别的java类)
2.jsp更擅长表现于页面显示,servlet更擅长于逻辑控制.
3.Servlet中没有内置对象,Jsp中的内置对象都是必须通过HttpServletRequest对象,HttpServletResponse对象以及HttpServlet对象得到.

14.get和post有什么区别?

(1)post更安全(不会作为url的一部分,不会被缓存、保存在服务器日志、以及浏览器浏览记录中)
(2)post发送的数据更大(get有url长度限制)
(3)post能发送更多的数据类型(get只能发送ASCII字符)
(4)post比get慢
(5)post用于修改和写入数据,get一般用于搜索排序和筛选之类的操作(淘宝,支付宝的搜索查询都是get提交),目的是资源的获取,读取数据

15.说说http的状态码有哪些

200 - 请求成功
301 - 资源(网页等)被永久转移到其它URL
400 - Bad Request 客户端请求的语法错误,服务器无法理解
403 Forbidden 服务器理解请求客户端的请求,但是拒绝执行此请求
404 - 请求的资源(网页等)不存在
405 Method Not Allowed 客户端请求中的方法被禁止
500 - 内部服务器错误

Java初级面试模拟1的更多相关文章

  1. 引用面试官文章 :如何准备Java初级和高级的技术面试

    本人最近几年一直在做java后端方面的技术面试官,而在最近两周,又密集了面试了一些java初级和高级开发的候选人,在面试过程中,我自认为比较慎重,遇到问题回答不好的候选人,我总会再三从不同方面提问,只 ...

  2. java web轻量级开发面试教程摘录,java web面试技巧汇总,如何准备Spring MVC方面的面试

    本内容摘自 java web轻量级开发面试教程 https://baike.baidu.com/item/Java%20Web%E8%BD%BB%E9%87%8F%E7%BA%A7%E5%BC%80% ...

  3. java 美团面试常见问题总

    一 基础篇 1. System.out.println(3|9)输出什么? 2. 说一下转发(Forward)和重定向(Redirect)的区别 3. 在浏览器中输入url地址到显示主页的过程,整个过 ...

  4. 【搞定 Java 并发面试】面试最常问的 Java 并发基础常见面试题总结!

    本文为 SnailClimb 的原创,目前已经收录自我开源的 JavaGuide 中(61.5 k Star![Java学习+面试指南] 一份涵盖大部分Java程序员所需要掌握的核心知识.欢迎 Sta ...

  5. 【搞定 Java 并发面试】面试最常问的 Java 并发进阶常见面试题总结!

    本文为 SnailClimb 的原创,目前已经收录自我开源的 JavaGuide 中(61.5 k Star![Java学习+面试指南] 一份涵盖大部分Java程序员所需要掌握的核心知识.觉得内容不错 ...

  6. Java高级工程师面试宝典

    Java高级工程师面试宝典 JavaSE 多线程 进程与线程的区别? 答:进程是所有线程的集合,每一个线程是进程中的一条执行路径,线程只是一条执行路径. 为什么要用多线程? 答:提高程序效率 多线程创 ...

  7. Java开发面试总结

    Java开发面试总结.. ----------------------- java 基础知识点这一块: 1.面向对象的三大特征.(继承,封装,多态) 1.1 在什么样的场合下面会使用到继承 1.2 什 ...

  8. java.net.URL 模拟用户登录网页并维持session

    java.net.URL 模拟用户登录网页并维持session 半成品,并非完全有用 import java.io.BufferedReader; import java.io.InputStream ...

  9. java异常面试常见题目

    在Java核心知识的面试中,你总能碰到关于 处理Exception和Error的面试题.Exception处理是Java应用开发中一个非常重要的方面,也是编写强健而稳定的Java程序的关键,这自然使它 ...

随机推荐

  1. 把 web 项目部署到 Linux 服务器上

    1.打开 eclipse,在已经完成的 web 项目上面点击右键,选择 export,然后选择导出成 war 包. 以部署 SMBMS 项目为例   2.项目打包成 war ,选择项目导出到的位置. ...

  2. swiper.animate--css3翻页动画

    基于swiper 的 animate动画,适用于Swiper2.x和Swiper3.x . 1. 使用Swiper Animate需要先加载swiper.animate.min.js和animate. ...

  3. centos7修改时间和时区

    设置时区同样, 在 CentOS 7 中, 引入了一个叫 timedatectl 的设置设置程序. 用法很简单: # timedatectl # 查看系统时间方面的各种状态 Local time: 四 ...

  4. Tomcat服务器启动后访问localhost:8080显示404的原因

    原因:在eclipse中关联了Tomcat服务器 重点来了,如果你是在eclipse中点击启动按钮启动的Tomcat 那么Tomcat不会默认部署它自己的测试项目(也就是大猫localhost:808 ...

  5. Python运算符(Python学习笔记03)

  6. Import CAD geometry in BladeModeler, turbogrid

    Table of Contents 1. Import CAD geometry in BladeModeler, turbogrid 1 Import CAD geometry in BladeMo ...

  7. 后台工具screen

    之前在putty之类的远程命令行操作服务器的时候,遇到关闭软件,对应的操作就会关闭.很多时候,就是开着电脑,然后挂在那里,虽然不用电脑跑,但是也耗电...主要是putty这些软件有时候会伴随黑屏崩掉. ...

  8. c#string类型反序列化成字典类型

    c# 实现string类型转化为字典类型:黄色底纹为需要引用的dll,可以在网站下载! 下载地址:http://download.csdn.net/download/xinping_168/47107 ...

  9. 二、第一个ECharts图表

    <!DOCTYPE html> <head> <meta charset="utf-8"> <title>ECharts</t ...

  10. [luoguP1351] 联合权值(Dfs)

    传送门 距离为2的点会产生权值,第一问,只需要在dfs的时候把一个点相邻的点都处理出来就行. 具体处理方式看代码,然而这样只处理了一遍,最后在乘2就好了. 第二问只需要处理一个点相邻的点中最大的和次大 ...