• 实习面试总结(只写了昨天腾讯的面试和拿到offer的一个小公司, 有空再把前面的补上吧)


    一个月来面了大大小小的公司有近10个,还是总结一下吧,希望对大家有点用处。

    我想说的是,大学四年,如果不会继续读研深造,那么你需要做的不仅仅是疯狂的做项目,或者单独的学算法。

    最好的方式就是都了解一点,但是要有自己擅长的东西,面试的问题无非就是那几个方面,比如C/C++(当然如果

    你的主要语言和我一样是C/C++的话), 操作系统,计算机网络,有一个项目(只要不是档次那么低就可以),

    然后就是基本的算法和数据结构(这个,我觉得是大多数学生所欠缺的)。

    一.  腾讯

    昨天到上海参加现场面试,到现场之前感觉不是那么紧张,到了才觉得有点慌了。

    别的不说,霸气的大楼看了就让我不敢抬头说话了。到了11楼会议室,加上我只有5个人在等面试。

    没要几分钟,工作人员就让我到某间会议室去面试,进去之后,第一眼我就发现那位面试官穿的拖鞋,

    不过也没有太多惊讶,毕竟人家的主场。

    好啦,进入正题。

    首先,他看了看简历,就开始问了我项目的问题,其实这是我最不愿意被问的东西,然后就硬着头皮给他babalabala。

    之后说到多线程,他问我项目中用的是阻塞还是非阻塞。。我压根就没了解过这个词啊!!于是就说不知道了。

    问: 我项目中有哪些亮点?

    我又是一顿babalabala。。

    问: 你擅长哪些东西呢?

    答:C/C++比较熟悉,对Linux也挺熟的,还有一些基础的算法和数据结构。

    于是,

    问: 虚函数是干嘛的?

    答: 我想这特么简单啊,虚函数用在继承中,希望子类重写父类中的虚函数,用来实现多态啊。

    问: 那虚析构函数呢?

    答: 这个也是虚函数啊, 当用父类指针指向子类实例的时候,析构该指针所指向对象时会先调用子类的析构函数,然后再调用父类的析构函数。

    问: 数组名和指针有什么异同呢?

    答: 数组名指向的就是数组的首地址。后来想想,这个问题我回答的超级烂,数组名在编译器看来就是个常量,在编译阶段就可以知道的值。

           这种问题,我就是一时想不到那么多,还是不太熟悉呀,细节最重要。

    问: 写一个宏,求两个数的最大值。

    (我心里想,居然问我这种小儿科问题,我最擅长的啊!当然,我知道会有很多人会写不好这个简单的问题)

    答: 我在纸上迅速写了下来

    #define MAX(a, b) ((a) > (b) ? (a) : (b))

    问:定义一个函数指针,该函数返回类型为int,有一个int型的参数。

    (我想,好简单。问这种问题好爽)

    答: 在纸上写了。面试的时候都是在纸上写代码。还好我练过!

    int (*func)(int);

    问:你读过那些有名的书吗?

    答:<<C++ Primer>>, <<C指针>>, <<C陷阱和缺陷>>, <<C专家编程>>, 还有鸟哥的Linux书籍,一些算法和数据结构的书。

    问:写一个函数,输入为一个字符串,字符串可能包含一些空格, 输出是这些以空格作为分隔符的字符串数组。

    显然这个问题不是那么简单,会有许多需要注意的地方,我想了一下,在纸上写了起来。

     1 vector<string> split(string inputString) {
     2     vector<string> answer;
     3     unsigned int length = inputString.size(), i = 0;
     4     while ( i < length && inputString[i] == ' ' ) i++;
     5 
     6     string str = "";
     7     for ( ; i < length; i++) {
     8         if ( inputString[i] == ' ' ) {
     9             answer.push_back( str );
    10             str = "";
    11             while ( i < length && inputString[i] == ' ' ) i++;
    12             i--;
    13         } else {
    14             str += inputString[i];
    15         }
    16     }
    17     if ( str.size() ) answer.push_back( str );  
    18 
    19     return answer;
    20 }

    这是最后一个题目,写完我就觉得简直完美。。但是回来的路上一直很忐忑,生怕哪里写错掉。

    回来之后我把代码写了一遍测试,发现居然少了一句话。。。。尼马,简直了!

    其实上面代码里的 倒数第二句我当时忘掉了。。。也就是没有这句。

     if ( str.size() ) answer.push_back( str );  

    算是对自己的一个教训吧。这个题并不是什么难题,但是写代码的时候我觉得一定要注意以下几点:

    1. 变量的命名规则

    2. 代码风格,有的人离开编辑器或者IDE就不会写代码了。

    3. 一定要细心,不要急着写好就给面试官看,仔细检查,就可以避免我当时的低级错误。确实有点紧张。

    4. 考虑要周到,如果字符串头部或者尾部有空格怎么把,或者中间有多个连续的空格怎么处理,这些都是细节,要小心。

    面试最后,他让我问他几个问题,我也就随便问问说实习生来到这里会被安排做哪些工作呢?每天开几次会?babalabala。。。

    滚粗咯...........

    二. 妙技旅行(北京, 创业公司)

    对这个公司的实习的职位超级有feel,因为职位描述的和我要找的工作真的很贴近。

    这是在周二下午即将要上三四节课的时候打来的电话。

    当然,他是看过我的简历了,然后就开始问啦。

    首先,问了项目的东西,但是他问的是我写的LRU Cache。

    问: 你是怎样实现这个机制的呢?

    答: 双向链表+map,其实这里还balabala了好多。不太记得了。

    问:LRU有什么缺点呢?就是在什么情况下会表现的很差?

    答: 不知道。(我当时是真的想不起来了,现在我知道有一种情况是weak locality)

    问:Python的可变类型和不可变类型是什么?

    答:比如tuple是不可改变,(他还举了个例子让我来回答)

    问:将BST变为一个双向链表。

    答: 时间有点紧,想不出来. (其实只需要dfs一下就ok了。

    问: 你知道STL 的map是用什么实现的么? 他的插入删除效率是多少?哪个更块一点呢,为什么?

    答: map用RB-Tree实现的,插入和删除的效率均摊情况下都是对数级别的。至于插入和删除哪个更快一点,我不太清楚( 后来知道和旋转的次数有关

    问: 二分查找的效率是多少? 你可以解释一下二分查找么?

    答: 效率是对数级别。我给他举了一个"猜数字“的例子。

    问: 你可以解释一下C++的多态吗?

    答: 当使用基类指针或引用指向派生类的实例时,会根据其实际类型进行动态绑定。(略了一些, 忘记了。。

    问: 你知道sed和awk的区别么?

    答: (这个问题我并没有回答到点子上,他后来和我说sed是面向行的,而awk是面向列的。。我才明白

    问: 我想查看文件的前几行或者后几行怎么办?

    答: 使用head和tail。

    问: 你有什么问题想问我的吗?

    答: balabalabala

  • 相关阅读:
    socket bind详解
    Hibernate简单的基础理论
    Web的工作机制
    部署hibernate框架项目时出现问题:The type java.lang.Object cannot be resolved. It is indirectly referenced from required .class files.
    Spring简单的小例子SpringDemo,用于初略理解什么是Spring以及JavaBean的一些概念
    Hibernate项目里配置环境时,jar包配置不当会对测试结果产生影响。
    转载——Struts2中的constant详解
    同样的WiFi,手机能连上网,电脑不能。错误代码DNS_PROBE_POSSIBLE
    eclipse外部导入Javaweb项目时,项目上出现红叉的一个可能的解决办法
    依赖注入的实现方式:设值注入和构造方法注入
  • 原文地址:https://www.cnblogs.com/Stomach-ache/p/4371531.html
Copyright © 2020-2023  润新知