马老师说过,员工的离职途理很众,只有两点最真实:

  • 钱,没给到位

   • 心,受冤枉了

  当然,我是想换个平台,换个偏向,想了解为什么要跳槽,如果真的要跳槽,想要拿到一个理想的offer,除了好运,根蒂功也要足够的扎实,希望下面的口试履历能给你们可以提供一些帮帮。

  项目履历

   口试官正正在一开始会让你进行自我先容,浸要是想让你先容一下自己做过的一些项目,看看你对这些项目的了解程度,由于很众人简历上写的项目并非都是自始至终都参与的,有些只是参与并实现了其中的一些模块而已,或是接手帮理别人的项目,以是正正在你简历上所写的和口试历程中所说的项目履历,你自己必须可以了解来龙去脉,由于口试官肯定会依据你的项目描绘,对项目中的实现途理,或为什么要这样实现进行提问,这时不至于木讷住而不知怎样作答,云云事务署面只会大大降低口试分。

  场景对话:

   口试官:(拿着简历)讲讲你最近做的这个项目

  我:&……%¥#*&¥@%¥!,说了一大通(不知途口试官听进去众少,口试官会挑他会的进行提问)

   口试官:你说这个项目顶用到了netty,能大概讲讲netty的线程模型么?

   我:(幸好我看过netty的源码)netty通过Reactor模型基于众路复用器接收并治理用户请求(能讲就众讲一点),内部实现了两个线程池,boss线程池和work线程池,其中boss线程池的线程负责治理请求的accept事件,当接收到accept事件的请求时,把对应的socket封装到一个NioSocketChannel中,并交给work线程池,其中work线程池负责请求的read和write事件(通过口述加画图的格事务署,把请求的执行历程大概描绘了一遍,时间有限,也不可能把所有的细节都说完,挑浸心讲,挑记忆雅致的讲)

   口试官:嗯,理解的还挺深化的...那你正正在做这个项目时有没有遇到什么贫窭,或者是以为有寻衅的地方?

   我:(这时口试官想让你自己出题自己回答了,以是一定要回答,不回答就突显不出你这个项目了,要是这个问题没有准备过,只可临时发挥了,当然我就是属于临时发挥的)稍微想一下,由于之前确实碰到了这个问题,当时做这个项目时,对netty的不过熟习,把请求的商业逻辑放正正在work线程池的线程中进行治理,进行压测的时候,发现qps总是上不去,后来看了源码之后才发现,由于商业逻辑的治理比拟耗时,绝对占用了work线程池的资源,导致新的请求一直处于等待状态。

   口试官:那着末是怎样解决的?

  我:着末把治理商业的逻辑封装成一个task提交给一个新建的商业线程池中执行,执行完之后由work线程池执行请求的write事件。

  口试官:好的,你知途nio中selector可能触发bug么?

   我:嗯,对的,selector的select方法,由于底层的epoll函数可能会发生空转,从而导致cpu100%。

  口试官:那怎样解决该问题?

  我:这个问题正正在netty曾经解决了,通过&^%&$^(把netty的解决方案说一遍)

   口试官:嗯,对了,你们这个项目有给自己定目标么?

  我:有的,&&…………¥¥##@,把自己项目的目标说了一通,怎样进行AB执行,怎样迭代优化目标

  口试官:嗯,好的 ,项目的问题先到这里,银河文娱有哪些网站_云顶文娱场7610_bet9九州 网站来视察一下java的根蒂点吧。

  如上只是自己所做的一个项目,当然了,举座项目举座分解,也不是每个口试官问的点都往往,如果口试官不懂netty,自然会挑别的问题进行提问,不过你也可以执行着把问题往自己熟习的偏向去靠。

  口试知识点

  1、线程池

  线程池的实现途理,这个知识点真的很浸要,几乎每次口试都会被问到,一般的提问格事务署有如下几种:

  1、“讲讲线程池的实现途理”

   2、“线程池中的coreNum和maxNum有什么折柳”

  3、“正正在折柳的商业场景中,线程池参数怎样设置”

  场景对话:

  口试官:泛泛线程池用的众么?

   我:嗯,我的*项目中就用到了

   口试官:那好,你讲讲线程池的实现途理

  我:(还好我之前看过源码,但是时间久远有点模糊了),能给我笔和纸么,我画图分解给你看看,&&¥&假设初始化一个线程池,核心线程数是5,最大线程数是10@@@

  口试官:嗯,好的,你继续...

   我:正正在纸上画了正方形,这个代表一个线程池,初始化的时候,里面是没有线程的

  口试官:嗯,好的,你继续...

  我:又画了一个细长的长方形,这个代表抨击队列,一开始里面也是没有任务的

  口试官:嗯,好的,你继续...

   我:当来了一个任务时,正正在正方形中画了一个小圆圈,代表初始化了一个线程,如果再来一个任务,就再画一个圆圈,表示再初始化了一个线程,连结画了5个圆圈之后,如果第6个任务过来了...

  口试官:嗯,好的,你继续...

  我:这时会把第6个任务放到抨击队列中..

  口试官:嗯,然后呢?

  我:现正正在线程池中不是有5个线程了么,如果其中一个线程空闲了,就会从抨击队列中获取第6个任务,进行执行..

  口试官:嗯,对的,那如果任务发生的速度比消费的速度快呢?

   我:如果线程池的5个线程都正正在running状态,那么任务就先保存正正在抨击队列中

  口试官:如果队列满了,怎样办?

  我:如果队列满了,银河文娱有哪些网站_云顶文娱场7610_bet9九州 网站不是设置了最大线程数是10么,而线程池中只有5个线程,这时会新建一个线程去执行不行保存到抨击队列的任务,然后我又正正在正方形中画了5个圆圈。

  口试官:那如果线程池中的线程数达到10个了,抨击队列也满了,怎样办?

   我:这种情况通过自定义reject函数去治理这里任务了,舒了一口去,以为问完了...

  口试官:好的,那如果运行一段时间之后,抨击队列中的任务也执行完了,线程池中的线程会怎样样?

  我:...这个好像越过核心线程数的线程会正正在空闲一段时间内自动给与...由于有点不记得这个逻辑了,回答的有点虚...

  口试官:好的,那这种情况正正在什么场景下会发生?

  我:(有时候真是笨啊,很众东西都知途,但是正正在口试的时候一紧张,全遗忘)这个...那个...我好像没有遇到过这样的情况

  口试官:嗯,好的,你回去之后再好好想想

  我:........

   我居然遗忘了秒杀这个场景

  2、锁的实现

   正正在关于锁的口试历程中,一般浸要问Synchronized和ReentrantLock的实现途理,更有甚者会问读写锁。

  场景对话:

  口试官:都了解Java中的什么锁?

  我:比如Synchronized和ReentrantLock...读写锁用的不众,就没研究了(我就怕被问读写锁,由于一直没去看)

  口试官:那好,你先说说Synchronized的实现途理吧

  我:嗯,Synchronized是JVM实现的一种锁,其中锁的获取和开释分别是monitorenter和monitorexit指令,该锁正正在实现上分为了偏向锁、轻量级锁和浸量级锁,其中偏向锁正正在1.6是默认开启的,轻量级锁正正在众线程竞争的情况下会膨胀成浸量级锁,相干锁的数据都保存正正在对象头中...&&@@#,(嗯,说了一大堆,口试官也没打断我)

   口试官:哦,嗯,理解的还挺透彻,那你说说ReentrantLock的实现吧...

  我:ReentrantLock是基于AQS实现的

   口试官:什么是AQS?

   我:正正在AQS内部会保存一个状态变量state,通过CAS修改该变量的值,修改成功的线程表示获取到该锁,没有修改成功,或者发近况态state曾经是加锁状态,则通过一个Waiter对象封装线程,添加到等待队列中,并挂起等待被唤醒&&&$$(又说了一堆)

   口试官:能说说CAS的实现途理么?

  我:CAS是通过unsafe类的compareAndSwap方法实现的(心里景象的一笑)

  口试官:哦,好的,那你知途这个方法的参数的含义的么?

  我:(这是正正在逼我啊...努力的回想,由于我真的看过啊)我想想啊,这个方法看的时间有点久远了,第一个参数是要修改的对象,第二个参数是对象中要修改变量的偏移量,第三个参数是修改之前的值,第四个参数是推测修改后的值....(说出来之后都有点佩服自己,这个都记得,不过口试官好像还是不肯放过我...)

  口试官:嗯,对的,那你知途操作编制级别是怎样实现的么?

  我:(我去你大爷...)我只记得X86中有一个cmp由来的指令,举座的我遗忘了...

   口试官:嗯,好,你知途CAS指令有什么谬误么

  我:哦,CAS的谬误是存正正在ABA问题

  口试官:怎样讲?

   我:就是一个变量V,如果变量V初次读取的时候是A,而且正正在准备赋值的时候反省到它仍然是A,那能说明它的值没有被其他线程修厘正了吗?如果正正在这段功夫它的值曾经被改成了B,然后又改回A,那CAS操作就会误以为它从来没有被修厘正。

  口试官:那怎样解决?

  我:(有完没完了啊...我的心里是崩溃的)针对这种情况,java并发包中提供了一个带有标志的原子援用类"AtomicStampedReference",它可以通过控制变量值的版本来保证CAS的正确性。

  口试官:嗯,好的,这个问题到此为止,银河文娱有哪些网站_云顶文娱场7610_bet9九州 网站再看看别的

   我:....我能喝口水么

  3、ConcurrentHashMap

  当视察数据构制时,口试官一开始会问HashMap的实现途理,当你说出HashMap并非线程幽静之后,会让你自己引出ConcurrentHashMap,接着就可能开始如下的对话。

  场景对话:

  口试官:谈谈ConcurrentHashMap实现途理

  我:@#¥@@基于分段锁的%%¥#@#¥,但是1.8之后改变实现格事务署了

  口试官:1.8啥格事务署

   我:把1.8的实现途理说了一通,其中提到了红黑树...

  口试官:能讲下红黑树的意睹吗

   我:红黑树是一种二叉树,而且是平衡……%……¥……,

   口试官:能讲下红黑树的。。。。。

  我:打住,别问了,红黑树我只知途他是二叉树,比其他树众一个属性,其他的我都不知途

  口试官:好的,那换个,你知途它的size方法是怎样实现的么?

   我:size方法?是想要得到Map中的元素个数么?

   口试官:对的....

  我:我记得好像size方法返回是不切实的,泛泛也不会用到这个方法...

  口试官:如果你以为size方法返回值不切实,那如果让你自己实现,你以为应该怎样实现呢?

  我:...@#¥@@...两眼一黑

   我:等等,让我想想.....应该可以用AtomicInteger变量进行记录...嗯,对的,每次插入或删除的时候,操作这个变量,我景象的一笑...

  口试官:哦,是么,那如果我以为这个AtomicInteger这个变量功能不好,还能再优化么?

  我:懵逼脸...(当时居然把volitile变量给遗忘了)...好像没有了,我想不出来了...

   口试官:哦,那转头你再看看源码吧,jdk中曾经实现了...

   我:哦,是么....

  口试官:那今天的口试到此结束,银河文娱有哪些网站_云顶文娱场7610_bet9九州 网站后面会告诉你。

  我:..................

除非特别注明,鸡啄米文章均为原创
转载请标明本文地址:http://www.sygjbus.cn/software/707.html
2017年3月17日
作家:鸡啄米 分类:软件开发 浏览: 评论:2