• 【面试】摩根暑期实习一面


    今天算是正式开始了校招实习面试和工作面试,之后把所有的面试经历写下来,这也是一个成长的过程。

    英文面试,一面很简单,二面要去上海面,貌似终面都要去上海。

    面试官gg很nice,上来先让英文自我介绍,说实话,这个面试我一点都没准备,结果一上来自我介绍就懵了,偷看着简历念了一番。

    之后问了几个简单的技术问题:

    1、什么是c++多态(Polymorphism),以及实现原理(这是语言知识,会根据你简历上写的擅长语言问的)。幸亏当时看了英文版的a tour of c++,要不然都不知道Polymorphism什么意思。然后就解释了一下什么是多态,以及virtual function, virtual table那一套,有一个点要注意,virtual table是class级别的,而不是object级别的,c++所有member function都是class级别的,所以class的权限控制也是class级别的。这个可以看看Inside the C++ Object Medel这本书,基本上看完了,c++的各种对象模型都明白了。

    2、给一个字符串,char* str = "aaabbbcccdef",去除掉重复字符,要求inplace操作,不要申请额外内存。注:这个题表述有错误,应该用char str[] = "aaabbbcccdef",应为"aaabbbcccdef"是常量字符串,直接附给char*编译器会优化,导致str[1] = 'b'这样赋值会出错,我当时看着不是很对,但是也不是很确定就没有指出来,后来回来试了一下果然错了。当然c++的话,肯定要写string啊,raw point能不用则不用。

    一开始我用的copy

    for(int i = 0; str[i] != ''; i++){
        for(int j = i+1; j <= len;){
            if(str[i] == str[j]){
               j++;
            }else{
                copy(&str[j], &str[len+1], &str[i+1]);
                len = len - j + i + 1;
                break;
            }
        }
    }

    时间复杂度O(n),空间复杂度O(1)。但是这样后面的大部分重复也复制了,经提醒又写了比较简单的。

        int i = 1;
        for(int j = 1; str[j] != ''; j++){
            if(str[i-1] != str[j]){
                str[i] = str[j];
                i++;
            }
        }
        str[i] = 0;

    时间复杂度O(N), 空间复杂度O(1)。但是我和面试官gg说这个版本和上个版本其实是没有区别的,因为str是plain data,在c++中plain data的copy是用c的memcopy函数,对于cpu来说,copy一个字符和copy一个block是没有区别的,面试官gg说是这样的,但是逻辑上来说第二种是比较好的。当然这个问题是很简单的,只是当时比较紧张,没想到第二种方法。

    3、一个链表,怎么判断有没有环存在。如果有环,则找出环的开始点。

    这个问题以及他的变形之前看过,所以很快就答出来,就是设置两个指针,一个走一步,一个每次走两步,如果两个相遇,则有环。之后另一个指针返回头头部开始走,每次一步,另一个指针从相遇点开始走,每次一步,再次相遇的点便是环的开始点,即相交点。

    然后面试就结束了,总而言之,一面比较简单,可能二面会面比较难的问题吧。BAT的面试肯定比这个难,考察的知识面肯定也更广,数据库,设计模式,网路,操作系统,语言都会面到,更高端一点Google和hulu则是更难得数学和算法题。所以说还得好好准备,这个面试全部用英文,excited。

  • 相关阅读:
    江西财经大学第一届程序设计竞赛 F题 -解方程
    HDU2553 N皇后问题
    2018年长沙理工大学第十三届程序设计竞赛 G 题:逃离迷宫
    Codeforces #475 div2
    埃森哲杯第十六届上海大学程序设计联赛春季赛暨上海高校金马五校赛 L题 K序列
    埃森哲杯第十六届上海大学程序设计联赛春季赛暨上海高校金马五校赛 I题 二数
    埃森哲杯第十六届上海大学程序设计联赛春季赛暨上海高校金马五校赛 F题 1+2=3 ?
    埃森哲杯第十六届上海大学程序设计联赛春季赛暨上海高校金马五校赛 Wasserstein Distance
    hdu 5685
    hdu 5512 Pagodas
  • 原文地址:https://www.cnblogs.com/zpjjtzzq/p/5292111.html
Copyright © 2020-2023  润新知