LINUX.ORG.RU
ФорумTalks

собеседование на знание си


0

1

В общем, через неделю я приглашен на собеседование по языку си. Немного страшновато. В принципе, на си пишу уже год. Есть несколько моих программ с gtk+. В общем, кто проходил подобные собеседования отпишитесь пожалуйста какого типа вопросы там обычно задают? Что знать нужно?

Хотя и собеседование как бы вступительное на курсы по С++, т.е. наверно, валить сильно не будут, но все равно страшно.

★★★★★

>Немного страшновато

напейся -))

FractalL
()
Ответ на: комментарий от Cancellor

Да, хочу еще и диплом по программированию.

hibou ★★★★★
() автор топика

На собеседовании по языку си желательно знать язык си. Остальное - как звёзды лягут.

NightmareZ
()

Спросят про указатели что-нибудь, попросят посчитать пресловутые ++i++ и написать какую-нибудь программку с матрицей. Не боись, ты им не враг, а источник денег.

abraziv_whiskey ★★★★★
()

возьми исходники на собеседование, пускай посмотрят
заодно и время сэкономят и себе и тебе
а поговорить всегда темы найдутся

yltsrc
()

Ну у меня на собеседовании(на работе сейчас пишу на сях) были вопросы типа:

1. Написать программу для переворачивания текстовой строки.

2. Написать программу определяющую является ли число степенью двойки.

3.

int main() 
{
  char a;
  char b;
  char *c;
  char d;
  c = &a;
  c++;
  return 0;
}

Вопрос что будет в с?

int main() 
{
  char a;
  static char b;
  char *c;
  char d;
  c = &a;
  c++;
  return 0;
}

Что будет в с в этом случае?

Еще что-то было, не помню уже. Но вопросы все были подобного типа. На понимание основополагающих вещей. На знание принципов и основ.

Daeloce
()

обычно спрашивают отношение к распитию спиртных напитков

frame ★★★
()
Ответ на: комментарий от NightmareZ

Я немного не правильно написал их...Там суть была на то чтобы проверить понимания того в какой памяти создаются переменные. В первом случае в с лежал бы адрес одного из элементов стоящих либо до либо после а в зависимости от того куда растет стек(в приведенном примере есть смыл только если стек растет вверх).

Во втором примере, поскольку статические переменные располагаются в другой памяти, в с лежал бы свой собственный адрес(опять же для стека растущего вверх)

Daeloce
()
Ответ на: комментарий от Daeloce

1. Написать программу для переворачивания текстовой строки.
2. Написать программу определяющую является ли число степенью двойки.

Аналогично!

У нас все кандидаты первое решали как-то так:

for(int i = len - 1; i >=0; i--)
    printf("%c", str[i]);

:)

urxvt ★★★★★
()
Ответ на: комментарий от Daeloce

Менять местами крайние символы строки пока не дойдёт до середины, не? Можно ещё через другую строку, но так неинтересно.

xetf ★★
()
Ответ на: комментарий от xetf

Ну я в свое время так и решил(меняя крайние элементы местами двинаясь к середине). Через другую строку не выгодно, ни по времени, ни по памяти.

Daeloce
()
Ответ на: комментарий от Daeloce

я ошибаюсь, или в его коде достаточно заменить printf на sprintf ?

jcd ★★★★★
()
Ответ на: комментарий от NightmareZ

В принципе пофиг. Ибо задача на понимание таких вещей как статическая память и heap, а не на то оптимизирует или нет расположение переменных в памяти компилятор.

Конечно вы правы, но я уверен что если бы я это сказал, ответ бы был, мол представим что он располагает их в том порядке в котором мы объявляем.

Daeloce
()
Ответ на: комментарий от Daeloce

> 1. Написать программу для переворачивания текстовой строки.

еще лучше по словам

Reset ★★★★★
()

