Java面试必知必问

Java面试题01.面试的整体流程

Java面试题02.java的垮平台原理

(跨平台的JAVA运行环境()&JVM(不同版本的虚拟机,屏蔽底层差异)&按操作码助记符排列的指令集&)

Java面试题03.搭建一个java的开发环境

(配置Web应用服务器Tomcat (web服务器)&下载JDK开发工具包(Java能跑起来,Java_HOME,)&)

Java面试题04.java中int占几个字节

( int和Integer(4字节32位,boolean1字节)&)

Java面试题05.java面向对象的特征

(面向对象技术应用(封闭,现实生活中的对象抽象为类)&多态的实现机制是什么(程序运行期确定实际类型,进行动态绑定,引用变量指向具体的实际变量)&)

Java面试题06.装箱和拆箱

(值与引用的相互转换:装箱和拆箱(8种基本数据类型,自动拆箱包装类型转为基本数据类型parseInt() intValue,装箱Integer.VlueOf(),面向对象语言,)&)

Java面试题07.==和equals的区别

(覆盖equals时请遵守通用约定(==判断基本数据类型,引用变量比较内存地址。)&)

Java面试题08.String

(String API(new 出来内容确定不能改变里面内容 final char[],字面量String c=a+b;创建了3个对象)& final实例域()&String、StringBuffer、StringBuilder和 StringTokenizer有什么区别 (StringBuilder可以改变里面的内容,未使用final修饰,StringBuffer线程安全)&)

Java面试题09.讲一下java中的集合

([0第0]9章 集合(List有序可重复,Set无序不可重复,根据equals与hashcode判断,要重写两个方法)&)

Java面试题10.ArrayList LinkedList

(List接口、ArrayList类和LinkedList类(ArrayList底层是数组查询块插入慢,LinkedList底层是链表)&)

Java面试题11.HashMap和HashTable的区别

(Map接口&HashMap实现类(HashMap线程不安全可以将null作为key或value,HashTable不可以)&ConcurrentHashMap(大Map分为N个Segment,默认16个,可以同时进行访问))

Java面试题12.实现一个拷贝文件的类使用字节流还是字符串

(字节流(媒体,通用性考虑)&字符流&)

Java面试题13.线程的实现方式 怎么启动线程怎么区分线程

(显式地为任务创建线程(继承Thread(单继承)或者实现Runnable接口,start启动后,执行run()方法,thread.setName()设置名称)&无限制创建线程的不足&)

Java面试题14.线程并发库和线程池的作用?

(java.util.concurrent.Executors类获取的ThreadFactory(Executors类提供了4个静态方法来创建线程池,newFixThreadPool固定大小线程池,newCacheThreadPool可缓存的,线程池不会导致线程过程而导致运行内存溢出,重复利用节约资源)&)

Java面试题15.设计模式和常用的设计模式

(实践:正确实现看似简单的单例模式(构造方法私有,饿汉直接new占用资源多,懒汉提供同步方法创建对象,)&Spring的AOP(动态代理) &Spring的IoC(工厂模式))

Java面试题16.http get post请求的区别

(发送一个简单的HTTP请求(URL访问资源)&Express中的GET与POST请求(GET对应获取查询,POST进行更新资源,Get会在地址栏显示,数据大小有限制,)&)

Java面试题17.说说你对Servlet的理解

(在Tomcat中部署Servlet与JSP Web应用程序(Servlet是Java编写服务器端程序,实现了Servlet接口,用来生成动态Web内容,运行在服务器,HttpServlet重写doGet或dopost或者重写Service来完成对get和post请求的响应)&)

Java面试题18.Servlet的生命周期

(服务生命周期(init、service、destory,加载servlet的class文件,Serevlet启动被服务器实例化,容器运行init方法完成初始化,请求到达service方法自动派遣对应的doGet或doPost方法,服务器关闭时实例销毁调用destory方法)&)

Java面试题19.forward和redirect的区别

(Servlet中forward和redirect有什么区别 (forward浏览器不会显示跳转地址还是原来的一次请求,服务器端的转向。forward高效在forward能满足尽量使用forward,redirect会重新发送请求,是客户端的跳转)&)

Java面试题20.jsp和Servlet的相同点和不同点?

(如何使用JSP与Servlet实现MVC模型(所有JSP都继承HTTPJspBase类,最终都会实现Servlet接口,printWrite来输出页面,jsp通过Java脚本在页面嵌入代码) &)

Java面试题21.内置对象和四大作用域和页面传值

(内置对象与方法(request请求,response响应,pageContext整个页面,session,application整个应用,out,config,page,exception)&容器中Bean的作用域 &)

Java面试题22.Session和Cookie的区别

