废柴的我该如何谈恋爱?

一亩三分地论坛

 找回密码
 Sign Up 注册获取更多干货

最近看过此主题的会员

坐标湾区
DreamCraft创始团队
招聘游戏开发工程师
游戏初创公司招聘工程师、UIUX Designer和游戏策划
码农求职神器Triplebyte:
不用海投
内推多家公司面试
前Google华人高管创立
面试offer一键直通
Leap.ai助你进入热门独角兽
查看: 6222|回复: 37
收起左侧

Microsoft on-campus interview30分钟

[复制链接] |试试Instant~
我的人缘0
graininear 发表于 2016-10-14 03:22:38 | 显示全部楼层 |阅读模式
本楼: 【顶】   0% (0)
 
 
0% (0)   【踩】
全局: 顶  88% (15)
 
 
11% (2)  踩

2016(10-12月) 码农类General 本科 实习@Microsoft - 校园招聘会 - 校园招聘会  | Other | 其他

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看,没有帐号?Sign Up 注册获取更多干货

x
30分钟前面了Microsoft的 OnCampus Interview。behavioral question就是遇到最大困难,讲讲project之类,没有问很,
然后白板做题: String Compression : aaabbbaaa -> a3b3a3,inplace.
本来看面经以为会问的比较简单,但这个题至少对我来说并不简单,时间也很紧,不敢光想太久不说话,反正还是经验欠缺吧。  . Waral 博客有更多文章,
满脑子里想的都是leetcode的array 去重,但发现比那个难, 告诉了面试官用two pointer, 但具体while loop里面的东西没有想得很清楚, 卡了半天,以为面试官会提示,但他也不鸟我。
最后写完code也没让我分析也没让我test直接让我问他问题, 应该是没写出对的结果。
哎,应该是没onsite了, 光leetcode还是不行啊, 实力经验还是不够。   继续去投其他公司了。.留学论坛-一亩-三分地
最后求一波大米。。穷的连面经都搜索不了了。


补充内容 (2016-10-19 04:17):
哎被拒了。看来跟微软无缘了,只能继续加油了

评分

参与人数 6大米 +59 收起 理由
zzwcsong + 30
sf3 + 3 感谢分享!
pu0211 + 10 感谢分享!
lyburke + 10 感谢分享!
liberwang + 3 感谢分享!
ben_viv + 3 感谢分享!

查看全部评分


上一篇:Cousera intern OA
下一篇:gg店面ms校招

本帖被以下淘专辑推荐:

我的人缘0
JohnDoe 发表于 2016-10-19 13:48:31 | 显示全部楼层
本楼: 【顶】   100% (3)
 
 
0% (0)   【踩】
全局: 顶  100% (13)
 
 
0% (0)  踩
zjhsyfz 发表于 2016-10-19 11:19
好吧,你问了需要考虑这些情况吗?。。。说不定他们之前没想到这,纯属坑你

写了个Java版本的,变量名比较乱不好意思。
基本思路就是first pass先压缩出现多于1的字母,计算出现只有1的字母数目
second pass倒着来遇到出现只有1的字母添加1后再拷,其他直接拷。
大伙帮忙测试下,main里面的输出是a1b1c1d6e15f1g1。

public class CompressString {
    public int compress(char[] s){. From 1point 3acres bbs
        int start = 0, offset = 0, single = 0;
        for(int end = 1;end<=s.length; end++){
            if(end==s.length||s[end]!=s[start]){. 1point3acres
                int cnt = end-start;
                if(cnt==1){
                    s[offset++]=s[start];
                    single++;
                }else offset = copy(s, offset, s[start], cnt);
                start=end;
            }
        }
        int end = offset-1+single;
        int j = end;
        for(int i = offset-1;i>=0;i--){. 1point3acres
            if(Character.isLetter(s)&&(i+1==offset||Character.isLetter(s[i+1]))){
                s[j--]='1';. visit 1point3acres for more.
            }
            s[j--]=s;
        }. 牛人云集,一亩三分地
        return end;. 1point 3acres 论坛
    }
. 牛人云集,一亩三分地
    private int copy(char[] s, int offset, char c, int cnt){
        int curr = offset;
        s[curr++]=c;
        int mask = 1;
        while(cnt/10/mask>0) mask*=10;
        while(cnt>0){
            s[curr++]=(char)((cnt/mask)+'0');
            cnt%=mask;
            mask/=10;
        }
        return curr;
    }

