程序员面试干货来啦,今天小编就先为大家整理出4道大厂面试时常见关于Java 的面试题。看看你能答对几道题呢!多多掌握此类面试题,就会增加面试通过的机率哦,后续还有其他类的面试题,请持续关注哟!
1. 同步和异步有何异同,在什么情况下分别使⽤它们? 答: 1. 如果数据将在线程间共享。例如正在写的数据以后可能被另⼀个线程读到,或者正在读的数据可能已经被另⼀个线程写过了,那么这些数据就是共享数 据,必须进⾏同步存取。 2. 当应⽤程序在对象上调⽤了⼀个需要花费很⻓时间来执⾏的⽅法,并且不希望让程序等待⽅法的返回时,就应该使⽤异步编程,在很多情况下采⽤异步途径往 往更有效率。 3. 举个例⼦ : 打电话是同步 发消息是异步 2.Java 线程中, sleep() 和 wait() 区别 答: sleep 是线程类 (Thread) 的⽅法;作⽤是导致此线程暂停执⾏指定时间,给执⾏机会给其他线程,但是监控状态依然保持,到时后会⾃动恢复;调⽤ sleep() 不会释放对象锁。 wait 是 Object 类的⽅法;对此对象调⽤ wait ⽅法导致本线程放弃对象锁,进⼊等 待此对象的等待锁定池。只有针对此对象发出 notify ⽅法 ( 或 notifyAll) 后本线 程才进⼊对象锁定池,准备获得对象锁进⾏运⾏状态。 3. 下⾯所述步骤中,是创建进程做必须的步骤是() A. 由调度程序为进程分配 CPU B. 建⽴⼀个进程控制块 C. 为进程分配内存 D. 为进程分配⽂件描述符 答案: BC 4. ⽆锁化编程有哪些常⻅⽅法?() A. 针对计数器,可以使⽤原⼦加 B. 只有⼀个⽣产者和⼀个消费者,那么就可以做到免锁访问环形缓冲区( Ring Buffer ) C. RCU ( Read-Copy-Update ),新旧副本切换机制,对于旧副本可以采⽤延迟释放的做法 D. CAS ( Compare-and-Swap ),如⽆锁栈,⽆锁队列等待 答案: D 分析: A 这⽅法虽然不太好,但是常⻅ B ProducerConsumerQueue 就是这个,到处都是 C linux kernel ⾥⾯⼤量使⽤ D 本质上其实就是乐观锁,操作起来很困难。。单⽣产者多消费者或者多⽣产者单消费者的情况下⽐较常⻅,也 不容易遇到 ABA 问题。 希望这些面试题对你有所帮助!下一期我们会有关于其他大厂面试题。别忘了关注我们的公众号哦,预防走丢! 最后愿你前程似锦,在冬深 在初春 在夏至在秋末 在码上未来! 码上未来,成就你更好的未来!