( Session与Cookie在request与response对象中的运行机制(session和cookie都是会话,session保存在服务器端,session实现依赖于cookie,sessionId要存放在客户端浏览器。Cookie限制4k,最多保存20个cookie,cookie禁用通过数据库来实现数据存取)&)

Java面试题23.mvc模式和mvc各部分的实现

(理解MVC原理(vIew Freeaker,M javaBean,将试图与逻辑分隔)&)

Java面试题24.数据库分类和常用数据库

(数据库设计(关系型数据库与非关系型数据库,hadoop,MongoDB,Redis)&)

Java面试题25.关系型数据库的三范式

(第三范式(如何一个表与另一个表数据重复,要使用外键进行关联)&第二范式(第二范式表中的每一行必须可唯一区分,要有唯一主键)&第一范式(第一范式满足才能满足后面的,第一范式数据库表的每一列是不可分隔的基本数据项,一列不能有多个值。)&)

Java面试题26.事务的四大特征

(事务的ACID 性质(一个操作不可分隔,要么都执行要么都不执行,一致性(都成功,否则要回滚),隔离性(一个事物开始后,不能受其他事物干扰),原子性,持久性(事物开始不能终止))&)

Java面试题27.mysql数据库最大连接数

(连接数过多导致程序连接报错的原因(最大连接数,数据库安装时都有一个,my.ini)&)

Java面试题28.mysql和oracle的分页语句(着重说思路)

(无处不在的分页器(mysql通过limit分页,起始页和每页大小)&)

Java面试题29.触发器的使用场景

(触发器(触发条件,当条件满足后,增加日志时向通知表添加条目,create trigger insertArticle Trigger after insert on article for each row begin )&)

Java面试题30.存储过程的优点

(存储过程(存储过程创建时编译,以后不需要再进行编译,提升执行效率,复杂业务要多条sql语句,减少网络传输,存储过程创建一次便重复使用,安全性高屏蔽底层数据库的直接调用,create procedure insert_Student() begin end; call )&)

Java面试题31.jdbc调用存储过程

(与存储过程和触发器有关的语言元素(cn.prepareCall() CallableStatement cstmt )&)

Java面试题32.简单说一下你对jdbc的理解

(jdbc(connector/j)数据库管理系统,开发者只需要使用jdbc接口不通过的实现,以接口的方式调用不同数据库驱动&)

Java面试题33.写一个jdbc的访问oracle的列子

(访问Order(加载驱动Class.forName,获取连接DriverManager.getConnection(),设置参数书,执行,释放连接)&)

Java面试题34.jdbc中preparedStatement比Statement的好处

(PreparedStatement接口(预编译防止sql注入攻击)&Statement接口&)

Java面试题35.数据库连接池的作用

(一个简单的数据库连接池示例(限定数据库连接个数,不会导致由于数据库连接过多,导致数据库运行缓慢而崩溃,节约资源)&)

Java面试题36.HTML

(applet HTML标记和属性&)

Java面试题37.简单介绍了一下Ajax

(Ajax传递(异步请求服务器,实现局部刷新网页技术)&)

Java面试题38.js和JQuery的关系

( jQuery基础()&)

Java面试题39.jQuery中的常用选择器

( jQuery选择器(ID选择器,Class选择器,标签选择器,通用选择器)&)

Java面试题40.jQuery中页面加载完毕事件

( 页面加载遮盖插件LoadMask($(function() {})页面结构加载完毕即可调用,window.onload等页面中的图片等远程完毕被加载完毕调用执行。)&)

Java面试题41.jQuery中Ajax和原生js实现Ajax的关系

(AJAX()&)

Java面试题42.简单说一下html5

(零基础学 HTML5+CSS3(html5增加了一些新的标签,如header和footer)&)

Java面试题43.简单说一下css3

( CSS3概述()&)

Java面试题44.bootstrap的是什么

(Bootstrap类&)

Java面试题45.什么是框架

(流行的ORM框架简介&)

Java面试题46.简单介绍一下MVC模式

(了解MVC模式&)

Java面试题47.简单说一下对mvc框架的理解

(Spring MVC框架(为了解决传统的MVC模式的问题(针对servlet)而出现框架架构)&)

Java面试题48.struts2的执行流程或者struts2的原理

(Struts2中整合Thymeleaf ()&)

Java面试题49.Struts2的拦截器是什么?你都用它干什么?

(Struts2的拦截器&)

Java面试题50.Spring MVC的执行流程

(新建springMVC—servlet.xml配置文件 (tomcat容器加载时对servlet.xml文件进行解析,客户端发送请求被DispatcherServlet拦截到,解析请求地址,通过地址找到对应处理器Handler找到Controller,选择一个合适的HandlerAdapter适配器,匹配对应的Handler方法并调用,返回MidelAndView进行视图渲染)&)

Java面试题51.SpringMVC和Struts2的不同

