Fork me on GitHub

记一次电话面试的题目

记一次电话面试的题目

前天进行了人生第一次面试,总体感觉良好,聊了差不多半个小时,一交谈才发现自己的水平还有待提高,下面整理下面试题,做个总结。

自我介绍

这个就不多说了~~~

了解Java类的加载过程吗?

​ 编译,将写好的后缀为.java的源文件,通过Javac命令编译成字节码文件,也就是后缀为.class文件,运行,就是将编译过后的.class文件交给JVM(Java virtual machine Java虚拟机)处理。类加载过程主要分为 加载-链接-初始化三个部分,加载指的是将字节码文件通过类加载器装载到内存中;链接比较复杂,这里不做详细描述,初始化是指为类的静态变量赋予正确的初始值。

String如何比较内容相等?

​ 可以用Object类的equals方法,equals方法可以比较两个对象内容是否相等,比如a.equals(b)返回的是一个boolean类型的值,如果比较对象是否相等,可以用==来比较,==当用与基本类型数据时,比较的是内容是否相等,当用于对象时,比较的是对象的引用地址是否相等。

Array、ArrayList和LinkedList的特点及如何扩容

​ Array是数组,容量当你设定后就固定了,既可以存储基本类型数据也可以存储对象,ArrayList和LinkedList的特点 请点这里

Javascript中for in 和for of的区别

​ 这个题当时没了解过,只知道js里一般for循环,下去了解了下,for in 取key,for of 取value,for of只能用于数组遍历,for in还可以用于对象属性的遍历。

冒泡排序法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//两层循环,外循环控制轮数,内循环进行比较,比较相邻的元素,大的话交换,重复以上步骤
public static void bubbleSort(int []arr)
{
int[] arr = {5,3,4,7,9,2,1};
for(int i =0;i<arr.length-1;i++)
{
for(int j=0;j<arr.length-i-1;j++)
{
if(arr[j]>arr[j+1])
{
int temp = arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
}
MySQL的增删改查语句

​ INSERT INTO 表名(字段名1,字段名2,…)VALUES(值1,值2,…);

​ DELETE FROM 表名 [WHERE 条件表达式;

​ UPDATE 表名SET 字段名1=值1,[ ,字段名2=值2,…[ WHERE 条件表达式 ];

​ SELECT 字段名1,字段名2,…FROM 表名;

Jquery的理解
Vue的理解
前台输入框的数据如何传送到后台

1.通过Form表单,分为Post和Get,通过submit直接提交(非Ajax),后台返回一个html页面或其他内容。

2.href页面跳转模式,前端通过url访问Servlet(服务器小程序),后台返回数据。
3.利用Ajax进行异步数据请求
用jquery来写Ajax的话,需要五个参数,url:传输的地址,通常我们为了及时刷新,防止缓存,我们需要带一个对值不影响的参数,
method:发出参数的请求方法
datatype:值返回数据类型
data:指发出的参数
success:参数传送出去后,得到相应处理并且成功返回时所执行的代码块

谈谈事务的理解

ACID(原子性、连续性、隔离性、持久性),事务的隔离等级;脏读,幻读,不可重复读

Spring的理解Aop Ioc

Spring

jsp页面如何控制访问权限

​ 用session判断,当登陆后将用户信息储存在session中,设置一个过滤器,如果进行访问先进行判断session中是否有用户信息,如果没有的话跳转到登陆界面。

2019/8/10 下午11:07:12

jsp控制访问权限,也就如何控制直接访问web资源和其他jsp页面

思路:通过Filter过滤器来过滤操作,判断session中是否存在用户信息,如果有,则能访问,如果没有直接跳转到登陆界面,代码实现,然后再web.xml中配置Filter

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
package net.zzqd.filter;

import lombok.extern.slf4j.Slf4j;
import net.zzqd.common.RequestHolder;
import net.zzqd.model.SysUser;

import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/**
* @author zqnh
* @date 2019/8/10 on 22:59.
*/
@Slf4j
public class LoginFilter implements Filter
{

public void init(FilterConfig filterConfig) throws ServletException {

}

public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException
{
HttpServletRequest req = (HttpServletRequest) servletRequest;
HttpServletResponse resp = (HttpServletResponse) servletResponse;

SysUser sysUser = (SysUser)req.getSession().getAttribute("user");
if (sysUser == null) {
String path = "/signin.jsp";
resp.sendRedirect(path);
return;
}
RequestHolder.add(sysUser);
RequestHolder.add(req);
filterChain.doFilter(servletRequest, servletResponse);
return;
}

public void destroy() {

}
}
1
2
3
4
5
6
7
8
9
<filter>
<filter-name>loginFilter</filter-name>
<filter-class>net.zzqd.filter.LoginFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>loginFilter</filter-name>
<url-pattern>/sys/*</url-pattern>
<url-pattern>/admin/*</url-pattern>
</filter-mapping>

这样,当其他用户未登录直接访问sys和admin的请求被过滤。