最后
码字不易,觉得有帮助的可以帮忙点个赞,让更多有需要的人看到
又是一年求职季,在这里,我为各位准备了一套Java程序员精选高频面试笔试真题,来帮助大家攻下BAT的offer,题目范围从初级的Java基础到高级的分布式架构等等一系列的面试题和答案,用于给大家作为参考
以下是部分内容截图
public int commonUpdate(String sql, Object[] objects) {
// 获取连接对象
Connection connection = getConnection();
// 构建执行者
PreparedStatement preparedStatement = null;
try {
preparedStatement = connection.prepareStatement(sql);
} catch (SQLException throwables) {
throwables.printStackTrace();
}
// 填入数据
for (int i = 0; i < objects.length; i++) {
try {
preparedStatement.setObject(i + 1, objects[i]);
// preparedStatement.setNull(位置, Types.INTEGER);
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
// 执行语句
int i = 0;
try {
i = preparedStatement.executeUpdate();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
// 返回受景响的行数
return i;
}
// 通用查询
public ResultSet commonSelect(String sql, Object[] objects) {
// 定义一个返回值
ResultSet resultSet = null;
// 获取连接对象
Connection connection = getConnection();
// 获得安全执行者
PreparedStatement preparedStatement = null;
try {
preparedStatement = connection.prepareStatement(sql);
} catch (SQLException throwables) {
throwables.printStackTrace();
}
for (int i = 0; i < objects.length; i++) {
try {
assert preparedStatement != null;
preparedStatement.setObject(i + 1, objects[i]);
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
// 安全执行者执行
try {
assert preparedStatement != null;
resultSet = preparedStatement.executeQuery();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
// 处理结果集
return resultSet;
}
}
MyBatisUtils
/**
- MyBatis工具类
*/
public class MyBatisUtils {
//创建SqlSession
private static SqlSession sqlSession;
//初始化创建SqlSession
static {
//工厂构建者
SqlSessionFactoryBuilder ssfb = new SqlSessionFactoryBuilder();
//MyBatis配置文件名称
String configName = “sqlMapConfig.xml”;
//定义输入流
InputStream is = null;
try {
//读取配置文件
is = Resources.getResourceAsStream(configName);
} catch (IOException e) {
e.printStackTrace();
}
//通过配置文件构建出工厂类
SqlSessionFactory ssf = ssfb.build(is);
//通过工厂类获取sqlSession
sqlSession = ssf.openSession(true);
}
//获取sqlSession
public static SqlSession getSqlsession(){
return sqlSession;
}
//归还sqlSession
public static void closeSqlsession(SqlSession sqlSession){
if (sqlSession!=null){
sqlSession.close();
}
}
}
MyBatisUtils
public class GeneratorSqlmap {
public void generator() throws Exception{
List warnings = new ArrayList();
boolean overwrite = true;
//指定 逆向工程配置文件
File configFile = new File(“generatorConfig.xml”);
ConfigurationParser cp = new ConfigurationParser(warnings);
Configuration config = cp.parseConfiguration(configFile);
DefaultShellCallback callback = new DefaultShellCallback(overwrite);
MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config,
callback, warnings);
myBatisGenerator.generate(null);
}
public static void main(String[] args) throws Exception {
try {
GeneratorSqlmap generatorSqlmap = new GeneratorSqlmap();
generatorSqlmap.generator();
} catch (Exception e) {
e.printStackTrace();
}
}
}
配置文件generatorConfig.xml
<?xml version="1.0" encoding="UTF-8"?><jdbcConnection driverClass=“com.mysql.cj.jdbc.Driver”
connectionURL=“jdbc:mysql://localhost:3306/demo1?useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true”
userId=“root”
password=“root”>
<javaModelGenerator targetPackage=“com.demo.pojo”
targetProject=“.\src”>
<sqlMapGenerator targetPackage=“com.demo.mapper”
targetProject=“.\src”>
<javaClientGenerator type=“XMLMAPPER”
targetPackage=“com.demo.mapper”
targetProject=“.\src”>
public class DateUtil {
/**
- util.Date转字符串
*/
public static String getDateStr(Date date) {
// 实例化一个格式化对象
SimpleDateFormat sdf = new SimpleDateFormat(“yyyy-MM-dd”);
// 把日期对象格式化
// 返回这个字符串
return sdf.format(date);
}
/**
- 字符串转成util.Date对象
*/
public static Date getDate(String dateStr) {
// 实例化一个格式化对象
SimpleDateFormat sdf = new SimpleDateFormat(“yyyy-MM-dd”);
// 日期格式解析
Date date = null;
try {
date = sdf.parse(dateStr);
} catch (ParseException e) {
e.printStackTrace();
}
// 返回日期
return date;
}
}
public class MD5Util {
/**
-
1.MD5(message-digest algorithm 5)信息摘要算法,
-
它的长度一般是32位的16进制数字符串(如81dc9bdb52d04dc20036dbd8313ed055)
-
2.由于系统密码明文存储容易被黑客盗取
-
3.应用:注册时,将密码进行md5加密,存到数据库中,防止可以看到数据库数据的人恶意篡改。
-
登录时,将密码进行md5加密,与存储在数据库中加密过的密码进行比对
-
4.md5不可逆,即没有对应的算法,从产生的md5值逆向得到原始数据。
-
但是可以使用暴力破解,这里的破解并非把摘要还原成原始数据,如暴力枚举法。
*/
public final static String getMD5(String str){
try {
MessageDigest md = MessageDigest.getInstance(“SHA”);//创建具有指定算法名称的摘要
md.update(str.getBytes()); //使用指定的字节数组更新摘要
byte mdBytes[] = md.digest(); //进行哈希计算并返回一个字节数组
String hash = “”;
for(int i= 0;i<mdBytes.length;i++){ //循环字节数组
int temp;
if(mdBytes[i]<0) //如果有小于0的字节,则转换为正数
temp =256+mdBytes[i];
else
temp=mdBytes[i];
if(temp<16)
hash+= “0”;
hash+=Integer.toString(temp,16); //将字节转换为16进制后,转换为字符串
}
return hash;
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
return null;
}
}
public class UUIDUtils {
/** 16位的UUID */
public static String getUUID() {
return UUID.randomUUID().toString().replace(“-”,“”).substring(0,15);
}
/** 32位的UUID */
public static String getUUID32() {
return UUID.randomUUID().toString().replace(“-”,“”).substring(0,31);
}
}
src/main/java
最后
看完美团、字节、腾讯这三家的面试问题,是不是感觉问的特别多,可能咱们又得开启面试造火箭、工作拧螺丝的模式去准备下一次的面试了。
开篇有提及我可是足足背下了1000道题目,多少还是有点用的呢,我看了下,上面这些问题大部分都能从我背的题里找到的,所以今天给大家分享一下互联网工程师必备的面试1000题。
注意不论是我说的互联网面试1000题,还是后面提及的算法与数据结构、设计模式以及更多的Java学习笔记等,皆可分享给各位朋友
互联网工程师必备的面试1000题
而且从上面三家来看,算法与数据结构是必备不可少的呀,因此我建议大家可以去刷刷这本左程云大佬著作的《程序员代码面试指南 IT名企算法与数据结构题目最优解》,里面近200道真实出现过的经典代码面试题。
最后
看完美团、字节、腾讯这三家的面试问题,是不是感觉问的特别多,可能咱们又得开启面试造火箭、工作拧螺丝的模式去准备下一次的面试了。
开篇有提及我可是足足背下了1000道题目,多少还是有点用的呢,我看了下,上面这些问题大部分都能从我背的题里找到的,所以今天给大家分享一下互联网工程师必备的面试1000题。
注意不论是我说的互联网面试1000题,还是后面提及的算法与数据结构、设计模式以及更多的Java学习笔记等,皆可分享给各位朋友
[外链图片转存中…(img-2l44b6z4-1715312763016)]
互联网工程师必备的面试1000题
而且从上面三家来看,算法与数据结构是必备不可少的呀,因此我建议大家可以去刷刷这本左程云大佬著作的《程序员代码面试指南 IT名企算法与数据结构题目最优解》,里面近200道真实出现过的经典代码面试题。
[外链图片转存中…(img-xKVJaPQU-1715312763016)]