    public static void main(String[] args) {. Waral 博客有更多文章,
        CompressString test = new CompressString();
        char[] s = "abcddddddeeeeeeeeeeeeeeefg".toCharArray();. visit 1point3acres for more.
        int end = test.compress(s);
        System.out.println(new String(s,0,end+1));
    }
}

评分

参与人数 2大米 +4 收起 理由
regist1234 + 1 感谢分享!
zjhsyfz + 3 回答的很好!

查看全部评分

回复

使用道具 举报

我的人缘0
xiaozhuxiaozhu 发表于 2016-10-16 14:46:52 | 显示全部楼层
本楼: 【顶】   50% (1)
 
 
50% (1)   【踩】
全局: 顶  73% (955)
 
 
26% (336)  踩
这题去去年google实习面经。 刷完leetcode, 足够应付了。
  1. public class microsoft_practice_string_compression {
  2.        
  3.         . more info on 1point3acres
  4.         public static String compression(char[] ch)
  5.         {
  6.                 if(ch==null) return "";
  7.                 if(ch.length<2) return "";. From 1point 3acres bbs
  8.                 StringBuilder sb = new StringBuilder();
  9.                 char start = ch[0];
  10.                 int counter =1;. 一亩-三分-地,独家发布

  11.                 for(int i =1;i < ch.length;i++). From 1point 3acres bbs
  12.                 {
  13.                         if(ch[i]==start).留学论坛-一亩-三分地
  14.                         {. more info on 1point3acres
  15.                                 counter++;
  16.                         }
  17.                         else
  18.                         {
  19.                                 sb.append(start);
  20.                                 sb.append(counter);
  21.                                 start = ch[i];
  22.                                 counter=1;
  23.                         }
  24.                 }
  25.                 sb.append(start);
  26.                 sb.append(counter);
  27.                 return sb.toString();
  28.         }
  29.         public static void main(String[] args)
  30.         {
  31.                 String str = "aaabbbccc";. 围观我们@1point 3 acres
  32.                 char [] test = str.toCharArray();
  33.                 String str1 = "abc";
  34.                 char[] test1 = str1.toCharArray();
  35.                 String str2 = "abbb";
  36.                 char[] test2 = str2.toCharArray();
  37.                 System.out.println(compression(test)); 来源一亩.三分地论坛.
  38.                 System.out.println(compression(test1));. 1point 3acres 论坛
  39.                 System.out.println(compression(test2));
  40.         }.本文原创自1point3acres论坛
  41. }
复制代码

补充内容 (2016-10-16 14:50):
length < 2  ;直接return str, 打错了
回复

使用道具 举报

我的人缘0
xiaozhuxiaozhu 发表于 2016-10-17 06:43:48 | 显示全部楼层
本楼: 【顶】   100% (1)
 
 
0% (0)   【踩】
全局: 顶  73% (955)
 
 
26% (336)  踩
609064231 发表于 2016-10-17 05:58
你这只考虑了counter是个位数啊
counter大于等于10呢