(SpringMVC&SpringMVC框架层面的约定和定制&)

Java面试题52.简单介绍一下Spring或者Spring的两大核心

(Spring框架的设计理念与设计模式分析(针对JavaBean生命周期进行管理的轻量级容器,IOC控制反转注入相应的对象,主要通过反射实现,AOP动态代理的方式在方法执行前后或者异常出现时加入相应逻辑,事务日志与权限等工作)&)

Java面试题53.AOP是什么?都用它做什么?

(定义AOP术语&)

Java面试题54.Spring事务的传播特性和隔离级别

(Spring事务的传播属性(propagation Required如果存在事物则开始当前事物,如果没有事物则开启事务,Support支持事务,如果没有就不支持事务,Mandatory支持当前事物,没有活动的事务则抛出异常,new总是开启一个新的事务,Never绝不开启事务。)&数据库事务隔离级别(uncommited,最低隔离级别,允许一个事物可以看到未提交的数据,COMMITED修改数据提交后才能被另一个事务读取)&)

Java面试题55.ORM是什么?ORM框架是什么?

(为什么需要ORM框架(对象关系映射,为了解决面向对象与关系型数据库匹配问题,屏蔽jdbc底层细节的问题)&)

Java面试题56.ibatis和hibernate有什么不同

(Hibernate 5.2及替代技术&)

Java面试题57.hibernate对象状态及其转换

(深入理解持久化对象&)

Java面试题58:hibernate的缓存

(二级缓存和查询缓存&)

Java面试题59.webservice的使用场景

(发布REST WebService(面向服务的架构,不依赖平台和语言,实现不同语言互相调用,基于HTTP协议,天气预报等)&)

Java面试题60.activiti的简单介绍

(Activiti介绍(流程把线下流程放到线上,完成特定的流程业务)&)

Java面试题61.linux的使用场景

( Linux 网络I/O 模型简介(长时间运行稳定的操作系统,常被拿来做为服务器,有些软件没有软件包需要在linux上编译)&)

Java面试题62.linux常用命令

(Linux常用命令(pwd获取当前路径,cd跳转目录,su -u切换管理员,ls ll 列举目录,tail cat)&)

Java面试题63:怎么操作linux服务器

(影响linux服务器性能的因素(远程连接通过SSH客户端访问安装了SSH服务端的linux服务器,服务端口为22,SSH客户端putty与xshell,上传文件使用sftp,服务器需要开放sftp25端口,sftp客户端有Winscp与xftp,xmanager)&)

Java面试题64:有没有使用过云主机

( MySQL 在云主机上的性能(云主机,提供远程的云服务器功能,租用对应的服务器,使用ssh进行操作)&)

Java面试题65:数据库优化方面的事情

(对SQL语句执行次数进行优化(定位慢查询优化,建立索引在索引中查询,分表针对一张表数据多或者的某些字段值比较多且少使用可以进行水平与垂直拆表,多态机器实现读写分离,使用缓存)&)

Java面试题66:如果查询和定位慢查询

(慢查询日志QID(启动mysql数据库开启慢查询,把执行慢的语句写到日志中,通过查看日志定位语句,之后使用explain分析语句)&)

Java面试题67:数据库优化之数据库表设计遵循范式

(数据库的范式化和反范式化(1NF列具有原子性,2NF表的记录要唯一有主键,3NF没有冗余字段不应该被推导出来,如果能推导出表中信息不应该设置为一个字段)&)

Java面试题68:选择合适的数据库引擎

(B树存储引擎(MylSAM添加查询为主,事务要求不高支持全文索引,支持表锁不支持外键,INNODB对事物要求高保存为重要的订单等信息,支持行锁,Memory数据变化频繁内存级别的不需要入库)&)

Java面试题69:选择合适的索引

(索引&类索引、父类索引与接口索引集合(索引帮助DBMS高效获取数据的数据结构,有普通索引运行出现重复值,唯一索引不能有重复记录如姓名身份证电话邮箱等,主键索引随着主键创建而创建没有null值,全文索引对表中文本域索引只有Mylsam有效)&)

Java面试题70:使用索引的一些技巧

(索引对查询速度的影响(添加索引会占用一定空间,dml(插入,修改与删除)变慢,只有在肯定where条件要经常使用以及字段内容不是几个固定值如sex以及字段内容不频繁变化的情况才建立索引。复合索引不使用前面的第一部分就不会使用索引,like查询如果%在前面不会索引,前面固定后面通配符如aaa%才会使用到索引,如果条件即使有or有条件也会没有使用索引,要求所有的字段都必须单独能使用索引,如果列类型是字符串类型要用’’括号括起来否则不适用索引,最后如果mysql估计全表说明要比索引快不适用索引)&)

Java面试题71:数据库优化之分表

