目录

一、简单讲下 Java 的跨平台原理

二、装箱与拆箱

三、实现一个拷贝文件的工具类使用字节流还是字符流

四、介绍下线程池

五、JSP和 Servlet 有哪些相同点和不同点

六、简单介绍一下关系数据库三范式

七、Mysql 数据库的默认的最大连接数

八、说一下 Mysql 和 Oracle 的分页

九、简单讲一下数据库的触发器的使用场景

十、简单讲一下数据库的存储过程的使用场景

十一、简单介绍一下 Activiti

十二、编写一个 Servlet

一、简单讲下 Java 的跨平台原理

由于各个操作系统(Windows,Linux等)支持的指令集不是完全一致的。就会让我们程序在不同的操作系统上要执行不同的程序代码。Java 开发了适用于不同操作系统及位数的 Java 虚拟机来屏蔽系统之间的差异,提供统一的接口(Java API)。对于 Java 开发者而言,只需要在不同的操作系统上安装对应的 Java 虚拟机即可。这时我们的程序只需要遵循 Java 规范,就可以在所有的操作系统上运行 Java 代码。如果我们需要将系统部署到不同的环境时,只需要在系统上安装对应版本的 Java 虚拟机(JVM)即可。

二、装箱与拆箱

装箱:把基本数据类型转换成对应的包装类型(Integer i = 1:自动装箱,源码中通过 Integer.valueOf(1)方法进行装箱)。

拆箱:把包装类型转换为基本数据类型(int j = i:自动拆箱,手动拆箱:int j = i.intVaule()也是自动拆箱的源码中所使用的方法)。

为什么有了基本数据类型,还需要包装类型:因为Java是面向对象的语言,而基本数据类型不具备现象对象的特性(null等)。

三、实现一个拷贝文件的工具类使用字节流还是字符流

我们拷贝的文件不确定是只包含字符流,有可以能有字节流(图片、声音、图像等),为考虑到通用性,要使用字节流。

四、介绍下线程池

JDK5 中增加了并发库,为 Java 线程的管理和使用提供了强大的便利性。java.util.current 包中提供了对线程的优化和管理的各项操作,该包提供了线程的运行,线程池的创建,线程声明周期的控制。

Java 通过 Executors提供四个静态方法创建四种线程池,分别是:

【1】newCachedThreadPool:创建一个可缓存线程池,如果线程池长度超过处理需求,可灵活回收空闲线程,若无可回收,则创建新线程。

【2】newFixedThreadPool:创建一个定长线程池,可以控制最大线程并发数,超出的线程会在队列中等待。

【3】newScheduledThreadPool:创建一个定长线程池,支持定时及周期性任务执行。

【4】newSingleThreadExecutor:创建一个单线程的线程池,它只会用唯一的工作线程来执行任务,保证所有任务按照指定顺序(FIFO,LIFO,优先级)执行。

线程池(数据库连接池类似)的作用?

【1】限定线程的个数,不会导致由于线程过多导致系统运行缓慢或者崩溃。

【2】线程池不需要每次都去创建和销毁,节约资源。

【3】线程池不需要每次都去创建,提高响应时间。

五、JSP和 Servlet 有哪些相同点和不同点

Jsp 继承了 HttpServlet 所以 Jsp 是 Servlet 技术的扩展,所有的 Jsp 文件编译就是一个 Servlet,JVM 只识别 Java 的类,不能识别 Jsp 代码,Web 容器将 Jsp 的代码编译成 JVM 能够识别的 Java 类。Servlet 如果要实现 Html 功能,必须使用 Writer 输出对应的 Html 标签,比较麻烦。而 Jsp 的情况是 Java 和 Html 可以组合成一个名为 .jsp 的文件,做界面展示比较方便而嵌入逻辑比较复杂。

Jsp 与 Servlet 主要的不同点在于 Jsp 侧重于视图,Servlet 主要用于控制逻辑。Servlet 中没有内置对象,Jsp 中的内置对象必须通过 HttpServletRequst 对象、HttpServletResponse 对象以及 HttpServlet 对象得到。

六、简单介绍一下关系数据库三范式