你自己不能加几行代码?
  1. public class microsoft_practice_string_compression {
  2.        
  3.         .留学论坛-一亩-三分地
  4.         public static void compression(char[] ch). Waral 博客有更多文章,
  5.         {
  6.                 int counter =1;
  7.                 int j =0;

  8.                 for(int i =0;i < ch.length;i++)
  9.                 {
  10.                                 while((i+1<ch.length) && ch[i]==ch[i+1])
  11.                                 {
  12.                                         counter++;. 1point3acres
  13.                                         i++;
  14.                                 }
  15.                                 ch[j++] = ch[i];
  16.                                 if(counter<10)
  17.                                 {
  18.                                         ch[j++] = (char) (counter+'0');

  19.                                 }
  20.                                 else
  21.                                 {
  22.                                         int temp =0;
  23.                                         int start = j;
  24.                                         while(counter>0)
  25.                                         {. 一亩-三分-地,独家发布
  26.                                                 temp = counter%10;
  27.                                                 ch[j++] =(char) (temp+'0');
  28.                                                 counter= counter/10;
  29.                                         }
  30.                                         int end = j-1;
  31.                                         while(start < end)
  32.                                         {
  33.                                                 char tempChar = ch[start];
  34.                                                 ch[start] = ch[end];
  35.                                                 ch[end] = tempChar;
  36.                                                 start++;
  37.                                                 end--;
  38.                                         }
  39.                                 }
  40.                                 counter=1;

  41.                 }
  42.                 while(j!=ch.length)
  43.                 {
  44.                         ch[j++] ='\0';
  45.                 }. From 1point 3acres bbs
  46.                 for(char c: ch). visit 1point3acres for more.
  47.                 {
  48.                         System.out.println(c);.留学论坛-一亩-三分地
  49.                 }
  50.         }
  51.         public static void main(String[] args)
  52.         {
  53.                 String str = "aaabbbccc";
  54.                 char [] test = str.toCharArray();
  55.                 String str1 = "aaaaab";
  56.                 char[] test1 = str1.toCharArray();.本文原创自1point3acres论坛
  57.                 String str2 = "aaaaba";
  58.                 char[] test2 = str2.toCharArray();
  59.                 String str3 = "aa";
  60.                 char[] test3 = str3.toCharArray();
  61.                 String str4 = "aabb";
  62.                 char[] test4 = str4.toCharArray();
  63.                 String str5 = "aaaaaabbbbbbbbbbbbbbbbbbbbbcccccccccccccc";
  64.                 char[] test5 = str5.toCharArray();. 围观我们@1point 3 acres
  65.                 String str6 = "hhhhhhhhhhhhhhhh";
  66.                 char[] test6 = str6.toCharArray();
  67.                 System.out.println("test");. visit 1point3acres for more.
  68.                 compression(test);
  69.                 System.out.println("test1");
  70.                 compression(test1);
  71.                 System.out.println("test2");-google 1point3acres
  72.                 compression(test2);. more info on 1point3acres
  73.                 System.out.println("test3");
  74.                 compression(test3);
  75.                 System.out.println("test4");
  76.                 compression(test4);
    . visit 1point3acres for more.
  77.                 System.out.println("test5");
  78.                 compression(test5);
  79.                 System.out.println("test6");
  80.                 compression(test6);
  81.         }
  82. }
复制代码
回复

使用道具 举报

我的人缘0
609064231 发表于 2016-10-17 05:58:30 | 显示全部楼层
本楼: 【顶】   100% (1)
 
 
0% (0)   【踩】
全局: 顶  72% (65)
 
 
27% (25)  踩
xiaozhuxiaozhu 发表于 2016-10-17 04:42.本文原创自1point3acres论坛
你意思是这个?

补充内容 (2016-10-17 04:43):

你这只考虑了counter是个位数啊
counter大于等于10呢

21.000+ students read the Road to learn React. The course weaves all the opinionated roadmaps into one roadmap to master React. It gives you all the fundamentals in React. You will build a Hacker News App along the way.

回复

使用道具 举报

我的人缘0
小飞侠 发表于 2016-10-17 03:06:02 | 显示全部楼层
本楼: 【顶】   100% (1)
 
 
0% (0)   【踩】
全局: 顶  100% (2)
 
 
0% (0)  踩
xiaozhuxiaozhu 发表于 2016-10-16 14:46
这题去去年google实习面经。 刷完leetcode, 足够应付了。

