Andy Shevchenko ([info]andy_shev) wrote in [info]ua_job,

Робота для програмістів. Лінукс, у Фінляндії

На постійну роботу у компанію Телека потрібні програмісти із досвідом програмування утиліт, прикладних та іншого типу програм для ОС Лінукс. Необхідно вміння користуватися англійською мовою. Сисадміни зайві. Офіс компанії розташовується у місті Еспо за кілометр від Фінської затоки, за вісім кілометрів від центру міста Гельсінкі, батьківщини Л.Торвальдса.

Аби ніяких сюрпризів, ось список технічних питань, які будуть задані вам на інтерв'ю:

  1. Скільки методів ви знаєте щоб порахувати встановлені біти в машинному слові?

  2. Чим «fork» відрізняється від «exec», що це за звірі такі, і з чим їх їдять?

  3. Що надрукує і чому потрібна наступна програма?
    char *f(){char c;return &c;} main(){char c;printf("%s\n",f()<&c?"<-":"->");}

  4. Як порахувати кількість файлів в директорії?

  5. Як коректно обробити в прикладній програмі сигнал SIGKILL?

  6. На якій версії тулкита motif побудована версія 4.4.1 бібліотеки віджетів Qt?

  7. Що робить системний виклик «fopen»?


Питання щодо кількості пінг-понговых кульок, якими можна заповнити Боинг-777, вартість миття всіх вікон в Сан-Франциско та про оптимальну стратегію виживання у гігантському міксері на жаль не будуть задані.

Якщо ви можете вирішити ці запитання (а іншому разі краще даремно не тривожитися), то надсилайте CV електронною поштою на мою адресу: andy-dot-shevchenko-at-gmail-dot-com. Фінляндія - країна чудесної природи, з м'яким морським кліматом (що найменш у південній частині, де знаходиться Гельсінкі) і добрим та чуйним населенням. Є прямий залізничний зв'язок із Петербургом та поромний з Таллінном і Стокгольмом. Дуже низький рівень ксенофобії і майже поголовне володіння англійською допомагають відчувати себе в затишку.

  • Post a new comment

    Error

    Your IP address will be recorded 

  • 10 comments

[info]Guerrero de terracota [andrewdashin.com]

September 10 2008, 12:21:40 UTC 3 years ago

По просьбам трудящихся: "Ничего не понятно."
ps "Знав би мову, був би в Радi." (C)

[info]andy_shev

September 10 2008, 20:10:57 UTC 3 years ago

Та навіщо тобі Рада?! У нас кручє.

[info]aviacherteg

September 10 2008, 13:51:50 UTC 3 years ago

Спасибо за приглашение.
ПО заканчивал в 94 - Вы понимаете о чем я.
Программировать не хочу.

[info]andy_shev

September 10 2008, 20:10:12 UTC 3 years ago

Не розумію, вибачте.

[info]slavazanko

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/=2;}
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 плюс-минус два-три процента.
Ответ неправильный :) правильный ответ: "за выделенное для ответа время данная задача решения не имеет". Это типа тест на расходование ресурсов на заведомо нерешаемую задачу. Короче, провалил бы я тест в гугль... :(
Так что, "ненене, Дэвид Блэйн, нам боингов в окна Сан-Франциско не надо"... :)


[info]andy_shev

September 10 2008, 20:08:48 UTC 3 years ago

1. Усе це має загальну ідею, тому приймається за загальний метод
3. Абсолютно коректно
4. 2) неможна у такому вигляді прийняти

[info]slavazanko

September 10 2008, 21:15:50 UTC 3 years ago

Слух... я вообще-то белорус, многие слова угадываю. Сделай на это скидку, плиз :)
"загальний" - "один и тот же"?

Anonymous

September 11 2008, 06:16:02 UTC 3 years ago

Общий.
Одна идея - 5 реализаций.

[info]blinohod

September 11 2008, 06:52:08 UTC 3 years ago

Обробка SIGKILL - це круто! Хоча, якщо іншим процессом SIGCHILD ловити...

Qt побудований на Motif? Де таку траву дають? ;-)

А ось з якого часу fopen(3) став системным викликом, щось не зрозуміло.
Це ж функція, а системні виклики - це open(2) чи creat(2).

Anonymous

September 11 2008, 06:59:53 UTC 3 years ago

Чекаю на CV.
Create an Account
Forgot your login or password?
Facebook Twitter More login options
English • Español • Deutsch • Русский…