范式就是规范,就是关系型数据库在设计表时,要遵循的三个规范。要想满足第二范式必须先满足第一范式,要满足第三范式必须先满足第二范式。

第一范式(1NF)是指数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。列数据的不可分割

第二范式(2NF)要求数据库表中的每个行必须可以被唯一地区分。为实现区分通常需要为表加上一个列,以存储各个实例的唯一标识。(主键)

满足第三范式(3NF)必须先满足第二范式(2NF)。简而言之,第三范式(3NF)要求一个数据库表中不包含已在其它表中已包含的非主关键字信息。(外键)

反三范式,有的时候为了效率,可以设置重复或者可以推导出的字段。例如:订单(总价)和订单项(单价)

七、Mysql 数据库的默认的最大连接数

为什么需要最大连接数?特定服务器上面的数据库只能支持一定数目同时连接,这时候我们一般都会设置最大连接数(最多同时服务多少连接)。在数据库安装时都会有一个默认的最大连接数为100。

【1】可以通过设置 my.ini 配置文件中的如下属性进行设置:

max_connections=100

【2】可以通过命令进行设置:这种方式有个问题,就是设置的最大连接数只在 Mysql 当前服务进程有效,一旦 Mysql 重启,又会恢复到初始状态。因为 Mysql 启动后的初始化工作是从其配置文件中读取数据的,而这种方式没有对其配置文件做更改。

mysql>show variables like 'max_connections';(查可以看当前的最大连接数)

msyql>set global max_connections=1000;(设置最大连接数为1000,可以再次查看是否设置成功)

八、说一下 Mysql 和 Oracle 的分页

Mysql是使用关键字limit来进行分页的 limit offset,size 表示从多少索引去多少位。Oracle 的分页,使用三层嵌套查询。

// MySql 分页语句

String sql = "select * from students order by id limit " + pageSize*(pageNumber-1) + "," + pageSize;

// Oracle 分页语句

String sql =

"select * from " +

"(select *,rownum rid from (select * from students order by postime desc)

where rid<=" + pagesize*pagenumber + ") as t" +

"where t>" + pageSize*(pageNumber-1);

九、简单讲一下数据库的触发器的使用场景

触发器语法:

CREATE [OR REPLACE] TRIGGER 触发器名称 {BEFORE|AFTER} {DELETE|INSERT|UPDATE[OF 列名]} ON 表名 [FOR EACH ROW [WHEN(条件)]] PLSQL块

触发器分类:

●  行级触发器:行级触发器作用的每一条记录,都会被触发,在行级触发器上使用 :old和 :new伪记录变量识别值的状态

●  语句级触发器:在指定的操作之前或者操作之后执行一次,不管这条语句影响了多少行,只执行一次。

语句实操:

-- 1、:old和:new 代表同一条记录

-- 2、:old 表示操作该行之前,这一行的值。

-- :new 表示操作改行之后,这一行的值。

--创建触发器

create or replace trigger checksalary

before update

on temp

for each row

begin

if :new.sal < :old.sal then

raise_application_error("将薪");

end if;

end;

十、简单讲一下数据库的存储过程的使用场景

我们可以将存储过程理解为编程中的方法,存储过程和方法一样有参数和返回值。是为了完成特定功能的SQL指令集,经编译后存储在数据库中,用户通过指定存储过程的名字并给指定参数来调用执行它。

存储过程语法:

CREATE [OR REPLACE]PROC[EDURE] 存储过程名

@参数1 [数据类型]=[默认值] [OUTPUT]

@参数2 [数据类型]=[默认值] [OUTPUT]

AS

SQL语句

EXEC 过程名[参数]

存储过程的优点:

【1】存储过程只在创建时进行编译,以后每次执行存储过程都不需再重新编译,而一般 SQL 语句每执行一次就编译一次,因此使用存储过程可以大大提高数据库执行速度。

【2】通常,复杂的业务逻辑需要多条 SQL 语句。这些语句要分别地从客户机发送到服务器,当客户机和服务器之间的操作很多时,将产生大量的网络传输。如果将这些操作放在一个存储过程中,那么客户机和服务器之间的网络传输就会大大减少,降低了网络负载。

