当前位置: 首页 > article >正文

失踪人口回归之Java开发工程师面试记录第二篇

最近又面了几家,继续分享一下咯,希望可以对大家有点儿帮助,也希望我可以早日找到心仪的好工作~

一、思考时间

  1. Linux如何查看Cpu占有率?
  2. Seata二阶段提交指的是什么?
  3. JDK版本有哪些区别?
  4. 线程有哪些创建方式?runnable和callable有什么区别?
  5. 线程池的创建方式是什么?
  6. Docker常见命令有哪些?
  7. Socket是如何使用的?
  8. ConcurentHashmap的底层原理是什么?
  9. 信号量了解吗?知道怎么用的吗?
  10. Springcloud里的网关怎么用的?
  11. AQS是什么?具体用来干嘛的?
  12. 双亲委派机制是什么?
  13. CAS是什么?
  14. 如何保障MQ重复消费?
  15. Feign如何解决超时?
  16. Java内存溢出分为几种?
  17. 回答一下reddison看门狗的原理?
  18. 项目如何进行微服务拆分?
  19. 除了ping命令linux还有什么命令可以查看接口是否访问成功?
  20. vue3中,通过什么函数可以创建响应式数据?
  21. 要对数据库进行两个更新操作,如何确保这两个操作要么全部完成,要么全部失败?
  22. vue中v-bind、v-model、v-on指令的区别是什么?
  23. Jenkins如何进行服务器部署的?
  24. 有两个表,users(id,name,sex,birthday,deptId,status),dept(id,name),请编写一个SQL查询语句,查询“销售部”所有12月份出生的员工。

二、正确回答(AI回答)

  1. Linux如何查看Cpu占有率?

  2. Seata二阶段提交指的是什么?

  3. JDK版本有哪些区别?

  4. 线程有哪些创建方式?runnable和callable有什么区别?

  5. 线程池的创建方式是什么?

  6. Docker常见命令有哪些?

  7. Socket是如何使用的?

  8. ConcurentHashmap的底层原理是什么?

  9. 信号量了解吗?知道怎么用的吗?
    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();
            }
        }
    }


  10. Springcloud里的网关怎么用的?

  11. 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);
        }
    }


  12. 双亲委派机制是什么?

  13. CAS是什么?

  14. 如何保障MQ重复消费?

  15. Feign如何解决超时?

  16. Java内存溢出分为几种?

  17. 回答一下reddison看门狗的原理?

  18. 项目如何进行微服务拆分?

  19. 除了ping命令linux还有什么命令可以查看接口是否访问成功?

  20. vue3中,通过什么函数可以创建响应式数据?

  21. 要对数据库进行两个更新操作,如何确保这两个操作要么全部完成,要么全部失败?
    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();
    }


  22. 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>


  23. 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;


好啦~今日分享就到这儿啦,希望看到的小伙伴们都能找到一份高薪不加班的好工作~~


http://www.kler.cn/a/610301.html

相关文章:

  • AI小白的第七天:必要的数学知识(概率)
  • 前端面试:如何去衡量用户操作过程中否卡顿?
  • LLM实践(二)——基于llama-factory的模型微调
  • 蓝桥杯高频考点——二分(含C++源码)
  • Go 1.24 新特性解析:泛型类型别名、弱指针与终结器改进
  • 论文阅读笔记——Diffuser,Diffusion Policy
  • java使用小知识合集(持续更新中)
  • 栈-常见考察面试算法题
  • 生活电子常识——cmd不能使用anaconda的python环境,导致输入python打开应用商店
  • Driver具体负责什么工作
  • 大疆上云api直播功能如何实现
  • odata 搜索帮助
  • LangChain开发(六)多模态输入与自定义输出
  • leetcode238.除自身意外数组的乘积
  • 解决GLIBC不兼容问题
  • 查看linux系统文件描述符限制
  • abp vnext框架重写volo.abp.openiddict的tokenController登录验证
  • 【MySQL】用户账户、角色、口令、PAM
  • 一文速通Python并行计算:03 Python多线程编程-多线程同步(上)—基于互斥锁、递归锁和信号量
  • vue 封装 Axios菜鸟教程