Język C - zbiór zadań, pytań na rozmowę kwalifikacyjną
- StaryAnoda_NEW
- User
- Posty: 103
- Rejestracja: środa 04 kwie 2018, 16:48
Język C - zbiór zadań, pytań na rozmowę kwalifikacyjną
Hej
Jakie mieliście pytanie kiedy staraliście się na stanowisko młodszego programisty C, czy tam młodszego programisty systemów wbudowanych?
Oraz jakie byście zadali pytania, kiedy mielibyście za zadanie przeprowadzić taką rozmowę?
Pozdrawiam
StaryAnoda_NEW
Jakie mieliście pytanie kiedy staraliście się na stanowisko młodszego programisty C, czy tam młodszego programisty systemów wbudowanych?
Oraz jakie byście zadali pytania, kiedy mielibyście za zadanie przeprowadzić taką rozmowę?
Pozdrawiam
StaryAnoda_NEW
Re: Język C - zbiór zadań, pytań na rozmowę kwalifikacyjną
Ja bym celował trochę obok - wystarczy dbać o swojego githuba itp i można uniknąć takich pytań o szczegóły, tylko rozmawiać na "wyższym poziomie abstrakcji".
Nowy blog o tematyce embedded -> https://www.embedownik.pl/
- inż.wielki
- User
- Posty: 307
- Rejestracja: niedziela 20 gru 2015, 23:11
Re: Język C - zbiór zadań, pytań na rozmowę kwalifikacyjną
Jak wyżej. Jak idziesz na rozmowę weź swoje projekty. Najlepiej laptopa + jeden albo 2 projekty fizyczne. Wtedy nie powinno być żadnych problemów. Mnie pytali ostatnio o to co się stanie kiedy w mikrokontrolerze zajedziesz sobie pamięć ram. Jak działają przerwania itd
- ZbeeGin
- User
- Posty: 492
- Rejestracja: sobota 08 lip 2017, 17:16
- Lokalizacja: Śląsko-Zagłębiowska Metropolia
- Kontaktowanie:
Re: Język C - zbiór zadań, pytań na rozmowę kwalifikacyjną
inż.wielki pisze:Mnie pytali ostatnio o to co się stanie kiedy w mikrokontrolerze zajedziesz sobie pamięć ram.
Pytanie bez sensu - pewnie podchwytliwe. SRAM - mało który µC ma przecież FRAM lub DRAM jako pamięć operacyjną - to tylko przerzutniki więc nie ma tam nic co by ulegało szybkiemu zużyciu.
@ StaryAnoda_NEW, proponuję nie wykuwać "na blachę" odpowiedzi na znane pytania rekruterów. Powinieneś być w stanie reagować i udzielać odpowiedzi odpowiedniej do toku rozmowy.
Re: Język C - zbiór zadań, pytań na rozmowę kwalifikacyjną
Do pytań z zakresu embedded najlepiej przygotować się z problematycznych kwestii takich jak ograniczona pamięć, przerwania, niezawodność programu. W szczególności:
- przepełnienie stosu (rekurencja, częste przerwania, zagnieżdżanie funkcji)
- slowo kluczowe volatile i różne jego postaci (const, *const, argumenty funkcji)
- makra, prekompilacja czego się da
- crashe programu i jego przyczyny (nieumiejęte operowanie wskaźnikami, mazanie po pamięci)
- rzutowanie struktur i typów na siebie wzajemnie (pola bitowe, struktury, tablice, unie, inty 16,32 bitowe, typy wskaznikowe na zwykłe)
- obsługa przerwań w maszynie stanów
- niezależność od architektury, przenaszalność kodu
- kopiowanie argumentów funkcji na stos, zmiene lokalne
- zmienne statyczne, stałe, inicjalizacja zmiennych, tablic, struktur
- zagadnienia wokół mikrokontrolerów: AD/DA, PWM
A jeśli chodzi o własne projekty na repo GITa - trzeba być pewnym co się pokazuje, bo to może być strzał w stopę
Podejście seniorów na rekrutacji do "młodzieży" może być bardzo surowe ponieważ obecnie, w dobie bezmyślnych "arduinowców" i powszechnych praktyk programowania ctrl+c, ctrl+v trudno zaufać kompetencji rekrutów.
- przepełnienie stosu (rekurencja, częste przerwania, zagnieżdżanie funkcji)
- slowo kluczowe volatile i różne jego postaci (const, *const, argumenty funkcji)
- makra, prekompilacja czego się da
- crashe programu i jego przyczyny (nieumiejęte operowanie wskaźnikami, mazanie po pamięci)
- rzutowanie struktur i typów na siebie wzajemnie (pola bitowe, struktury, tablice, unie, inty 16,32 bitowe, typy wskaznikowe na zwykłe)
- obsługa przerwań w maszynie stanów
- niezależność od architektury, przenaszalność kodu
- kopiowanie argumentów funkcji na stos, zmiene lokalne
- zmienne statyczne, stałe, inicjalizacja zmiennych, tablic, struktur
- zagadnienia wokół mikrokontrolerów: AD/DA, PWM
A jeśli chodzi o własne projekty na repo GITa - trzeba być pewnym co się pokazuje, bo to może być strzał w stopę
Podejście seniorów na rekrutacji do "młodzieży" może być bardzo surowe ponieważ obecnie, w dobie bezmyślnych "arduinowców" i powszechnych praktyk programowania ctrl+c, ctrl+v trudno zaufać kompetencji rekrutów.
Re: Język C - zbiór zadań, pytań na rozmowę kwalifikacyjną
Ja na przykład, miałem za zadanie napisać krótką funkcję, która ma zliczać ilość bitów w zmiennej na przykład int (czyli ile znajduje się "jedynek" w jakiejś zmiennej, na przykład zmienna o wartości 7 to binarnie 0b00000111 czyli 3, 27 to 0b00011011 czyli 4).
Zadanie niby nie trudne, ale czy na pewno?
Zacząłem od użycia operatora przesunięcia bitowego i sprawa prosta.
Tylko, że to miało być napisane bez użycia operatorów przesunięć bitowych, mnożenia i dzielenia.
Na pytanie jakich operatorów mogę użyć otrzymałem odpowiedź, że do dyspozycji są tylko +, -, & oraz |.
Proste? Do dyspozycji miałem tylko mazak i białą tablicę.
Dając Ci jakieś zadanie do wykonania często chcą zobaczyć jak sobie poradzisz, jak wygląda Twoje logiczne myślenie.
Zadawałem pytania, głośno myślałem, próbowałem na różne sposoby i się udało.
Najgorsze jest gdy ktoś powie coś w stylu nie wiem, nie dam rady, to czarna magia.
Może to Ci pomoże. Powodzenia!
Zacząłem tak:
A jak teraz pozbyć się '>>' ?
Zadanie niby nie trudne, ale czy na pewno?
Zacząłem od użycia operatora przesunięcia bitowego i sprawa prosta.
Tylko, że to miało być napisane bez użycia operatorów przesunięć bitowych, mnożenia i dzielenia.
Na pytanie jakich operatorów mogę użyć otrzymałem odpowiedź, że do dyspozycji są tylko +, -, & oraz |.
Proste? Do dyspozycji miałem tylko mazak i białą tablicę.
Dając Ci jakieś zadanie do wykonania często chcą zobaczyć jak sobie poradzisz, jak wygląda Twoje logiczne myślenie.
Zadawałem pytania, głośno myślałem, próbowałem na różne sposoby i się udało.
Najgorsze jest gdy ktoś powie coś w stylu nie wiem, nie dam rady, to czarna magia.
Może to Ci pomoże. Powodzenia!
Zacząłem tak:
Kod: Zaznacz cały
#include <stdio.h>
#define value 27
int bitCount(int val);
int main(void)
{
printf("Ilość bitów '1' w zmiennej %d wynosi %d\n", value, bitCount(value));
return 0;
}
int bitCount(int val) {
int result = 0;
while(val) {
if(val & 1) result++;
val >>= 1;
}
return result;
}
A jak teraz pozbyć się '>>' ?
- ZbeeGin
- User
- Posty: 492
- Rejestracja: sobota 08 lip 2017, 17:16
- Lokalizacja: Śląsko-Zagłębiowska Metropolia
- Kontaktowanie:
Re: Język C - zbiór zadań, pytań na rozmowę kwalifikacyjną
Odwrócić sytuację i użyć dodawania val+val.
Re: Język C - zbiór zadań, pytań na rozmowę kwalifikacyjną
Wystarczy nakladac maskę kolejnych potęg liczby 2 i sprawdzać czy val jest większa od 0. Potęgi można stablicować albo obliczać, zaczynając od n=1: n << 1 = 2 * n = n + n
Re: Język C - zbiór zadań, pytań na rozmowę kwalifikacyjną
anshar pisze:(...)A jak teraz pozbyć się '>>' ?
W sumie ciekawe zadanie na rekurencję, a dalej wstęp do pytań o stos i jego przepełnienie i jak se z tym poradzić...
W każdym razie ja bym zrobił to tak:
Kod: Zaznacz cały
#include <stdio.h>
#define value 27
int bitCount(int val);
int main(void)
{
printf("Ilość bitów '1' w zmiennej %d wynosi %d\n", value, bitCount(value));
return 0;
}
int result=0;
int bitCount(int val) {
if (val==0) return result;
if (val==1) return result++;
if (val>=2)
{
val=val-2;
return result++;
}
bitCount(val);
}
Internet łączy ludzi, którzy dzielą się swoimi zainteresowaniami, pomysłami i potrzebami, bez względu na geograficzne (przeciwności).
BOB TAYLOR, PARC
BOB TAYLOR, PARC
Re: Język C - zbiór zadań, pytań na rozmowę kwalifikacyjną
Fajny pomysł z rekurencją.
Super! A da się bez rekurencji?
Tak na szybko wkleiłem tutaj: https://rextester.com/l/c_online_compiler_gcc
Niestety nie działa.
Super! A da się bez rekurencji?
Tak na szybko wkleiłem tutaj: https://rextester.com/l/c_online_compiler_gcc
Niestety nie działa.
Re: Język C - zbiór zadań, pytań na rozmowę kwalifikacyjną
W tej funkcji nigdy nie dojdzie do rekurencji.
No to ja podam kolejny przykład, ale nie mój bo hakier ze mnie marny, ale z książki pt. "Hacker's Delight" (gdzie nb. algorytmów na to jest chyba ze 20):
No to ja podam kolejny przykład, ale nie mój bo hakier ze mnie marny, ale z książki pt. "Hacker's Delight" (gdzie nb. algorytmów na to jest chyba ze 20):
Kod: Zaznacz cały
#include <stdio.h>
#define value 27
int bitCount(int val);
int main(void)
{
printf("Ilość bitów '1' w zmiennej %d wynosi %d\n", value, bitCount(value));
return 0;
}
int bitCount(int x) {
int n;
n = 0;
while (x != 0) {
n = n+ 1;
x = x & (x - 1);
}
return n;
}
Re: Język C - zbiór zadań, pytań na rozmowę kwalifikacyjną
A tutaj przykład jak przetestować na wszystkich wartościach typu danych (typ countedInteger, tutaj jest 16 bitowy uint). Testowanie odbywa się poprzez porównanie wyników dwóch funkcji - pewnej z operatorem >> i testowanej z ograniczonymi operatorami + &
Kod: Zaznacz cały
#include <stdio.h>
#include <assert.h>
#include <stdint.h>
#define MAX(t) (((0x1ULL << ((sizeof(t) * 8ULL) - 1ULL)) - 1ULL) | (0xFULL << ((sizeof(t) * 8ULL) - 4ULL)))
typedef uint16_t countedInteger;
const int BIT_SIZE = sizeof(countedInteger) * 8;
int countBit(countedInteger v);
int countBitLimitedOperators(countedInteger v);
int countFunctTest();
int main() {
countFunctTest();
return 0;
}
int countFunctTest() {
uint64_t i;
uint64_t max = (uint64_t)MAX(countedInteger);
for(i = 0; i < max; ++i) {
assert(countBit(i) == countBitLimitedOperators(i));
}
}
int countBit(countedInteger v) {
int count = 0;
while(v > 0) {
count += v & 1;
v >>= 1;
}
return count;
}
int countBitLimitedOperators(countedInteger v) {
int count = 0;
int bitSize = BIT_SIZE;
int pow2 = 1;
while(bitSize-- > 0) {
count += (v & pow2) > 0 ? 1 : 0;
pow2 = pow2 + pow2;
}
return count;
}
Re: Język C - zbiór zadań, pytań na rozmowę kwalifikacyjną
No i pięknie panowie!
Na rozmowie o pracę doszedłem do takiej postaci:
Muszę zerknąć do tej książki pt. "Hacker's Delight" (gdzie nb. algorytmów na to jest chyba ze 20):i!
Na rozmowie o pracę doszedłem do takiej postaci:
Kod: Zaznacz cały
int bitCount(int value) {
int result=0;
while(value) {
value &= value--;
result++;
}
return result;
}
Muszę zerknąć do tej książki pt. "Hacker's Delight" (gdzie nb. algorytmów na to jest chyba ze 20):i!
Re: Język C - zbiór zadań, pytań na rozmowę kwalifikacyjną
Kilka przykładów starej dobrej szkoły można znaleźć tutaj: https://graphics.stanford.edu/~seander/bithacks.html
Re: Język C - zbiór zadań, pytań na rozmowę kwalifikacyjną
Kod: Zaznacz cały
...
value &= value--;
...
Mam poważne wątpliwości co do tego wyrażenia. IMO punkt sekwencyjny jest za średnikiem, a więc wynik wyrażenia jest zależny od kompilatora.
- ZbeeGin
- User
- Posty: 492
- Rejestracja: sobota 08 lip 2017, 17:16
- Lokalizacja: Śląsko-Zagłębiowska Metropolia
- Kontaktowanie:
Re: Język C - zbiór zadań, pytań na rozmowę kwalifikacyjną
Zaczyna się robić mocny off-topic...
- mokrowski
- User
- Posty: 190
- Rejestracja: czwartek 08 paź 2015, 20:50
- Lokalizacja: Tam gdzie Centymetro
Re: Język C - zbiór zadań, pytań na rozmowę kwalifikacyjną
Ja zaczynam od bardzo prostego pytania lub polecenia.
Proszę określi czy i jak podany program się kompiluje, jakie ma błędy i w jaki sposób należy go poprawić.
Po tym jak ktoś odpowiada, ile znajdzie błędów, czy odróżnia ostrzeżenia od błędu, określa czy coś jest w standardzie a co nie jest... będę od razu wiedział z kim mam do czynienia
Na drugi ogień idzie pytanie:
Czy to jest poprawne i jak będzie działało a jeśli nie jest poprawne to jak poprawić by działało?
Po tych dwóch pytaniach 50-70% odpada i nie tracę czasu.
Proszę określi czy i jak podany program się kompiluje, jakie ma błędy i w jaki sposób należy go poprawić.
Kod: Zaznacz cały
main() {
char * msg = "Hello C!\n";
printf(msg);
}
Po tym jak ktoś odpowiada, ile znajdzie błędów, czy odróżnia ostrzeżenia od błędu, określa czy coś jest w standardzie a co nie jest... będę od razu wiedział z kim mam do czynienia
Na drugi ogień idzie pytanie:
Czy to jest poprawne i jak będzie działało a jeśli nie jest poprawne to jak poprawić by działało?
Kod: Zaznacz cały
#include <stdio.h>
int main(void) {
char * msg = "babol";
msg[0] = 'r';
msg[1] = 'o';
puts(msg);
return 0;
}
Po tych dwóch pytaniach 50-70% odpada i nie tracę czasu.
,,Myślenie nie jest łatwe, ale można się do niego przyzwyczaić" - Alan Alexander Milne: Kubuś Puchatek
Re: Język C - zbiór zadań, pytań na rozmowę kwalifikacyjną
Ja polecam też przeczytać artykuł jak ten https://cvwork.pl/pytania-na-rozmowie-kwalifikacyjnej/ w którym są zagadnienia dość proste, ale też kilka skomplikowanych i podchwytliwych pytań na rozmowy kwalifikacyjne.
Wróć do „Skąd czerpać wiedzę na temat języka C?”
Kto jest online
Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 1 gość