【3】存储过程创建一次便可以重复使用,从而可以减少数据库开发人员的工作量。

【4】安全性高,存储过程可以屏蔽对底层数据库对象的直接访问,使用 EXECUTE 权限调用存储过程,无需拥有访问底层数据库对象的显式权限。

语句实操:

--1)、带输入输出参数

create or replace procedure proc_office --存储名称

@id int,@name varchar(20) output --(参数名 参数类型 [传出值:output]

as

begin

select @name=name from db where id=@id --sql语句

end

declare @houseName varchar(20) --声明一个变量,获取存储过程传过来的值

execute proc_office 4,@houseName output --执行 存储名称 输入参数 输出参数带有output

select @houseName --显示值

--2)、带返回值

create or replace procedure proc_office_info --存储名称

@id int

as

begin

if(select name from db where id=@id)=null --sql语句

begin

return -1

end

else

begin

return 1

end

end

declare @houseName varchar(20)

exec @houseName=proc_office_info 2

print @houseName

十一、简单介绍一下 Activiti

Activiti 是一个业务流程管理(BPM)和工作流系统,适用于开发人员和系统管理员。其核心是超快速,稳定的BPMN2流程引擎。它易于与 Spring集成使用。主要要在OA中,把线下流程放到线上。 把现实生活中一些流程固话定义到系统中,然后通过输入表单数据完成业务。例如:他可用在OA系统的流程管理中:请假流程 小于三天,一级主管审批,大于三天二级才能审批。

十二、编写一个 Servlet

【1】Servlet 与普通的 Java 程序的区别:Servlet 本质上就是一个 Java 类;Servlet 类必须实现接口javax.servlet.Servlet接口;运行在 Web 容器中,tomcat 就是一个 Web 容器;能够接收浏览器发送的请求,并且做出响应给浏览器;

【2】编写 Servlet 的步骤:写一个类继承于 HttpServlet,HttpServlet 是个抽象类它已经实现了 Servlet 接口; 重写doGet 或doPost 方法,分别处理表单的 get 或 post 请求;如果直接在浏览器输入地址访问,使用的是 get 方法;编写 web.xml 配置文件,对 Servlet 进行配置或者通过 @WebServlet("/xxx"),才能通过浏览器来访问。

//如果web.xml中没有配置时,就添加此注解

@WebServlet("/xxx")

public class DemoServlet extends HttpServlet {

@Override

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

super.doGet(req, resp);

}

@Override

protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

super.doPost(req, resp);

}

}

如果使用 web.xml 配置,配置信息如下:

LoginServlet

com.spring.web.servlet.DemoServlet

LoginServlet

/login.do

【3】 也可以实现最基本的 Servlet 接口。

public class servlet implements Servlet

//初始化方法,创建时加载

@Override

public void init(ServletConfig servletConfig) throws ServletException {

}

@Override

public ServletConfig getServletConfig() {

return null;

}

//调用时加载 里面对 doPost doGet 等进行处理

@Override

public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {

}

@Override

public String getServletInfo() {

return null;

}

//销毁时加载

@Override

public void destroy() {

}

}

----关注公众号,获取更多内容----

