בקשו ממני לממש כל מיני פונקציות במסמך גוגל דוקס. כמו להדפיס מטריצה בצורה ספיראלית, לממש את הפונקציה strcmp ואז לשנות אותה שלא תהייה case sensitive. היה עוד שאלות אבל אני לא זוכר זה היה לפני חצי שנה.
הסבר לצורה ספירלית נגיד וזה מטריצה של 3X3 שכתוב בה מ1 עד 9 לפי הסדר אז שיודפס למך בסדר הבא.
1,2,3,6,9,8,7,4,5
לבדיקת התאמה
השאלה הייתה לכתוב פונקציה שמקבלת string שמכיל סוגריים ובודק שהביטוי תקין לדוגמא: (({{[]}})) זה תקין כי עבור כל סוגר פותח יש סוגר שסוגר אותו.
הביטוי ([({))} לדוגמא לא טוב כי המיקום של הסוגר האחרון לא במקום הנכון וחסר סוגר מרובע אחד.
סעיף ב' אותה שאלה רק תוסיף גם את הסוגר | שהוא וההופכי שלו זהים בצורה.
הפתרון הוא להשתמש במחסנית
public static boolean check (String s)
{
Stack<Character> st = new Stack<Character>();
Character old_ch = null,ch =null;
for (int i=0;i<s.length();i++)
{
ch=s.charAt(i);
if (ch=='(' ||ch=='<' ||ch=='[' ||ch=='{' )
st.push(ch);
else{
if (ch==')' ||ch=='>' ||ch==']' ||ch=='}' ){
if (st.isEmpty())
return false;
old_ch =st.pop();
if (old_ch=='(' && ch!=')') return false;
if (old_ch=='[' && ch!=']') return false;
if (old_ch=='{' && ch!='}') return false;
if (old_ch=='<' && ch!='>') return false;
}
}
}
if(!st.empty())
return false;
return true;
המבחן השני ב-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
לבדיקת התאמה