Мне когда то рисовали какой то простой код с указателями и спрашивали, какие проблемы возникнут на 64-битном линуксе, 64-битной венде. Конкретно по языку вроде больше ничего не спрашивали. Был ещё тест на С++, вроде брейнбенчевского. Я бы почитал кернигана и ритчи часика два, те части, в которых не на 100% уверен в своих знаниях.

Legioner ★★★★★
()

Синтаксис, естественно, весь нужно знать (ANSI, С99 у меня ни разу не спрашивали).
1) Оборачивание односвязного списка.
2) Массивы и указатели. Например, int a[10]; какой тип имеет а и чему равен sizeof(a), то же самое для int *b = &a[0];
3) 2[«abc»]. Корректна ли такая запись, если да, то почему?
4) Задачки на побитовые операции. Типа, берётся число, над ним извращаются побитовыми операциями и сдвигами, надо сказать, что получится.
5) Что-то было на макросы, сейчас уже не помню.
6) struct a { int aa; char bb; }; Чему будет равен sizeof(struct a) на 32-разрядной машине?
7) Могут что-нибудь про компилятор или вообще про linux спросить. Просто, чтобы посмотреть, насколько в теме, ты же не в сферическом коне будешь проги писать.
Так, навскидку, больше ничего не вспоминается. Почитай k&r перед собеседованием

Gvidon ★★★★
()
Ответ на: комментарий от urxvt

Мде, меня тоже спрашивали как перевернуть строку и какова алгоритмическая сложность.

true_admin ★★★★★
()

А что за курсы, если не секрет?

Gvidon ★★★★
()
Ответ на: комментарий от Yareg

А можешь третий пункт пояснить и сказать ответ?

2[«abc»] то же самое, что «abc»[2]

NightmareZ
()
Ответ на: комментарий от Yareg

> А можешь третий пункт пояснить и сказать ответ?
2[«abc»] = *(2 + «abc») = *(«abc» + 2) = «abc»[2] = 'c'
Как-то так.

Gvidon ★★★★
()
Ответ на: комментарий от Reset

Блин, я её запустил и получил ответ совсем не тот, что ожидал(

Я думал, по описанию fork, что оба процесса пойдут с одного адреса...( А оно что, main() заново запускает? Или как?

Yareg ★★★
()

требуется как минимум upper-intermediate при прохождении интервью на C. Отрабатывай произношение.

Lee_Noox ★★★
()
Ответ на: комментарий от Yareg

Наверное сохраняет строку в буфере прежде чем вывести, форкается, а затем завершается и выводит строку уже из двух буферов.

e3d08dff
()
Ответ на: комментарий от Yareg

Я вот тоже...

Блин слабые еще знания.

hibou ★★★★★
() автор топика
Ответ на: комментарий от Gvidon

Ниасилил только 3. При том, что на С последний раз писал лет пять назад, да и как-то в ночных толксах сильно облажался в пьяном виде на хелловордном коде. Ой, не то спрашивают. Лучше бы давали примеры неочевидно индусского кода и спрашивали бы где ошибка, с правильным ответом - «в днк быдлокодера».

redgremlin ★★★★★
()
Ответ на: комментарий от redgremlin

> Ниасилил только 3.
А я и не говорил, что это сложные вопросы. Но меня реально об этом спрашивали. И я реально на некоторые не ответил :)

Gvidon ★★★★
()
Ответ на: комментарий от Cancellor

Это я догадался.

Может покажусь совсем глупым, но я не понимаю, почему лишь 2 раза. И собственно, почему поверх. Почему без \n успевает печататься 2 раза, а с \n поверх?

hibou ★★★★★
() автор топика
Ответ на: комментарий от Reset

Хм, действительно, только

incompatible implicit declaration of built-in function ‘printf’


А где почитать, что компилятор без инклудов и -l* понимает?

redgremlin ★★★★★
()
Ответ на: комментарий от redgremlin

> компилятор без инклудов

int func(...) по умолчанию

-l* понимает?

libc линкуется всегда, если явно не запрещать

Reset ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.