Аби ніяких сюрпризів, ось список технічних питань, які будуть задані вам на інтерв'ю:
- Скільки методів ви знаєте щоб порахувати встановлені біти в машинному слові?
- Чим «fork» відрізняється від «exec», що це за звірі такі, і з чим їх їдять?
- Що надрукує і чому потрібна наступна програма?
char *f(){char c;return &c;} main(){char c;printf("%s\n",f()<&c?"<-":"->");} - Як порахувати кількість файлів в директорії?
- Як коректно обробити в прикладній програмі сигнал SIGKILL?
- На якій версії тулкита motif побудована версія 4.4.1 бібліотеки віджетів Qt?
- Що робить системний виклик «fopen»?
Питання щодо кількості пінг-понговых кульок, якими можна заповнити Боинг-777, вартість миття всіх вікон в Сан-Франциско та про оптимальну стратегію виживання у гігантському міксері на жаль не будуть задані.
Якщо ви можете вирішити ці запитання (а іншому разі краще даремно не тривожитися), то надсилайте CV електронною поштою на мою адресу: andy-dot-shevchenko-at-gmail-dot-com. Фінляндія - країна чудесної природи, з м'яким морським кліматом (що найменш у південній частині, де знаходиться Гельсінкі) і добрим та чуйним населенням. Є прямий залізничний зв'язок із Петербургом та поромний з Таллінном і Стокгольмом. Дуже низький рівень ксенофобії і майже поголовне володіння англійською допомагають відчувати себе в затишку.
September 10 2008, 12:21:40 UTC 3 years ago
ps "Знав би мову, був би в Радi." (C)
September 10 2008, 20:10:57 UTC 3 years ago
September 10 2008, 13:51:50 UTC 3 years ago
ПО заканчивал в 94 - Вы понимаете о чем я.
Программировать не хочу.
September 10 2008, 20:10:12 UTC 3 years ago
September 10 2008, 19:15:46 UTC 3 years ago
#include <stdio.h>
int method1(unsigned short int var){
int count=0;
while(var>1){count+=(var-(var/2)*2);var/
return count+var;
}
int method2(unsigned short int var){
int count=0;
while(var){count+=var&1;var>>=1;}
return count;
}
int method3(unsigned short int var){
int count=0;
int numbits=0;
while(numbits < sizeof(unsigned short int)*8){count+= ((var & (1<<numbits++))!=0);}
return count;
}
int method4(unsigned short int var){
int count=0;
while(var>1){count+=var%2;var/=2;}
return count+var;
}
int method5(unsigned short int var){
int count=0;
while(! (var&0x8000)) var<<=1;
while(var){count+= (var&0x8000)>0;var<=1;}
return count;
}
int main(void){
unsigned short int var=0xf;
printf("var=%#x; ",var);
printf("method1=%d; ",method1(var));
printf("method2=%d; ",method2(var));
printf("method3=%d; ",method3(var));
printf("method4=%d; ",method4(var));
printf("method5=%d; ",method5(var));
puts("");
return 0;
}
> Чим «fork» відрізняється від «exec», що це за звірі такі, і з чим їх їдять?
fork - создать копию процесса. В результате вызова функции будет создано два процесса, один из них будет "родитель" (fork() вернёт PID потомка), а второй - потомок (fork() вернёт 0). процесс-"потомок" независим от родителя (вернее, зависим, но через игнор SIGHUPа решается),
копируются все открытые дескрипторы файлов, все переменные и т.д. и т.п.
По хорошему, в Linux'е память между родителем и потомком одна до первой попытки записи. То есть fork в Linux - это как vfork в BSD
Що надрукує і чому потрібна наступна програма? char *f(){char c;return &c;} main(){char c;printf("%s\n",f()<&c?"<-":"->");}
Вообще-то не совсем корректно в реальном использовании. При выходе из f() переменная char будет разрушена и указатель будет показывать на разрушенную область памяти... ну да ладно,прямой ответ на вопрос: рисует на экране, какой из указателей на символ больше или меньше - тот, который указывает на символ в функции main(), или тот, который указывает на символ в функции f().
> Як порахувати кількість файлів в директорії?
1) $ find /path/to/dir -maxdepth 1 -type f | wc -l
2) долго и нудно:
- открыть каталог (opendir)
- прочитать его элементы (readdir)
- смотреть типы элементов (stat() и !S_ISDIR() )
- увеличивать счётчик
- закрыть каталог
- вывести счётчик
> Як коректно обробити в прикладній програмі сигнал SIGKILL?
навскидку направление копания: sigaction(), sigset(), signal() и т.д. Каждый день сигналы не перехватываю, просто знаю, что и где искать.
При необходимости напишу обработчик сингала довольно быстро.
> На якій версії тулкита motif побудована версія 4.4.1 бібліотеки віджетів Qt?
ахез. Из интерфейсов я делал только web-интерфейсы(html,css, javascript) - На php, bash, C, perl.
Баловался с gtk (libglade), но только баловался.
> Що робить системний виклик «fopen»?
открывает файловый поток. Либо, другими словами, связывает файловый дескриптор с файлом. Потом можно работать с потоком посредством этого дескриптора через fprintf, fscanf, fgets, fputs, fseek, fstat и т.д.
> Питання щодо кількості пінг-понговых кульок, якими можна заповнити Боинг-777, вартість миття всіх вікон в
> Сан-Франциско та про оптимальну стратегію виживання у гігантському міксері на жаль не будуть задані.
Кстати, по поводу таких задачек - один знакомый привёл пример вопроса на собеседовании в гугль.
"В некоем государстве есть такая традиция: если в семье рождается мальчик, то семья больше детей не рожает, если же рождается девочка - то семья продолжает "строгать", пока не родится мальчик. Вопрос: какое соотношение мужчин и женщин в данном государстве?"
На обдумывание даётся три минуты. Я моментально знакомому ответил: 50 на 50 плюс-минус два-три процента.
Ответ неправильный :) правильный ответ: "за выделенное для ответа время данная задача решения не имеет". Это типа тест на расходование ресурсов на заведомо нерешаемую задачу. Короче, провалил бы я тест в гугль... :(
Так что, "ненене, Дэвид Блэйн, нам боингов в окна Сан-Франциско не надо"... :)
September 10 2008, 20:08:48 UTC 3 years ago
3. Абсолютно коректно
4. 2) неможна у такому вигляді прийняти
September 10 2008, 21:15:50 UTC 3 years ago
"загальний" - "один и тот же"?
Anonymous
September 11 2008, 06:16:02 UTC 3 years ago
Одна идея - 5 реализаций.
September 11 2008, 06:52:08 UTC 3 years ago
Qt побудований на Motif? Де таку траву дають? ;-)
А ось з якого часу fopen(3) став системным викликом, щось не зрозуміло.
Це ж функція, а системні виклики - це open(2) чи creat(2).
Anonymous
September 11 2008, 06:59:53 UTC 3 years ago