失踪人口回归之Java开发工程师面试记录第二篇
最近又面了几家,继续分享一下咯,希望可以对大家有点儿帮助,也希望我可以早日找到心仪的好工作~
一、思考时间
- Linux如何查看Cpu占有率?
- Seata二阶段提交指的是什么?
- JDK版本有哪些区别?
- 线程有哪些创建方式?runnable和callable有什么区别?
- 线程池的创建方式是什么?
- Docker常见命令有哪些?
- Socket是如何使用的?
- ConcurentHashmap的底层原理是什么?
- 信号量了解吗?知道怎么用的吗?
- Springcloud里的网关怎么用的?
- AQS是什么?具体用来干嘛的?
- 双亲委派机制是什么?
- CAS是什么?
- 如何保障MQ重复消费?
- Feign如何解决超时?
- Java内存溢出分为几种?
- 回答一下reddison看门狗的原理?
- 项目如何进行微服务拆分?
- 除了ping命令linux还有什么命令可以查看接口是否访问成功?
- vue3中,通过什么函数可以创建响应式数据?
- 要对数据库进行两个更新操作,如何确保这两个操作要么全部完成,要么全部失败?
- vue中v-bind、v-model、v-on指令的区别是什么?
- Jenkins如何进行服务器部署的?
- 有两个表,users(id,name,sex,birthday,deptId,status),dept(id,name),请编写一个SQL查询语句,查询“销售部”所有12月份出生的员工。
二、正确回答(AI回答)
- Linux如何查看Cpu占有率?
- Seata二阶段提交指的是什么?
- JDK版本有哪些区别?
- 线程有哪些创建方式?runnable和callable有什么区别?
- 线程池的创建方式是什么?
- Docker常见命令有哪些?
- Socket是如何使用的?
- ConcurentHashmap的底层原理是什么?
- 信号量了解吗?知道怎么用的吗?
import java.util.concurrent.Semaphore; public class SemaphoreExample { public static void main(String[] args) { // 创建一个信号量,初始许可证数量为 3 Semaphore semaphore = new Semaphore(3); // 模拟 5 个线程尝试获取资源 for (int i = 0; i < 5; i++) { new Thread(() -> { try { System.out.println(Thread.currentThread().getName() + " 尝试获取许可证..."); // 获取许可证 semaphore.acquire(); System.out.println(Thread.currentThread().getName() + " 成功获取许可证,正在执行任务..."); Thread.sleep(2000); // 模拟任务处理 } catch (InterruptedException e) { e.printStackTrace(); } finally { // 释放许可证 semaphore.release(); System.out.println(Thread.currentThread().getName() + " 释放许可证..."); } }, "Thread-" + i).start(); } } }
- Springcloud里的网关怎么用的?
- AQS是什么?具体用来干嘛的?
import java.util.concurrent.locks.AbstractQueuedSynchronizer; class MyMutex { private static class Sync extends AbstractQueuedSynchronizer { // 尝试获取锁 protected boolean tryAcquire(int acquires) { if (compareAndSetState(0, 1)) { setExclusiveOwnerThread(Thread.currentThread()); return true; } return false; } // 尝试释放锁 protected boolean tryRelease(int releases) { if (getState() == 0) throw new IllegalMonitorStateException(); setExclusiveOwnerThread(null); setState(0); return true; } // 是否处于独占模式 protected boolean isHeldExclusively() { return getState() == 1; } } private final Sync sync = new Sync(); public void lock() { sync.acquire(1); } public void unlock() { sync.release(1); } }
- 双亲委派机制是什么?
- CAS是什么?
- 如何保障MQ重复消费?
- Feign如何解决超时?
- Java内存溢出分为几种?
- 回答一下reddison看门狗的原理?
- 项目如何进行微服务拆分?
- 除了ping命令linux还有什么命令可以查看接口是否访问成功?
- vue3中,通过什么函数可以创建响应式数据?
- 要对数据库进行两个更新操作,如何确保这两个操作要么全部完成,要么全部失败?
Connection conn = null; try { // 获取数据库连接 conn = dataSource.getConnection(); // 关闭自动提交模式(开启事务) conn.setAutoCommit(false); // 执行第一个更新操作 PreparedStatement stmt1 = conn.prepareStatement("UPDATE table1 SET column1 = ? WHERE condition1"); stmt1.setString(1, "value1"); stmt1.executeUpdate(); // 执行第二个更新操作 PreparedStatement stmt2 = conn.prepareStatement("UPDATE table2 SET column2 = ? WHERE condition2"); stmt2.setString(1, "value2"); stmt2.executeUpdate(); // 提交事务 conn.commit(); } catch (SQLException e) { // 发生异常时回滚事务 if (conn != null) { try { conn.rollback(); } catch (SQLException rollbackEx) { rollbackEx.printStackTrace(); } } e.printStackTrace(); } finally { // 恢复自动提交模式并关闭连接 if (conn != null) { try { conn.setAutoCommit(true); conn.close(); } catch (SQLException closeEx) { closeEx.printStackTrace(); } } }
import org.springframework.transaction.annotation.Transactional; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service public class MyService { @Autowired private MyRepository myRepository; @Transactional public void updateData() { // 执行第一个更新操作 myRepository.updateTable1("value1"); // 执行第二个更新操作 myRepository.updateTable2("value2"); // 如果方法正常结束,事务会自动提交 // 如果抛出异常,事务会自动回滚 } }
Session session = sessionFactory.openSession(); Transaction tx = null; try { tx = session.beginTransaction(); // 执行第一个更新操作 session.createQuery("UPDATE Table1 SET column1 = :value1 WHERE condition1") .setParameter("value1", "value1") .executeUpdate(); // 执行第二个更新操作 session.createQuery("UPDATE Table2 SET column2 = :value2 WHERE condition2") .setParameter("value2", "value2") .executeUpdate(); // 提交事务 tx.commit(); } catch (Exception e) { if (tx != null) { tx.rollback(); // 回滚事务 } e.printStackTrace(); } finally { session.close(); }
- vue中v-bind、v-model、v-on指令的区别是什么?
<template> <div> <img v-bind:src="imageSrc" alt="example"> <a :href="url">Link</a> </div> </template> <script> export default { data() { return { imageSrc: 'https://example.com/image.jpg', url: 'https://example.com' }; } }; </script>
<template> <div> <input v-model="message" placeholder="Enter something"> <p>{{ message }}</p> </div> </template> <script> export default { data() { return { message: '' }; } }; </script>
<template> <div> <button @click="increment">Count: {{ count }}</button> </div> </template> <script> export default { data() { return { count: 0 }; }, methods: { increment() { this.count++; } } }; </script>
- Jenkins如何进行服务器部署的?
pipeline { agent any stages { stage('Checkout') { steps { git branch: 'main', url: 'https://github.com/your-repo.git' } } stage('Build') { steps { sh 'mvn clean package' } } stage('Deploy') { steps { sshPublisher( publishers: [ sshPublisherDesc( configName: 'my-server', transfers: [ sshTransfer( sourceFiles: 'target/*.jar', remoteDirectory: '/path/to/deploy/' ) ], usePromotionTimestamp: false, verbose: true ) ] ) sh 'ssh user@server "systemctl restart myapp"' } } } }
24.有两个表,users(id,name,sex,birthday,deptId,status),dept(id,name),请编写一个SQL查询语句,查询“销售部”所有12月份出生的员工。
SELECT
users.id,
users.name,
users.sex,
users.birthday,
dept.name AS department_name
FROM
users
JOIN
dept
ON
users.deptId = dept.id
WHERE
dept.name = '销售部'
AND MONTH(users.birthday) = 12;
好啦~今日分享就到这儿啦,希望看到的小伙伴们都能找到一份高薪不加班的好工作~~