面試題目二 - hjwu
文章推薦指數: 80 %
由於已經遲繳了,因此看到Codility 題目只要求正確性後我對時間/ 空間複雜度也就不太在意了。
總共是3 題兩小時,下面列出我理解後的內容與解答,但程式碼 ...
Frank乾一杯dark
light
hacker
solarized
kimbieAboutTimelineTagsCategoriesSeriesdark
light
hacker
solarized
kimbieAbout
TimelineThispagelooksbestwithJavaScriptenabled面試題目二📅 Aug20,2020
· ☕ 2 minread
2017年獵頭幫我介紹的面試考題。
當時信上寫Before2017-10-30結果我發現時已經是2017-10-31凌晨了…😅由於已經遲繳了,因此看到Codility題目只要求正確性後我對時間/空間複雜度也就不太在意了。
總共是3題兩小時,下面列出我理解後的內容與解答,但程式碼可能跟我交付的有差。
😩第一題給定一字串S(只有數字與英文字母),找出最長子字串滿足內容沒有數字且至少有一大寫字母。
如果存在回傳該子字串長度,否則回傳-1看著倒數計時的數字,我還是有點緊張。
所以我直接暴力這題1
2
3
4
5
6
7
8
9
10
intSolution(stringS)
{
if(string.IsNullOrWhiteSpace(S))return-1;
varlongestSub=S.Split(newchar{'0','1','2','3','4','5','6','7','8','9'})
.Where(s=>s.Any(c=>char.IsUpper(c)))
.OrderByDescending(s=>s.Length)
.FirstOrDefault();
returnlongestSub==null?-1:longestSub.Length;
}
等醒來後才想到也可以不用Linq這樣寫1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
intSolution(stringS)
{
intans=-1;
intsum=0;
boolhasUpper=false;
foreach(charcinS)
{
if(Char.IsDigit(c))
{
if(hasUpper)ans=Math.Max(ans,sum);
sum=0;
hasUpper=false;
continue;
}
hasUpper|=Char.IsUpper(c);
sum++;
}
if(hasUpper)ans=Math.Max(ans,sum);
returnans;
}
第二題給定POP,DUP,+,-跟數字組成的字串算出結果。
請依下表計算答案,若答案為負或是無法計算請回傳-1。
指令意思POPPOPDUPDUPLICATE+ADD-Subtract數字PUSH例如給45DUP2+8-POP答案為5。
指令結果4454,5DUP4,5,524,5,5,2+4,5,784,5,7,8-4,5,1POP4,5這題基本上用Stack加暴力法就解決了。
雖然題目很長,但卻很簡單。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
intSolution(stringS)
{
string[]ops=S.Split('');
object[]o=newobject[ops.Length];
for(inti=0;i
例:123回傳6,223回傳3,120回傳4,100回傳1這題基本上就是數學題。
但我稍微卡了一下,一直打結在錯排問題(Derangement)上,浪費了一些時間。
另外由於題目數字範圍,我一度想把階乘的函數直接寫死。
😏1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
intSolution(intN)
{
int[]counts=newint[10];
while(N>0)
{
counts[N%10]++;
N/=10;
}
intproduct=1;
for(inti=1;i<10;i++)product*=GetFactorial(counts[i]);
intdigitCount=counts.Sum();
intans=GetFactorial(digitCount)/(GetFactorial(counts[0])*product);
if(counts[0]>0)ans-=GetFactorial(digitCount-1)/(GetFactorial(counts[0]-1)*product);
returnans;
}
intGetFactorial(intn)
{
if(n==0)return1;
elsereturnn*GetFactorial(n-1);
}
結論沒看到三題的分數,不知道是不是因為逾期所以拿到缺考。
另外不知道是不是祖先保佑,我覺得Codility給的這三題比LeetCode跟ProjectEuler都簡單很多。
😬WRITTENBYFR4NKMath/BackendRD面試題目一面試題目三What'sonthisPage
第一題第二題第三題結論
延伸文章資訊
- 1PM前傳(2):越級打怪的震撼面試 - Medium
內容有特別隱去了關於公司、以及工作上的細節;如果喜歡聽故事,當成我們的午後閒聊吧。 2018年1月,主動投了軟體公司,HR邀請進行線上Codility程式測驗; ...
- 2面試心得
Codility測驗. 題目有3題,限制時間是130分鐘,題目跟leetcode的問法不太一樣,都是有一個生活 ...
- 3Codility / LeetCode的重要性與注意事項 - Jecho.Me
Codility / Leetcode 不只會針對回答內容給出最終分數,也會一併記錄解題的過程供面試官參考;相較於現場考試,Codility / Leetcode可以省下更多時間,也能讓求職者在...
- 4Codility面试题——4个整形数字可以组成的24小时制时间的可能 ...
Codility面试题——4个整形数字可以组成的24小时制时间的可能性个数,代码先锋网,一个为软件开发程序员提供代码片段和技术文章聚合的网站。
- 5面試題目二 - hjwu
由於已經遲繳了,因此看到Codility 題目只要求正確性後我對時間/ 空間複雜度也就不太在意了。 總共是3 題兩小時,下面列出我理解後的內容與解答,但程式碼 ...