LINUX.ORG.RU

Embedded C: вопросы на собеседованиях

 , ,


4

5

Я знаю, на лоре много сишников и ембедщиков. А проводящих собеседования на работу еще больше.

Так вот, уважаемые отбиральщики мужей у жен специалистов на должность embedded C developer, что вы обычно на собесах спрашиваете?

Особенно интересны вопросы по Сишке с намеком на завалить кандидата — неочевидные или на хорошее знание стандарта.

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



Последнее исправление: untitl3d (всего исправлений: 3)

Ответ на: комментарий от alysnix

Да что ж тут непонятного в постановке задачи, был 2-м с конца, стал 2-м с начала.

Привет world 😀!

!😀 dlrow тевирП

Я вот сам задумался «а как?». Как работают strlen, strstr всякие с utf-8? Без них будет сложно.

bugs-bunny
()
Ответ на: комментарий от bugs-bunny

Ну как то так, по-бырому. Работает. Но такое давать на собесе без Wiki и компа...

// See also <https://ru.wikipedia.org/wiki/UTF-8>

#include <stdio.h>
#include <stdlib.h>

const char in_str[] = "Привет world 😀!";

char* revert(char* str)
{
	char	*d,		// result string
			*ds, 	// current byte of symbol in result
			*s, 	// byte ptr in source symbol
			*ss,	// start byte ptr in source symbol
			*se;	// end byte ptr in source symbol

	for( se=str; *se; se++ ); 				// find 0 terminator
	ds = d = (char*) calloc(1,se-str+1);	// allocate result string
	for( ss=se; ss>str; )					// while not reached start of string
	{
		se = ss;							// previous start char
		ss--;								// char before next
		for( ;(*ss & 0xC0) == 0x80; ) ss--; // find 0's octet
		for( s=ss; s<se; ) *ds++ = *s++;	// copy utf-8 char
	}
	return d;
}

int main(int argc, char **argv)
{
	char *d;

	printf("%s\n",in_str);
	d = revert((char*)in_str);
	printf("%s\n",d);

	free(d);
	return 0;
}
bugs-bunny
()
Ответ на: комментарий от fsb4000

@Legioner поэтому программы на Rust всегда будут тормознее программ на С.

Не будут, при необходимости написать нестандартные строки как и в C++ проблем нет, да они уже и написаны https://crates.io/crates/widestring . Ну и в си если писать кроссплатформенно тоже будут преобразования кодировок обязательно.

@alysnix прав. Сам посмотри, вместо одного системного вызова write, будут исполняться 50 строк кода преобразования utf-8 в utf-16 на каждый вывод в консоль.

На фоне тормозной windows консоли незаметно будет. В последних десятках кстати A версии функций уже понимают utf-8, хотя внутри наверно тоже самое преобразование, но возможно более эффективное.

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