题目说了是in place, Java不能用stringbuilder或者stringbuffer,也就是说函数是这样,public void compress(char []array),没有返回值,直接在array上面改。还有就是题目不会给invalid的input,比如abc,要求输出a1b1c1,这样输出的char超过了给的数组的长度,这样input就是invalid,所以不会有这样的input。
回复

使用道具 举报

我的人缘0
wtcupup 发表于 2016-10-14 03:26:03 | 显示全部楼层
本楼: 【顶】   0% (0)
 
 
0% (0)   【踩】
全局: 顶  61% (346)
 
 
38% (215)  踩
这道题如果用java的话得用stringbuilder,无法in-place啊
回复

使用道具 举报

我的人缘0
ben_viv 发表于 2016-10-14 03:32:27 | 显示全部楼层
本楼: 【顶】   0% (0)
 
 
0% (0)   【踩】
全局: 顶  100% (19)
 
 
0% (0)  踩
同样是今早面的,同一道behaviour question~~
回复

使用道具 举报

我的人缘0
haveto 发表于 2016-10-14 03:33:39 | 显示全部楼层
本楼: 【顶】   0% (0)
 
 
0% (0)   【踩】
全局: 顶  72% (63)
 
 
27% (24)  踩
inplace 的意思是直接在aaabbbaaa上面改?所以是第二个a替换成3 第三个a替换成b 最后多余的截掉 这种??
回复

使用道具 举报

我的人缘0
genius1wjc 发表于 2016-10-14 03:34:55 | 显示全部楼层
本楼: 【顶】   0% (0)
 
 
0% (0)   【踩】
全局: 顶  100% (13)
 
 
0% (0)  踩
ben_viv 发表于 2016-10-14 03:32
同样是今早面的,同一道behaviour question~~

下周面on campus, 能不能说一下technical面的是啥...谢谢
回复

使用道具 举报

我的人缘0
 楼主| graininear 发表于 2016-10-14 03:36:42 | 显示全部楼层
本楼: 【顶】   0% (0)
 
 
0% (0)   【踩】
全局: 顶  88% (15)
 
 
11% (2)  踩
wtcupup 发表于 2016-10-14 03:26
这道题如果用java的话得用stringbuilder,无法in-place啊

career cup好像有,刚搜了一下,哎,感觉把情况写全不简单

Learn React.js, Redux & Immutable.js while building a weather app

回复

使用道具 举报

我的人缘0
say543 发表于 2016-10-14 12:11:44 | 显示全部楼层
本楼: 【顶】   0% (0)
 
 
0% (0)   【踩】
全局: 顶  85% (36)
 
 
14% (6)  踩
楼主能贴个carrer link吗 私心觉得 in place 就算 c++也无法解 abc 如果要变成a1b1c1 感觉就无法in place?
回复

使用道具 举报

我的人缘0
 楼主| graininear 发表于 2016-10-14 13:08:41 | 显示全部楼层
本楼: 【顶】   0% (0)
 
 
0% (0)   【踩】
全局: 顶  88% (15)
 
 
11% (2)  踩
我没说清楚。。输入是char array, 只是我只在careercup看到了这道题,叫String Compression, 所以就直接用这个名字了。
回复

使用道具 举报

我的人缘0
 楼主| graininear 发表于 2016-10-14 13:09:16 | 显示全部楼层
本楼: 【顶】   0% (0)
 
 
0% (0)   【踩】
全局: 顶  88% (15)
 
 
11% (2)  踩
say543 发表于 2016-10-14 12:11. Waral 博客有更多文章,
楼主能贴个carrer link吗 私心觉得 in place 就算 c++也无法解 abc 如果要变成a1b1c1 感觉就无法in place?


.本文原创自1point3acres论坛我没说清楚。。输入是char array, 只是我只在careercup看到了这道题,叫String Compression, 所以就直接用这个名字了。
回复

