我的面试宝典:一线互联网大厂Java核心面试题库
以下是我个人的一些做法,希望可以给各位提供一些帮助:
整理了很长一段时间,拿来复习面试刷题非常合适,其中包括了Java基础、异常、集合、并发编程、JVM、Spring全家桶、MyBatis、Redis、数据库、中间件MQ、Dubbo、Linux、Tomcat、ZooKeeper、Netty等等,且还会持续的更新…可star一下!
283页的Java进阶核心pdf文档
Java部分:Java基础,集合,并发,多线程,JVM,设计模式
数据结构算法:Java算法,数据结构
开源框架部分:Spring,MyBatis,MVC,netty,tomcat
分布式部分:架构设计,Redis缓存,Zookeeper,kafka,RabbitMQ,负载均衡等
微服务部分:SpringBoot,SpringCloud,Dubbo,Docker
还有源码相关的阅读学习
package com.yl.kaka.util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class JDBCUtils {
//定义常量
final static String driver = “com.mysql.jdbc.Driver”;
final static String url = “jdbc:mysql://localhost:3306/db?useUnicode=true&characterEncoding=utf8”;
final static String username = “root”;
final static String password = “root”;
//声明常用对象
protected Connection conn = null;
protected PreparedStatement pstmt = null;
protected ResultSet rs = null;
//静态代码块
static{
try {
Class.forName(driver);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
//获取连接
public void getConnection(){
try {
conn = DriverManager.getConnection(url,username,password);
} catch (SQLException e) {
e.printStackTrace();
}
}
//关闭资源
public void closeAll(){
try {
if(rs != null) rs.close();
if(pstmt != null) rs.close();
if(conn != null) rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
package com.yl.kaka.dao;
import com.yl.kaka.entity.UserInfo;
public interface UserInfoDao {
public UserInfo findUserInfoByUsername(String username);
}
2.5 创建UserInfoDaoImpl.java接口实现类
package com.yl.kaka.dao;
import java.sql.SQLException;
import com.yl.kaka.entity.UserInfo;
import com.yl.kaka.util.JDBCUtils;
public class UserInfoDaoImpl extends JDBCUtils implements UserInfoDao {
@Override
public UserInfo findUserInfoByUsername(String username) {
String sql = “SELECT * FROM LOGIN”;
try {
super.getConnection();
pstmt = conn.prepareStatement(sql);
rs = pstmt.executeQuery();
UserInfo info = new UserInfo();
while(rs.next()){
if (username.equals(rs.getString(“username”))) {
String password = rs.getString(“password”);
info.setPassword(rs.getString(“password”));
info.setUsername(username);
}else{
return null;
}
}
return info;
} catch (SQLException e) {
e.printStackTrace();
}finally{
super.closeAll();
}
return null;
}
}
InforServlet
com.yl.kaka.controller.UserInfoServlet
InforServlet
/userInfo
package com.yl.kaka.controller;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import com.yl.kaka.dao.UserInfoDao;
import com.yl.kaka.dao.UserInfoDaoImpl;
import com.yl.kaka.entity.UserInfo;
import cn.dsna.util.images.ValidateCode;
public class UserInfoServlet extends HttpServlet{
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//获取页面的值
String action = request.getParameter(“action”);
if(action == null){
//获取跳转的页面
request.getRequestDispatcher(“login.jsp”).forward(request, response);
}else if(action.equals(“code”)){//获取验证码
//生成验证码
ValidateCode vc = new ValidateCode(200,30,4,10);
//获取验证码
String codes = vc.getCode();
//写入session
HttpSession session = request.getSession();
//传入session中
session.setAttribute(“vcode”, codes);
//写入流中
vc.write(response.getOutputStream());
}else if(action.equals(“login”)){//展示登录页面
//处理登录请求,获取信息
String username = request.getParameter(“username”)== null?“Admins”:request.getParameter(“username”);
String password = request.getParameter(“password”);
String verifyCode = request.getParameter(“verifyCode”);
//从session中获取事先存储的验证码
HttpSession session = request.getSession();
String sessionCode = (String)session.getAttribute(“vcode”);
//匹配验证码
if(!verifyCode.isEmpty()&&verifyCode.equalsIgnoreCase(sessionCode)){
//验证码正确,继续根据用户名查询用户信息
UserInfoDao uid = new UserInfoDaoImpl();
//调用方法
UserInfo userInfo = uid.findUserInfoByUsername(username);
if (userInfo!=null) {
if(userInfo.getPassword().equalsIgnoreCase(password)){
//登录成功,将用户信息写入session中
session.setAttribute(“userInfo”, username);
//显示登录成功
request.getRequestDispatcher(“success.jsp”).forward(request, response);
}else{//验证码不正确,重新到登录页
response.sendRedirect(“login.jsp”);
}
}else{
response.sendRedirect(“login.jsp”);
}
}else{//验证码不正确,重新到登录页
response.sendRedirect(“login.jsp”);
}
}else{
//验证用户是否登录才可访问的页
HttpSession session = request.getSession();
Object info = session.getAttribute(“userInfo”);
if(info!=null){
request.getRequestDispatcher(“page.jsp”).forward(request, response);
}
else{
response.sendRedirect(“login.jsp”);
}
}
}
}
<%@ page language=“java” contentType=“text/html; charset=UTF-8”
pageEncoding=“UTF-8”%>
USERNAME:
PASSWORD:
verifyCode:
<%@ page language=“java” contentType=“text/html; charset=UTF-8”
pageEncoding=“UTF-8”%>
success...........
name:<%=session.getAttribute(“userInfo”) %>
总结
在清楚了各个大厂的面试重点之后,就能很好的提高你刷题以及面试准备的效率,接下来小编也为大家准备了最新的互联网大厂资料。
success...........
name:<%=session.getAttribute(“userInfo”) %>
总结
在清楚了各个大厂的面试重点之后,就能很好的提高你刷题以及面试准备的效率,接下来小编也为大家准备了最新的互联网大厂资料。
[外链图片转存中…(img-9zlvGjDa-1715647422402)]
[外链图片转存中…(img-hrC6apgA-1715647422403)]
[外链图片转存中…(img-GRred6Fz-1715647422403)]
[外链图片转存中…(img-PYmd8wpD-1715647422404)]