深圳开思时代科技有限公司社招Java工程师(一面)

招聘简章要求:
1.精通spring、Mybatis,熟悉springboot、微服务概念
2.java基础较好

HR互侃、相互介绍的-------------略
  1. 谈谈你对多线程锁的理解,以及JDK有怎样的措施来应对多线程并发的问题的?-------锁就是在多线程访问并对共享资源进行写的时候而进行的一种管控。synchronized关键字就是一个例子,通过修饰静态方法、实例方法,或者代码块的方式保证锁管控的代码具有原子性和单线程操作性(写操作)……。JDK后来升级为加入了Lock接口来实现和synchronized类似功能,使用时需要手动获取锁和释放锁,可中断获取锁,超时获取锁……
  2. 那谈谈Lock接口的API以及其实现类相关的了解?---------属于对上个问题的延续。API也就是上一个问题的手动获取/释放锁,中断锁……。实现类:ReentrantLock可重入锁,ReadLock读锁,WriteLock写锁。一般的使用方式就是多态的概念,以接口类型作为引用指向对应的不同实现类,创建不同的锁实例对象。对于可重入锁ReentrantLock,多个线程获取其lock()进行业务代码的操作,必须按照争夺锁的先后依次执行,一个线程执行完毕后,另一个线程才能获取锁执行,术语称其为独占锁……
  3. ReentrantLock的理解?----------重入锁就是该类创建的实例对象能够多次调用lock方法和unlock方法进行当前线程持有锁的次数增加/减少,通过对象的getHoldCount可以进行获取锁的次数。内部构造方法是一个NonfairSync的实例对象,翻译过来就是非公平锁,多个线程获取一个锁时,可能多次被同一个线程获取。……
  4. 那么公平锁是怎样的底层实现?--------属于对上个问题的延续。Sync的一个两个子类NonfairSync和FairSync……我也不太熟悉底层源码。
  5. 那么ReentrantLock中的lock和unlock之间的同步如何进行线程间的通信?---------实际就是使用synchronized关键字同步中用到的wait和notify,notifyAll方法的类似功能。ReentrantLock采用的是Condition接口中的await等待,signal方法进行唤醒。Condition这个接口的类型是通过ReentrantLock的实例newCondition()进行创建的类型……
  6. 对于其通信方式有哪些应用?举个简单的案例出来?-------是对上个问题的延续。可以通过伪代码的形式进行阐述,比如一个缓冲区有固定的大小,当缓冲区已满则put线程就只能阻塞,直到缓冲区有空间;当缓冲区已空take线程只能阻塞,直到缓冲区有数据。 new一个ReentrantLock的实例,并通过其newCondition()创建两个Condition对象;创建一个固定大小的数组对象模拟缓冲区……
  7. JUC包下的计数锁?CountDownLatch?--------采用直接new的方式创建CountDownLatch类型的对象,构造方法中直接传入参数int,作为计数值。……方法就是设定某些任务执行完毕后,本任务才去执行的场景……
  8. Semaphore类的了解?-----也属于JUC包下的一个类,翻译过来就是信号量,用来控制同时访问线程的个数。
  9. Spring的了解?------Spring是一个提供IOC和AOP的容器框架。所谓IOC就是通过框架创造对象,所谓AOP就是在不改变原来业务代码的情况下,通过增加功能类即可以实现对原来代码的方法功能升级,也就是编程的开闭原则思想。
  10. Spring的AOP理解?------直译过来就是面向切面编程,防止在纵向的业务逻辑执行中重复代码,而且不利于代码的扩展升级。比如一些:安全、日志、权限等集中式管理……主要以静态***和动态***的模式来实现……
  11. 什么静态***和动态***它们的优缺点?-------静态***类对真实业务类的功能进行扩充,即创建一个***类实现和真实类方法相同的功能,让***类持有真实对象,然后通过调用***类的方法达到对真实业务逻辑的升级。缺点就是:如果真实对象中有多个业务逻辑方法(或者有多个真实对象实例),那***对象同样需要调用多个逻辑方法和对象,造成***类的膨胀。动态***是通过在运行时,动态生成一个持有RealObject、并实现***接口的Proxy,同时注入相同的逻辑。……
  12. 动态***的方式有哪些?-----------JDK动态***和CGLIB动态***……有点忘了这两种方式了,找时间再查资料吧……。
  13. SpringIOC的理解?--------将原先有手动创建对象的方式交给容器管理,通过构造器注入、setter方法注入,注解注入……
  14. 谈项目?--------围绕微服务展开的,数据库的部署……

总结:Java基础围绕多线程并发,以及相关的spring框架,项目开发的经历……
#社招##Java工程师##面经#
全部评论
感谢分享面经!欢迎参加过社招的牛友发社招面经拿京东卡!~ -------------------- 活动:社招面经征集|参加过社招的牛友,来发面经吧,拿京东卡
1 回复 分享
发布于 2019-12-02 12:23
一直看大佬在面  從未停止   
点赞 回复 分享
发布于 2019-11-30 23:33

相关推荐

不愿透露姓名的神秘牛友
09-30 19:49
起名星人:蛮离谱的,直接要求转投销售
投递汇川技术等公司10个岗位
点赞 评论 收藏
分享
7 37 评论
分享
牛客网
牛客企业服务