使用道具 举报

我的人缘0
小飞侠 发表于 2016-10-15 04:26:52 | 显示全部楼层
本楼: 【顶】   0% (0)
 
 
0% (0)   【踩】
全局: 顶  100% (2)
 
 
0% (0)  踩
想问一下,你说输入是 char array,那要写的函数是不是这个形式啊: public void compression(char []array)?然后in place要求在char []array上,而不是返回一个string?有时间上的要求么?感觉O(n)的char array in place写不出来啊,career cup上面给的输入是string?谢谢
回复

使用道具 举报

我的人缘0
 楼主| graininear 发表于 2016-10-16 01:11:32 | 显示全部楼层
本楼: 【顶】   0% (0)
 
 
0% (0)   【踩】
全局: 顶  88% (15)
 
 
11% (2)  踩
小飞侠 发表于 2016-10-15 04:26. 围观我们@1point 3 acres
想问一下,你说输入是 char array,那要写的函数是不是这个形式啊: public void compression(char []array) ...

对void函数, 我反正觉得不太好写。。用i,j两个pointer,然后用insertindex = 0,慢慢加上去,感觉应该能出来吧, careercup的确实不好,不清楚,还经常有bug,我也没找到这道题特别好的solution
回复

使用道具 举报

我的人缘0
ben_viv 发表于 2016-10-16 02:52:21 | 显示全部楼层
本楼: 【顶】   0% (0)
 
 
0% (0)   【踩】
全局: 顶  100% (19)
 
 
0% (0)  踩
genius1wjc 发表于 2016-10-14 03:34. From 1point 3acres bbs
下周面on campus, 能不能说一下technical面的是啥...谢谢

http://www.1point3acres.com/bbs/thread-205799-1-1.html
回复

使用道具 举报

我的人缘0
say543 发表于 2016-10-16 14:24:42 | 显示全部楼层
本楼: 【顶】   0% (0)
 
 
0% (0)   【踩】
全局: 顶  85% (36)
 
 
14% (6)  踩
graininear 发表于 2016-10-16 01:11. 留学申请论坛-一亩三分地
对void函数, 我反正觉得不太好写。。用i,j两个pointer,然后用insertindex = 0,慢慢加上去,感觉应该 ...

. from: 1point3acres
inplace 还是觉得c++ 无法解...
回复

使用道具 举报

我的人缘0
609064231 发表于 2016-10-16 22:54:13 | 显示全部楼层
本楼: 【顶】   0% (0)
 
 
0% (0)   【踩】
全局: 顶  72% (65)
 
 
27% (25)  踩
say543 发表于 2016-10-14 12:11
楼主能贴个carrer link吗 私心觉得 in place 就算 c++也无法解 abc 如果要变成a1b1c1 感觉就无法in place?

我觉得如果是abc那么输出应该还是abc吧 如果输出a1b1c1那么反而达到跟compression相反的目的了
回复

使用道具 举报

我的人缘0
 楼主| graininear 发表于 2016-10-17 03:15:24 | 显示全部楼层
本楼: 【顶】   0% (0)
 
 
0% (0)   【踩】
全局: 顶  88% (15)
 
 
11% (2)  踩
xiaozhuxiaozhu 发表于 2016-10-16 14:46
这题去去年google实习面经。 刷完leetcode, 足够应付了。

面试官说inplace,应该不能用stringbuilder,要原来char array上直接修改,比如:[a,a,a,b,b,b] ->[a,3,b,3, null,null]。 请问你知道这种情况的话应该怎么写么?
回复

使用道具 举报

