המבחן השני ב-Hola
Hello
Problem
===========
Simplify the implementation below as much as you can.
Even better if you can also improve performance as part of the simplification!
FYI: This code is over 35 lines and over 300 tokens, but it can be written in
5 lines and in less than 60 tokens.
static int func(String s, char a, char b)
{
if (s.isEmpty()) return -1;
char[] strArray = string.toCharArray();
int i=0;
int aIndex=0;
int bIndex=0;
while (aIndex=0 && bIndex==0 && i<strArray.length)
{
if (strArray[i] == a)
aIndex=i;
if (strArray[i] == b)
bIndex=i;
i++;
}
if (aIndex != 0)
{
if (bIndex == 0)
return aIndex;
else
return Math.min(a, b);
}
else
{
if (bIndex != 0)
return bIndex;
else
return -1;
}
}
הפתרון:
static int func(String s, char a, char b)
{
for (int i = 0; i < s.length(); ++i)
{
char ch = s.charAt(i);
if (ch == a || ch == b)
return i;
}
return -1;
}
ראיון שלישי:
הראיון הבא אחריו הוא שיחה בסקייפ עם אחד העובדים שלהם, לי נתנו לממש פונקציה שמשווה בין מחרוזות ללא התייחסות לupper/lower case. מתחילים ממימוש פשוט ומתחילים לייעל אותו- אם זה ע"י הוספת מערך להמרה מאותיות גדולות לקטנות ואם זה בסופו של דבר ע"י loop enrolling כדי לחסוך בפקודות jmp. אני מאמינה שבשלב הזה השאלה לא זהה לכולם, כי בראיון אח"כ שאלו אותי מה הייתה השאלה שקיבלתי.
ראיון רביעי:
הקוד:
void f() {
Deferred d;
d.then(new DeferredCallback(function(){
console.print("first "+ d.value);
return 'b';
}).then(new DeferredCallback(function(){
console.print("last " + d.value);
});
d.foo('a');
}
הפלט הנדרש:
first a
last b