三一重工8.14面试

1.问你一个小的问题,如何用程序实现一秒执行一次方法呢?
一开始没有回答出来,直接说了for循环,面试官说,那我要是执行到明年呢?还是用for循环吗?
public class MultiThread {
    public static void main(String[] args) throws InterruptedException {
        while(true){
            A();
            Thread.sleep(1000);
        }
    }
    public static void A(){
        System.out.println("这是方法A");
    }
}
2. synchronized与Lock的区别
只回答出来了Lock是一个接口,而Synchronized是Java的关键字,其他都没有回答上来,看来八股还是没有看完。
  1. Lock是一个接口,而Synchronized是java的一个关键字。
  2. Synchronized在发生异常时会自动释放占有的锁,因此不会出现死锁;而lock发生异常时,不会主动释放占有的锁,必须手动来释放锁,可能引起死锁的发生。
  3. Synchronized可以给类、对象、代码块加锁,而Lock只能给代码加锁。
  4. 通过Lock可以知道有没有成功获取锁,而Synchronized却无法办到。
3.Synchaonized如何实现加锁?给对象加锁,给该类加锁,或者是.class文件加锁,举例
给普通方法加锁——等价与给该对象加锁
// 普通方法加Synchronized
class Test{
    public synchronized void test(){
        //代码块
    }
}
给该对象加锁:
class Test{
    public void test(){
        synchronized (this){
            
        }
    }
给静态方法加锁——相当于给该类加锁——也相当于给该类的class文件加锁
class Test{
    public static synchronized void test(){
        //代码块
    }
}
给该类的class文件加锁
class Test{
    public  void test(){
        synchronized(Test.class){
            
        }
        //代码块
    }
}
4.多线程下,访问,出现数据不一致如何解决?
一开始回答的是加互斥锁,后来说了使用了volatile关键字,保证可见性
5.你知道泛型,那已知一个泛型,那如何返回一个该泛型的列表呢?
(面试看了简历,我写了泛型,结果G)
自定义泛型方法
import java.util.ArrayList;
import java.util.List;
// 自定义泛型
public class generic_paradigm {
    public static void main(String[] args) {
        Car car = new Car();
        List<Double> list = car.B(0.2);
        System.out.println(list);
    }
}
class Car{
    // 普通方法
    public <T> List<T> B(T t){
        List<T> list = new ArrayList<>();
        for(int i = 0;i < 10;i++){
            list.add(t);
        }
        return list;
    }
}
自定义泛型类:
//调用:
public class generic_paradigm {
    public static void main(String[] args) {
        Tiger tiger = new Tiger("小王",1,2.0,"haha");
        System.out.println(tiger);
    }
}
class Tiger<T,R,M>{     String name;     T t;     R r;     M m;     // 构造器使用泛型     public Tiger(String str,T t,R r,M m){         this.name = str;         this.m = m;         this.r =r;         this.t = t;     }     @Override     public String toString() {         return "Tiger{" +                 "name='" + name + '\'' +                 ", t=" + t +                 ", r=" + r +                 ", m=" + m +                 '}';     } }




#三一重工#
全部评论
怎么感觉我今天面的问的全是一些无关紧要的问题呢,然后你知道大概什么时间可以有反馈吗
点赞 回复 分享
发布于 2022-08-14 20:17
请问是哪个事业部啊 重装前置吗
点赞 回复 分享
发布于 2022-08-16 10:13

相关推荐

01-02 21:17
已编辑
西安理工大学 后端
程序员小白条:项目不太重要,你的优势的算法竞赛,然后多背相关的八股文,项目可以不作为重点考虑,面试可能就简单带过项目就行了,你可以直接写简历,背项目相关的八股文就行,也不用自己做,时间紧张的情况下,性价比最高
点赞 评论 收藏
分享
评论
3
29
分享

创作者周榜

更多
牛客网
牛客企业服务