我的人缘0
xiaozhuxiaozhu 发表于 2016-10-17 04:42:51 | 显示全部楼层
本楼: 【顶】   0% (0)
 
 
0% (0)   【踩】
全局: 顶  73% (955)
 
 
26% (336)  踩
graininear 发表于 2016-10-17 03:15
面试官说inplace,应该不能用stringbuilder,要原来char array上直接修改,比如:[a,a,a,b,b,b] ->[a,3,b ...

你意思是这个?
  1. public class microsoft_practice_string_compression {
  2.        
  3.        
  4.         public static void compression(char[] ch)
  5.         {
  6.                 int counter =1;
  7.                 int j =0;

  8.                 for(int i =0;i < ch.length;i++)
  9.                 {
  10.                                 while((i+1<ch.length) && ch[i]==ch[i+1]). From 1point 3acres bbs
  11.                                 {
  12.                                         counter++;
  13.                                         i++;
  14.                                 }
  15.                                 ch[j++] = ch[i];
  16.                                 ch[j++] = (char) (counter+'0');
  17.                                 if(counter!=1) {
  18.                                         counter=1;
  19.                                 }
  20.                 }
  21.                 while(j!=ch.length). 1point 3acres 论坛
  22.                 {
  23.                         ch[j++] ='\0';
  24.                 }
  25.                 for(char c: ch). 一亩-三分-地,独家发布
  26.                 {
  27.                         System.out.println(c);
  28.                 }
  29.         }
  30.         public static void main(String[] args)
  31.         {
  32.                 String str = "aaabbbccc";
  33.                 char [] test = str.toCharArray();
  34.                 String str1 = "aaaaab";
  35.                 char[] test1 = str1.toCharArray();
  36.                 String str2 = "aaaaba";. visit 1point3acres for more.
  37.                 char[] test2 = str2.toCharArray();
  38.                 String str3 = "aa";
  39.                 char[] test3 = str3.toCharArray();
  40.                 String str4 = "aabb";
  41.                 char[] test4 = str4.toCharArray();
  42.                 System.out.println("test");. 1point 3acres 论坛
  43.                 compression(test);
  44.                 System.out.println("test1");
  45.                 compression(test1);
  46.                 System.out.println("test2"); 来源一亩.三分地论坛.
  47.                 compression(test2);
  48.                 System.out.println("test3");
  49.                 compression(test3);
  50.                 System.out.println("test4");. 围观我们@1point 3 acres
  51.                 compression(test4);. 牛人云集,一亩三分地
  52.         }
  53. }
复制代码

补充内容 (2016-10-17 04:43):
如果所有输入都是有效,这个代码应该可以。 如果需要检查输入是否有效,可以加几行代码。
回复

使用道具 举报

我的人缘0
xiaozhuxiaozhu 发表于 2016-10-17 04:44:55 | 显示全部楼层
本楼: 【顶】   0% (0)
 
 
0% (0)   【踩】
全局: 顶  73% (955)
 
 
26% (336)  踩
小飞侠 发表于 2016-10-17 03:06
题目说了是in place, Java不能用stringbuilder或者stringbuffer,也就是说函数是这样,public void comp ...

返回值是void 是char[] 和是不是in place没有关系,好么。
我可以inplace 原array, 最后返回array啊。
回复

使用道具 举报

游客
请先登录

本版积分规则

提醒:发帖可以选择内容隐藏,部分板块支持匿名发帖。请认真读完以下全部说明:

■隐藏内容方法: [hide=200]你想要隐藏的内容比如面经[/hide]
■意思是:用户积分低于200则看不到被隐藏的内容
■可以自行设置积分值,不建议太高(200以上太多人看不到),也不建议太低(那就没必要隐藏了)
■建议只隐藏关键内容,比如具体的面试题目、涉及隐私的信息,大部分内容没必要隐藏。
■微信/QQ/电子邮件等,为防止将来被骚扰甚至人肉,以论坛私信方式发给对方最安全。
■匿名发帖的板块和方法:http://www.1point3acres.com/bbs/thread-405991-1-1.html

手机版|小黑屋|一亩三分地论坛声明

GMT+8, 2018-9-21 05:01

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

快速回复 返回顶部 返回列表