Java面试专业技能怎么写_Java面试——专业技能相关推荐

  1. java就业班怎么改简历_Java面试,如何修改个人简历?一些过来人的经验!

    一.前言 又到了招聘的季节,看到很多师弟师妹们不太懂得如何写简历来展现自己,这里我想给出我个人的一些建议. 因为我的简历修改了很多次,也参考了大佬的建议,也咨询过师兄师姐怎么修改,希望对大家有帮助. ...

  2. 计算机专业大一新生,写给计算机专业大一新生

    大一的一定要看啊,很有用! 写给计算机专业大一新生 大学是你们腾飞的起点. 大学,这是一个令人激动的词汇,尤其是对于成功的考入大学,能力不凡的新生们.你们来到了人生的渡口,等待摆渡人来指引你们渡过四年 ...

  3. java cpu利用率上不去_Java 面试突击之 Java 并发知识基础 amp; 进阶考点全解析

    版权说明:本文转自知乎用户木子超,已获其许可,附上其文章主页链接 知乎用户 一.基础 什么是线程和进程? 何为进程? 进程是程序的一次执行过程,是系统运行程序的基本单位,因此进程是动态的.系统运行一个 ...

  4. java移动接口发短信_Java面试零碎知识点

    1.Java文件经过JVM编译成字节码文件,即.class文件,将字节码文件在不同的操作系统中运行时,操作系统再将字节码文件编译成机器码文件.这就是Java跨平台 2.首先明确一点,java 的 GC ...

  5. 为什么java安装卡在满格_Java面试总结(JVM)

    内存模型: (1)程序计数器 (2)虚拟机栈 (3)本地方法栈 (4)堆 (5)方法区 注意:堆和方法区是线程共享的,其余区域是线程隔离的. 栈里面存放的是基本的数据类型和引用,而堆里面则是存放各种对 ...

  6. java中级招聘要求怎么写_Java程序员如何进阶,一般招聘都有哪些要求?

    原标题:Java程序员如何进阶,一般招聘都有哪些要求? 作为当前市场上应用领域最广.人才需求最大的编程语言,Java一直是人们入行IT行业的选择.然而,随着大批量的人涌入Java开发行业,企业的招聘门 ...

  7. Java中field的覆写_Java中方法的覆写

    [套装4本]java编程思想4第4版+ 402.5元 包邮 (需用券) 去购买 > 一.方法的重写概念 之前说了子类如果继承了一个父类,那么子类就会拥有父类的方法(不包括构.造方法)和属性,此时 ...

  8. java实训报告怎么写_Java实训报告

    很多同学在大学里面参加完Java实训之后,学校的老师会要求每个人写一份Java实训报告,对于学习理科计算机专业的你来说,写几万行的代码可能不是什么问题,但是让写一份800字的实训报告,那就有些头大了, ...

  9. java 保存的代码怎么写_java实现写入并保存txt文件的示例代码

    java实现写入并保存txt文件的示例代码 发布时间:2020-04-30 15:14:07 来源:亿速云 阅读:110 作者:小新 这篇文章主要为大家详细介绍了java实现写入并保存txt文件的示例 ...

最新文章

  1. Yahoo中国变脸?
  2. asp.net数据绑定之Eval和Bind区别
  3. SQL SERVER 数据库清空语句 忽略外键 触发器 等
  4. PC端 java 开发蓝牙所遇到的问题
  5. 接力,智能指针也麻烦
  6. 2021年品牌CDP与营销数字化转型报告:从自建数据资产到消费者深度运营
  7. 暴力破解sshd服务的密码的小技巧
  8. DAG镶嵌模型+原始路径打印
  9. Docker教程小白实操入门(15)--如何使用WORKDIR、ENV、ARG和EXPOSE设置镜像
  10. 振动噪声测试分析软件,DASP-V11专业版 振动噪声应变冲击
  11. mac mysql客户端工具 知乎_Mac OS X 平台上有哪些好用且免费的MySQL客户端工具?
  12. 网站设计(3常用标签)
  13. 服务器组态文件在哪里,组态王怎么读取服务器数据库
  14. 【运营数据分析】运营数据分析怎么做?建立运营数据分析思维
  15. 【C/C++】字节对齐 ALIGN宏
  16. 用MATLAB计算常规矩阵函数 eAt sinA
  17. 【生成模型】浅析玻尔兹曼机的原理和实践
  18. Java服务器与客户端传文件,java实现上传文件到服务器和客户端.pdf
  19. 综合素质计算机的知识考点,综合素质常识考题
  20. AAAI 2023 Fello名单出炉,李学龙教授完成AI 领域Fellow大满贯!

热门文章

  1. 增长气血的捷径——山药薏米芡实粥
  2. jmeter正则表达式
  3. Android 四大组件通信核心
  4. matlab抛物偏微分方程,抛物型方程差分求解 跪求MATLAB解抛物型偏微分方程的程序...
  5. Linux 无线网络断开的解决方案
  6. 使用codesense的GJB 8114模板对c++源代码规则检测示例
  7. 超详细的Socket通信原理和实例讲解(学习走起~)
  8. 免费SCA工具横向测评
  9. 神舟电脑为什么这么便宜
  10. python模块下载连接清华镜像