(分库分表解决方案(分表分为水平分表百万级别,按行分表容易,水平分表可以缓解百万级别的表锁,垂直分表按列分表,如果某个子弹值非常大长文本或二进制等,并且很少情况查询的到,可以把这些字段单独放在一张表中通过外键关联。水平分表策略按时间分表,按区间范围分表根据id分表,哈希分表通过目标的ID或者名称通过一定的hash算法访问对应的表)&)

Java面试题72:数据库的读写分离

(读写分离设计(一台数据库支持的最大并发连接数是有限的,如果用户并发访问过多,通过集群实现读写分离,读写分离分为主从同步要求每个数据库服务器的数据都是一致,能改变数据库数据的操作都往主数据库去写,其他的数据库从主数据库上同步数据,最终会把数据持久化到磁盘。读写分离使用负载均衡写操作都往主数据库,读的操作都往从服务库)&)

Java面试题73:数据库优化之缓存

(二级缓存和查询缓存(在持久层与数据库之间添加一层缓存层,用户访问的数据已经被缓存起来了,用户访问直接从缓存内存中取数据。分布式缓存)&)

Java面试题74:sql语句优化小技巧

(待优化的问题(DDL优化,导入数据去除主键,插入数据需要创建索引比较慢,之后恢复即可alter table text DISABLE keys alter table test ENABLE keys。关闭唯一校验 set unique_checks=0 set unique_checks=1。数据库提交方式多次提交改为最后一次提交,set autocommit =0,set autocommit=1开启。DML优化,把多条插入语句变为一次插入 insert into test values(1,2),(1,3),(1,4),DQL优化 order by优化多使用索引排序,group by优化 使用order by null取消默认排序,子查询优化基于索引优化on(c.customer_id=p.customer_id)where p_customer_id is null替代基于func外键not in(select),Or优化在两个独立索引上使用or(两边都是索引字段)性能优于一边是索引一边不时索引,如果是复合索引,or分开后不会用到索引)&)

Java面试题75:批量插入几百万条数据

(通过合理配置来支持百万级并发连接(批量插入百万数据,变多次提交为一次提交 conn.setAutoCommit(false),pstmt.clearBatch();for(pstmt.addBatch();)pstmt.executeBatch() if(){conn.commit()},也可以使用存储过程)&)

Java面试题76:有没有使用过redis

(分布式缓存Redis(nosql数据库先存到内存根据AOF或者RDB持久化硬盘,保证断电数据也不会丢失。)&)

Java面试题77:redis的使用场景

(高并发利器Redis(经常使用的数据,存放在读速度较快的内存,内存级别的数据库,以便于下次访问减少时间与数据库压力,基于原子性的内存操作,可以解决库存计数器的溢出问题,还能解决web集群时session缓存服务器不一致)&)

Java面试题78:redis存储对象的方式

(Redis数据结构常用命令(使用二进制字节流需要序列化为字节进行保存,或者json字符串存取方便)&)

Java面试题79:redis数据淘汰机制&

(自动淘汰冷门数据(Redis可设置最大的内存大小,单一Redis节点内存大小有限,因此需要保存有效的数据淘汰一些暂时不重要的数据,6中数据淘汰机制 volatile-lru从已设置过期时间的数据集挑选最近最少使用的数据淘汰,volatile-ttl从已设置过期时间的数据集挑选将要过期的数据淘汰,volatile-random从已设置过期时间的数据集中任意选择数据淘汰,allkey-lru,allkeys-random,no-enviction从所有数据集淘汰时速局))

Java面试题80:java访问redis级redis集群?

(使用Redis集群实现数据水平化存储(jedis Java客户端访问redis服务器,spring data的redisTemplates来访问redis,redis集群类似于mysql的读写分离)&)

Java面试题81:微信公众号分类和微信开发原理

(微信小程序开发(分为公众号,服务号和企业号,当微信用户关注微信公众平台进行访问,微信开发者接入认证的方式让我们的服务器来处理来自微信服务器转发的微信用户请求,之后返回微信服务器,通过微信服务器来对用户进行响应)&)

Java面试题82:怎么把微信和业务平台进行绑定

(利用分布式服务打造可复用的业务平台(菜单跳转页面无法直接获取微信号,通过微信网页授权获取微信号,用户注册实体包含微信号字段,通过拦截器获取appid进行绑定放入session中,之后就可以修改用户微信号字段)&)

Java面试题83:项目的分类和项目参与者

(使用Git管理项目源代码。&)

Java面试题84:项目流程和业务注意事项

(详解典型的系统调用流程(可行性分析与立项开工会,需求分析与需求设计,进行迭代开发与迭代测试,最后项目验收与项目总结)&)

发布了370 篇原创文章 · 获赞 88 · 访问量 29万+

猜你喜欢

转载自blog.csdn.net/qq_35029061/article/details/105206309