天猫,腾讯,微软实习生三连面经验总结——-天猫实习生电话面试

   我错了,又好久没有更新博客了,忙的事太多,自己又开始变懒了.

   在过去的三天里一共面了三场实习生的面试,第一天是天猫的电话面试,人生第一次面试啊,给面砸了,伤心..T_T第二天去了哈尔滨现面的腾讯前端,感觉面得不太对口,后来也没过初试,完美酱油了一把,第三天早上在宾馆里线上面了微软,感觉还好吧..问题基本都能答上,他说得等HR的结果.现在总结来说,发现自己的基础掌握的还不是太牢固,前两面都被面试官说了,以后基础知识得好好加强,之前复习的时候光看算法了.

   前些天有一位师兄在学校的BBS中发帖可以内推到天猫,把简历发给他之后说如果简历筛选通过近期会有电话面试.Mr.Xu他们也投了,不过第一次投的时候说简历不合格,叫他再写一遍,他就拿我的简历去参考了一下,暗暗开心….不枉我一个星期查了又查改了又改的简历啊.面试是在一个阳光明媚的傍晚(是的,阳光明媚,4点多,面完试听说内蒙古那边还地震了,长春也有震感,他们住5楼的都跑到楼下去了),像平常一样,程序写困了我就在宿舍走廊里溜达,接到一个杭州打来的电话,心想八成是天猫的电面了,就接了.说话是的一天南方口音的年轻人,估计进天猫也没几年吧,说他是天猫的,问我现在有没有时间可以开始电话面试,我犹豫一下,反正现在也没啥事,就面呗,后来后悔了..我应该推后一些时间然后赶紧抱一下佛脚,面得也不会这么悲剧了.

  1. 介绍一下自己

    我就简单自报家门,说我主要用java,自己实现了一个简单的ORM,其它的项目也简单介绍了一下.

  2. 他问我是怎么实现这个ORM的,

    答,java反射机制,ThreadLocal和代理机制.代理机制由于用的时候也没太深入了解,第一次面试又有点紧张,顿了两三次也没说清楚.

  3. 由于解释ThreadLocal说到单例跟线程安全,问,怎么构建单例,在并发的情况下不用ThreadLocal怎么确保单例的线程安全.

    答,单例构造方法是私有的,有一个静态的访问入口并实例化单例,保证线程安全的话可以用同步锁吧.

  4. 问,大概意思是这个ORM跟其它的ORM比如Hibernate相比,有什么不同的地方.

    我说,首先,我写是抱着学习的态度去写的ORM,主要是想了解ORM的实现原理,任何的创新都是从模仿开始的,目前还是在参考别人开源的代码,还没有能写出什么新的功能.

  5. 问,之后对这个ORM发展是怎么想的.

    我说,是本来是想把它写成一个MVC的构架,用像Struts和Spring一样功能的V,C.

  6. 问,那你说说Struts是原理吧,Struts是怎么样原理.

    我就囧了,Struts的原理是啥还没研究过呢,就说不是太清楚,好像先用过滤器把地址映射到Servlet上吧…..

  7. 问,你说的就是Servlet嘛…Servlet你应该懂吧,那你给我说说Servlet实现原理吧.

    大囧….太久之前看过,但是具体是怎么样都给忘了,吱吱呜呜好久都说不出来,之后放弃了说不记得了..那边好像很无奈的样子…

  8. 开始问大数据,给1亿个数,内存装不下,找出其中重复的数

    这个难不倒我,之前有认真看JULY大神的文章,就说用trie树吧,就是字典树,不过好像面试官没有听说过trie树的样子,我说就构建立一个多叉树,树的每个节点只存一个数字,根节点不存东西,节点A的子节点B存的是一个数中A后的数字B,比如数12345,那树的第一个节点存1,它的子节点存2,2的子节点存是3,依此类推,在向树中读数据的过程中,如果树中不存这个数,那么就创建新节点储存它,如果树中已经存这个数,那么说明读入的数跟之数的数重复了,这个节点中的计数器就加1,这样就可以统计出重复的数了,而且节省空间(这里我说错了,其实trie树并不节省空间,反而用的大量的空间,用空间来换时间,你可以发现trie树中不管是查找还是增加,删除都很容易),他就问,那你觉得它的占了多大的空间,由于当时没想弄清楚,就说1亿个说如果有3000W个数是重复的,那应该是..1亿中有9个数字,9*6000W吧.他马上问,那如果只有一个重复的数呢?汗…才发现好像答的有问题,就表示不太清楚…其实找大数据中重复的数有很多的方法啦,JULY的文章中讲了好多,基本上可以秒杀99%的大数据问题了,呵呵,之后的面试问的大数据问题都用上了.

  9. 接下来问java基础,有哪些基本类型?

    int,long,float,double,boolean.char,byte,short.

  10. String有哪几种表现方式?

    不太懂他想问什么,提示说StringBuffer,才明白说是String,StringBuffer,StringBuilder.

  11. 说说String跟StringBuffer有什么区别?

    之前有看过,不过已经是一个月前了,隐约记得一些,说String在+操作时是重新new了一个String对象,而StringBuffer是在原来的字符串后追加,String和StringBuffer其中一个是线程安全的一个不是(这里又答错了,记混淆了,应该是StringBuffer是线程安全的,StringBuilder是线程不安全的,String是字符串常量,应该也是安全的吧)

  12. java中list和vector的实现和区别?(我想他说的list一般应该是ArrayList的意思吧)

    我表示….之前也看过,也是一个月前看的..不太记得了,那说,好像者都是用的链表实现的吧,( 实际上应该是用数组吧)然后,list是非线程安全的,vector是线程安全的,感觉没答对…

  13. 那list动态增加元素是怎么实现的?

    我说,好像是list在动态增加元素的时候申请了比原来多一倍有空间

最后他问我有什么要问他的,问了他一些之前没答出的问题答案是啥,还有对我面试有什么好建议.他说挺好的,就是基础不牢,需要加强基础,如果过了一个星期之内会打电话过来,如果没接到电话就是没过了..答得这么烂,目测应该是过不了了..

总结

   没有充分准备好面试,基础不牢固,其实实习生面试都不会十分的难,考的是基础的东西,数据结构,操作系统,算法分析,计算机网络这些基础的东西一定得复习好了,多上网看一些别人面试的经验,面试的题目,不一定要背题,要学会解题的思想,有一到两门熟悉的编程语言吧,我建议的是C/C++必须会,除非是应聘特定语言职位,C/C++是必考的,然后java和C#会其中的一门吧,动态语言Python/ruby/Perl/PHP之类也会一门,前端的基础HTML,JS,CSS会一点吧如果不是想面前端方面的话.最后还是得强调基础灰常重要,准备充分再上!

One thought to “天猫,腾讯,微软实习生三连面经验总结——-天猫实习生电话面试”

  1. 我想请问一下你写的ORM为什么要用到java代理机制,代理机制是用在哪个方面,我了解了Proxy.newInstance方法需要的对象要继承某个接口才能获得他的接口函数,但ORM不能要求每个对象都继承某个接口,这个问题怎么解决,谢谢。

Leave a Reply

Your email address will not be published. Required fields are marked *