找工作从做好面试开始三

     ps.改了个文章题目:)之前是《羊年第三面》

     ps. 此文旨在纪录本人面试的经历,如有对文中的人或者公司有所冒犯,请海涵,不能接受者请mail我,说明情况,我将删掉相关文章

     上周五(七月十七日)下午去面试了一家公司,比较远,地铁公交呼呼倒,到那边的时候快下午两点了,中午有午休的习惯,这会了刚犯困就硬着头皮去面试了。说说面试的事情吧。

       进公司例行前台登记,然后去房间坐等面试,还好没有让我笔试,很快就开始来技术第一面,首先自我介绍吧,虽然简历上有,人家被临时拉来面试,还不了解我,要我来个简短的自我介绍也是情有可原。

      

       混了这么久都老油条了,就说了来北京多少年了,在几家公司干过,做的项目是什么类型的项目,用的技术包含哪些。于是开始提问题,

     “用过缓存吗?”

     做的就是缓存,“用过。” 

    ”好,说说redis 和memcache的区别”

    “嗯......,没总结过开源的cache之间的区别,我们用的公司内部的缓存“

    “那你们公司写的缓存是根据俄memcache修改的不“

    “......不是的,我们公司的缓存产品全部是自己写的,09年就出来了“

    失败

    “Jetty tomcat 用的比较多是吗?“

    担心问的东西太深,”我只是作为一个servlet容器用下“

    “你知道为什么,tomcat启动多个app的时候可以加载同名的类而不冲突吗?“

    这个还是简单的,“因为有不同的ClassLoader”,OSGI 什么的玩的是这个吧

    算合格吧

    ”说说aop是怎么做到的?“

    “aop就是面向切面编程吧“

    “嗯,那你知道它是怎么做到的呢?“

    “...... ",这个怎么回答呢,代码里加入一个其它地方的代码段,好难,到现在还是不能组织点语言来说明这个问题,只能纠结了一会之后回答,”这个算不知道吧“,抽时间查下看看。

    “工作中线程用的多吗?”

    ”挺多的“

    “那么假如一个cpu有6个核,没个线程的idel是50%,这样的应用设计多少个线程数比较好呢?”

    “12个吧”

     “嗯”

     应该成功

    

    “mysql用到过吗?知道为什么它的索引可以那么快吗?“

    “用到过,但只是普通的CRUD“,这方面的东西看的少,就知道点名词吧,什么游标,什么存储方式呀,算了,继续问我也懂,还是说不知道吧。在考虑是否需要恶补下。

    失败

     “简单说下一致性hash"

     "一致性hash是为了解决网络上热点切换提出来的,它的结构是一个环状的,首先把数据节点hash到这个环上,然后把机器节点也hash到环上,数据节点存储到哪个机器节点上是看数据节点和机器节点的距离“

     “就是说一个数据要想找到存储的位置需要,对比两个不同机器距离的大小吗?”

      这个我没有底,因为虽然看过这些东西,但是工作中从来没有用,所以只能说“是吧”

      失败了,是从一个方向来判断的:),自己理解有偏差,但是经过这次至少可以多学习点东西了。

      知识连接:http://blog.csdn.net/cywosp/article/details/23397179/

     “看过集合类中的HashMap源码怎么实现的不,为什么说HashTable是线程安全的?”

     “看过”,真的看过忽然让我回答这个问题,不知道怎么开始了,不就是根据key做hash来存入一个邻接链表中吗?他想知道的不是这个吧,好吧,回答,“忘记了,你说个切入点吧,还有HashTable不是线程安全的吧,多线程访问是有问题的”,接下来我们就安全展开了竞争,也许这对一个被面试的人来说是极为不利的。

     “HashTable 不算是真正的线程安全,它只是在方法的开始加入了synchronized关键字来达到同步的效果”

     “既然加同步关键字了,为什么说不是线程安全了呢?”

     ”虽然加了同步关键字,但是多线程下访问会出现问题“

     “什么问题?”

     “比如说一个线程在遍历的时候,另外一个线程做修改操作,会出现索引(index)不一致的情况,所以现在没有人用HashTable来作为一个线程安全的集合类来使用了吧,现在大家都用ConcurrentHashMap来代替“

     “那道是的,那你知道ConcurrentHashMap怎么实现同步的吗?“

     面试前没有准备就是不好,之前总看的东西,现在又不知道从哪里开始说了,我就记得点可重入锁和try lock 之类的东西了,直接说名词说不出点逻辑也不好吧,总不能,先弄个锁,然后try lock然后释放锁吧,所以就回答忘记了,这个知识点抽时间也看看吧,哎。

      算是继续失败吧

      最后出了个算法题目,“有n个字符串,加入说分别是S1,S2.....Sn,现在然你找到这n个字符串中相同的一个“

      我要确定下题目意思呀,”是全部找到,还是只找到一个就行“

      “只找一个就行,找到就返回来,你设计个最好的办法来做这个事情“

      这个有意思,个人平时比较喜欢考虑这样的题目,“那这个方法是用一次,还是多次呢,多次的话我肯定会先排序,因为只排一次,可以查很多次,排序肯定是比乱序的要快的”

      “是否排序随便你,只要能查出来就行”

      我就先按不排序的来想想,想了有2分钟,没结果,从无序的地方去找一个东西真的是除了全部遍历一次之外没有更好的办法了,那就想想排序的吧,如果排序之后找相同的怎么找呢?瞬间清楚了,排序之后的查找最快的不就是折半查找吗?到这里应该就清楚了。于是说简单说了下,应该符合他的预期吧。反正接下来是cto面谈了。

      

      cto柔和很多了,简单的聊了下天,然后问“tomcat是怎么处理servlet和jsp请求的”

      我不知道为什么要问tomcat,而不是问web容器,或者servlet容器,难道有什么特殊性吗?不管了,把我知道的说下吧。

     “jsp页面发一个请求过来,是一个http的数据包,里面有link url, 请求方式,是pos 还是get, 参数 等之类的东西,tomcat 有一个建立好连接的socket ,它会分析这些数据包,同时会根据web.xml来判断请求会映射到哪一个servlet中的哪一个方法,方法中会指定是doPost还是doGet方法,同时把传递过来的参数封装到HttpServletRequest 中"

     也不知道是不是想要的,后面就问了下其它的东西,这次面试就结束了。

    

    

猜你喜欢

转载自tangmingjie2009.iteye.com/blog/2229017