5 pytań rekrutacyjnych dla programisty SQL + odpowiedzi #56
HTML-код
- Опубликовано: 22 май 2020
- Cześć,
Jeśli chcesz zmienić pracę, zdobyłeś już trochę umiejętności to czas sprawdzić czy umiesz wystarczająco dużo. Zapraszam do zapoznania się z 5 najczęściej zadawanymi pytaniami na rozmowie o pracę dla sql developera.
Zapisy na kurs: www.nieinformatyk.pl/
Blog: www.nieinformatyk.pl/blog
Facebook: / nieinformatyk
Instagram: / nieinformatyk
Twitter: / nieinformatyk
Zasubskrybuj mój kanał: ruclips.net/user/nieinformatyk...
#sql #rekrutacja #pytania
Witaj na moim kanale :)
Jestem programistą baz danych Oracle oraz developerem hurtownii danych (ETL). W tym miejscu dzielę się z oglądającymi wiedzą dotyczącą relacyjnych baz danych, praktycznych technik pisania SQL oraz optymalizacji kodu PL/SQL. Jeśli chcesz zdobyć praktyczną i rzetelną więdzę o bazach danych to trafiłeś na właściwe miejsce.
Więcej informacji o baza danych znajdziesz zupełnie ZA DARMO na www.nieinformatyk.pl Наука
Robisz super robotę.
dziękuję :)
Dobre filmy, kręnć więcej.
dzięki :)
Fajny kanał :) Mam dwa pytania:
1) Przy aplikacji na programistę SQL (mam na myśli juniora, pierwszą pracę), wymagane jest jakieś portfolio projektów? Jeśli tak to jakie to mogą być projekty?
2) Jakie mniej więcej są widełki dla początkującego programisty SQL? Tj. jaką kwotę mógłbym zażądać jako żółtodziób nie przesadzając ani w dół, ani w górę? 3 do 4 tys brutto byłoby odpowiednią kwotą?
1) Ja nigdy nie byłem o to pytany. Jeśli chcesz się wyróżnić to stworzyłbym przykładowy model bazy danych - lekcja 10 kursu (jeśli masz dostęp) nieinformatyk.pl/kurs/287/poznaj-swiat-baz-danych
2) Na wynagrodzenie wpływa wiele rzeczy - trudno zgadywać. 3-4 tys z pewnością wydają się być kwotą nieprzesadzoną, jeśli wziąć pod uwagę wyłącznie średnią zarobków programistów :)
@@nieinformatyk Dzięki wielkie za odpowiedź :) Co do drugiego pytania to wiem, że odpowiedź jest trudna. Generalnie miałem na myśli mniej więcej sensowne widełki w których warto by negocjować pierwsze wynagrodzenie, przy jednoczesnym nieodstraszeniu potencjalnego pracodawcy. ;)
@@adriansajdak535 i jak Ci się udało? :)
dobry gościu z ciebie
Dziękuję :)
TRIGGER działa :)
dzięki ze testy :)
#zasieg
dzięki :)
6:03 Nie mogę się zgodzić. Na poziomie REPEATABLE READ blokujesz część tabeli za pomocą SELECT do czasu zakończenia transakcji. Wtedy żaden inny użytkownik nie może nie może zmienić zablokowanych danych za pomocą update/delete. Także mimo, że SELECT to tylko odczyt to można doprowadzić do blokowania tabeli. (MSSQL)
Dziękuje za uwagę. Zacznę częściej wspominać o jakiej implementacji mówię lub będę mówił też o rozwiązaniach z innych silników to unikniemy takich nieporozumień :)
@@nieinformatyk Ale chyba w Oracle Repetable powinno zadziałać tak samo :)
Czytanie danych w Oracle nie powoduje żadnych blokad - chyba, że jawnie będziesz chciał to zrobić pisząc select for update.
@@nieinformatyk Nie no, nie możliwe :)
Zrób taki teścik:
Włącz poziom izolacji Repeatable Read w jednej sesji. Zrób begin tran potem Select * From Tabela
W drugiej sesji zrób update na którąkolwiek odczytaną daną we wcześniejszym selecie. Zobaczysz, że nie uda Ci się tego zrobić dopóki nie zacommitujesz wcześniejszego selecta :) (Uprzedzam, że insert się wykona, to tzw dane fantomowe).
Ten poziom zapewnia powtarzalny odczyt w ramach transakcji :)
Niestety nie mam środowiska u siebie oraclowego, bo sam bym to sprawdził :)
@@ukaszpytel334 Możliwe.
Każda baza ma kilka poziomów izolacji(standard ANSI definiuje 4, ale nie wszystkie z nich obowiązują w każdej implementacji). Niektóre implementacje mają poziomy izolacji jakich nie ma w standardzie. Domyślny poziom izolacji w bazie Oracle to read commited i on nie prowadzi do blokad podczas selecta. Gdybym ustawił inny poziom izolacji to oczywiście mechanizm mógłby się zachować tak jak mówisz, ale to nie jest domyślne zachowanie.
Poza wyjątkiem(select for update oraz zmianą poziomu izolacji) select NIE BLOKUJE ŻADNYCH DANYCH - poczytaj o undo data :)
Czym rożni się programista sql od analityka baz danych? Czym rozni się sama praca, jak i zakres materiału nauki do tych stanowisk?
Termin "programista SQL" to trochę gra słów - chcąc się przyczepić to SQL nie jest językiem programowania tylko językiem zapytań :) O analityku baz danych nigdy nie słyszałem. może chodzi Ci o analityka biznesowego/systemowego?
W skrócie: analityk potrzebuje wiedzy biznesowej + podstaw SQL. Programista baz danych potrzebuje podstawowej wiedzy biznesowej + SQL + języka programowania w bazach danych(PL/SQL, T-SQL).
@@nieinformatyk Jak nazywa się stanowisku, na ktorym uzywa się glownie sql i excela?
@@guu6365 analityk danych/data analyst
Aż prosi się na końcu odcinka dodać prośbę aby każdy po rozmowie się pochwalił czy któreś z tych pytań (i które jeśli tak) padło na rozmowie. :)
Jak nie zapomnę to napiszę jak było u mnie.. 😅
Mam pomysł by zrobić bazę wiedzy z pytań rekrutacyjnych z SQL. Jak czas pozwoli to pomysł zrealizuję :)
Być może będzie to bonus do: promo.mistrzsql.pl/
No to tak: stanowisko junior, żadnego pytania 😅aczkolwiek pojawiło się zadanie, w którym trzeba było użyć having zamiast where (funkcja SUM), także poniekąd sprawdziło się pytanie z innego odc. jednak polecam każdemu uwzględnić sprawdzanie tej wiedzy nie w pytaniu bezpośrednim a już w praktyce pisząc jakieś zapytanie, mnie to niestety zgubiło choć na samo pytanie czym się różni where od having bym odpowiedziała.😉
Na Jakie zarobki może liczyć doświadczony SQL developer?
To zależy od wielu czynników: firmy, miasta, rodzaju umowy, lat doświadczenia :) Z moich osobistych obserwacji uważam, że "na czysto" możesz liczyć na wynagrodzenie od 6 000 do 15 000 zł miesięcznie. Duże widełki, bo bardzo ogólne pytanie :)
@@nieinformatyk Chodziło mi o taką osobę która pracuje w warszawie i ma 5 lat doświadczenia jako sql developer.
@@grzegorzko55 obstawiałbym 8 000 -13 000 na rękę, najwięcej jest tych w okolicy 10 000/11 000
Warto dodać o jakiej formie zatrudnienia mowa :)
9:45 W MSSQL wycofasz truncate za pomocą rollback wraz z kompletem danych. Dopisz proszę, że mówisz o Oracle bo poślesz jakiegoś studenciaka na rozmowę i zawali temat ^^
Pozdrawiam
Nie tylko Oracle tak działa, Mysql też nie wycofa truncate. Dzięki za spostrzegawczość, zwrócę na to uwagę w kolejnych nagraniach.
@@nieinformatyk Też kiedyś byłem w szoku gdy sprawdziłem i cofnęło trana :)
Co system to rozwiązanie, wychodzi na to, że trzeba poznać je wszystkie :)
Dostałbym jeszcze, że delete w porównaniu do truncate nie zeruje ID
Wyjaśnisz co znaczy zerować id, bo nie rozumiem? Jeśli wartość jest nadawana z sekwencji to nigdy nie zwraca 2 razy tej samej liczby
@@nieinformatyk nie wiem o czym piszesz, ale koledze chodziło o:
ALTER TABLE my_table AUTO_INCREMENT=2000
I później masz pusta tabele coś dodajesz a tu pierwszy rekord ma numer pół miliona
@@kamilnowak9750
No to zróbmy test :)
1. DELETE
CREATE TABLE test (
a number generated always as identity
, b varchar2(1)
);
INSERT INTO test (b) VALUES ('a');
SELECT *
FROM test;
wynik: 1 a
delete from test;
commit;
SELECT *
FROM test;
--wynik: brak wyników, tzn. pusta tabela
INSERT INTO test (b) VALUES ('a');
SELECT *
FROM test;
wynik: 2 a
DROP TABLE test;
WNIOSEK: delete nie wyzerował identyfikatora, bo kolejne dodanie rekordu wstawiło wartość 2 a nie 1
2. TRUNCATE
CREATE TABLE test (
a number generated always as identity
, b varchar2(1)
);
INSERT INTO test (b) VALUES ('a');
SELECT *
FROM test;
wyniki: 1 a
truncate table test;
SELECT *
FROM test;
wyniki: brak rekordów
INSERT INTO test (b) VALUES ('a');
SELECT *
FROM test;
wyniki: 2 a
WNIOSEK: Truncate działa tak samo jak DELETE.
Może to kwestia implementacji. Mówiłeś o mysql czy Mssql? Ten przykład to Oracle :)
bylo by lepiej jakby kazdy punkt byl rozpisany i odpowiedziany na tablicy
dzięki za uwagę :)
A Ty piszesz też coś w pracy w jakimś języku? W sensie w javie, c++? Bo tak szczerze wszystko o czym mówisz muszę robić jako programista. Przy czym bazy to malutki ułamek
Tak, w PL/SQL, ale nie wiem czy się liczy do Twojej kategorii języków programowania. W przyszłą sobotę o 10.00 pojawi się odcinek, który może Cię zainteresować. Wyjaśniam tam czym się zajmuję oraz co ważniejsze opowiadam o roli baz danych w systemach informatycznych. Bazodanowiec to niszowy fragment rynku IT :)
@@nieinformatyk PL/SQL nie liczy się. Hibernate wspiera PL/SQL. Miałem na myśli jave z JPA, C# z link, pythona czy C++. To że piszesz procedurę w SQL, programowaniem bym nie nazwał
Dane się wyciąga z bazy, albo i kilku roznych i później pisze program który je analizuje, odpala jakieś algorytmy, sztuczne inteligencję, czy nawet najprostsza grafana i wypasione wykresy dla biznesu z raportami w pdf i pięknymi grafikami oczywiście generowanymi automatycznie przez kod w języku programowania i specjalnej bibliotece, mam znajomych co u mnie tylko tym się zajmowali
Ale nawet mnie często ktoś prosi o jakiś raport, to wyciągam wszystko przez jave, parsuje filtruje i zapisuje do pliku
Nie wyobrażam sobie tego robić z PL/SQL ale może jestem ignorantem i nie znam dobrze baz