Spis treści
Transkrypt
Spis treści
Spis treści O autorach O korektorach merytorycznych Podziękowania Przedmowa Wprowadzenie Rozdział 1. Zanim zaczniesz szukać Poznaj samego siebie Poznaj rynek Podstawowe informacje o rynku Outsourcing Rozwijanie atrakcyjnych umiejętności Doprowadzaj projekty do końca Zadbaj o swój profil internetowy Podsumowanie Rozdział 2. Proces ubiegania się o pracę Znajdowanie firm i kontaktowanie się z nimi Szukanie firm Polecanie Współpraca z łowcami głów Bezpośredni kontakt z firmą Targi pracy Przebieg kwalifikacji Rozmowy przesiewowe Rozmowy kwalifikacyjne w siedzibie firmy Strój Rola rekrutera Oferty i negocjowanie Jak sobie radzić z presją wywieraną przez rekrutera? Negocjowanie wynagrodzenia Przyjmowanie i odrzucanie oferty Podsumowanie Rozdział 3. Różne podejścia do problemów programistycznych Proces Scenariusz Problemy Jakich języków programowania używać? Kluczem jest interaktywność Rozwiązywanie problemów Podstawowe kroki Co robić, gdy się utknie? Analizowanie rozwiązania Zastosowanie notacji dużego O Działanie notacji dużego O Najlepszy, średni i najgorszy przypadek Optymalizacja a notacja dużego O Jak analizować algorytmy przy użyciu notacji dużego O? Który algorytm jest lepszy? Analizowanie zużycia pamięci Podsumowanie Rozdział 4. Listy powiązane Dlaczego listy powiązane? Rodzaje list powiązanych Listy powiązane jednostronnie Listy powiązane dwustronnie Listy cykliczne Podstawowe operacje na listach powiązanych Zapamiętywanie elementu początkowego Przeglądanie listy Wstawianie i usuwanie elementów Zadania związane z listami powiązanymi Implementacja stosu Obsługiwanie wskaźnika do ogona listy powiązanej Błędy w funkcji removeHead Zwracanie elementu listy o określonym numerze od końca Spłaszczanie listy Przywracanie spłaszczonej listy do pierwotnego stanu NULL lub cykl Podsumowanie Rozdział 5 Drzewa i grafy Drzewa Drzewa binarne Binarne drzewa poszukiwań Sterty Typowe sposoby przeszukiwania Metody przeglądania drzew Grafy Zadania dotyczące drzew i grafów Wysokość drzewa Przeglądanie wzdłużne Przeglądanie wzdłużne bez rekurencji Najniższy wspólny przodek Przekształcanie drzewa binarnego w stertę Niezrównoważone binarne drzewo poszukiwań Sześć stopni od Kevina Bacona Podsumowanie Rozdział 6. Tablice i łańcuchy Tablice Języki C i C++ Java C# JavaScript Łańcuchy C C++ Java C# JavaScript Problemy dotyczące tablic i łańcuchów Znajdowanie pierwszego niepowtarzającego się znaku Usuwanie określonych znaków Odwracanie kolejności słów w łańcuchu Konwersje między liczbami całkowitymi i łańcuchami Podsumowanie Rozdział 7. Rekurencja Istota rekurencji Problemy rekurencyjne Wyszukiwanie binarne Permutacje łańcucha Kombinacje łańcucha Słowa telefoniczne Podsumowanie Rozdział 8. Sortowanie Algorytmy sortujące Sortowanie przez wybieranie Sortowanie przez wstawianie Szybkie sortowanie Sortowanie przez scalanie Problemy dotyczące sortowania Najlepszy algorytm sortowania Stabilne sortowanie przez wybieranie Sortowanie przy użyciu wielu kluczy Spraw, by sortowanie było stabilne Optymalizacja szybkiego wyszukiwania Sortowanie naleśników Podsumowanie Rozdział 9. Współbieżność Podstawowe pojęcia wielowątkowości Wątki Wątki systemowe i wątki użytkownika Monitory i semafory Zakleszczenia Przykład użycia wątków Problemy dotyczące współbieżności Aktywne oczekiwanie Producent i konsument Ucztujący filozofowie Podsumowanie Rozdział 10. Programowanie obiektowe Podstawy Klasy i obiekty Dziedziczenie i polimorfizm Konstrukcja i destrukcja obiektów Problemy dotyczące programowania obiektowego Interfejsy i klasy abstrakcyjne Metody wirtualne Wielodziedziczenie Podsumowanie Rozdział 11. Wzorce projektowe Czym są wzorce projektowe? Po co są wzorce projektowe? Wzorce projektowe na rozmowach kwalifikacyjnych Najczęściej używane wzorce projektowe Wzorce kreacyjne Wzorce czynnościowe Wzorce strukturalne Problemy związane z wzorcami projektowymi Implementacja Singletonu Dekorator kontra dziedziczenie Wydajne aktualizacje Obserwatora Podsumowanie Rozdział 12. Bazy danych Podstawowe wiadomości o bazach danych Relacyjne bazy danych SQL Transakcje w bazach danych Problemy dotyczące baz danych Proste zadanie z użyciem języka SQL Baza danych firmowych i pracowniczych Znajdowanie największej wartości bez użycia funkcji regacyjnych Logika trójwartościowa Podsumowanie Rozdział 13. Operacje graficzne i na bitach Grafika Szperanie przy bitach Binarne uzupełnienie dwójkowe Operatory bitowe Optymalizacja wydajności przy użyciu operatorów przesunięcia Problemy graficzne Jedna ósma okręgu Nakładanie się prostokątów Problemy dotyczące szperania przy bitach Big-endian czy little-endian Liczba jedynek Podsumowanie Rozdział 14. Łamigłówki dotyczące mierzenia, liczenia i porządkowania Rozwiązywanie zagadek Docieraj do sedna problemu Nie daj się przytłoczyć Strzeż się prostych problemów Problemy szacunkowe Łamigłówki Liczenie otwartych schowków Trzy przełączniki Przechodzenie przez most Ciężka kulka Liczba stacji benzynowych w USA Podsumowanie Rozdział 15. Łamigłówki graficzne i przestrzenne Najpierw to narysuj Zadania graficzne i przestrzenne Łódź i dok Liczenie kostek Lis i kaczka Palące się lonty Uciekanie przed pociągiem Podsumowanie Rozdział 16. Pytania merytoryczne Przygotowanie Problemy C++ a Java Klasy zaprzyjaźnione Przekazywanie argumentów Makra i funkcje inline Dziedziczenie Automatyczne usuwanie nieużywanych obiektów Aplikacje 32-bitowe a aplikacje 64-bitowe Wydajność sieci Bezpieczeństwo aplikacji sieciowych Kryptografia Tablice mieszające a binarne drzewa poszukiwań Podsumowanie Rozdział 17. Pytania na tematy nietechniczne Po co zadawane są nietechniczne pytania? Pytania Co chciałby Pan robić? Jaki jest Pana ulubiony język programowania? Jaki styl pracy Pan preferuje? Co może Pan powiedzieć o swoim doświadczeniu zawodowym? Jakie są Pana cele zawodowe? Czemu chce Pan zmienić pracę? Ile wcześniej Pan zarabiał? Dlaczego uważa Pan, że powinniśmy Pana zatrudnić? Dlaczego chce Pan pracować w tej firmie? Czy ma Pan jakieś pytania? Podsumowanie Dodatek A. CV CV inżyniera Przykład słabego CV Sprzedaj siebie Pisz zwięźle Zamieść tylko ważne informacje Pisz przejrzyście i bądź konkretny Uwzględnij tylko najważniejsze informacje Zastosuj odwrotną chronologię Wykonaj korektę Poprawiony przykład Menedżerzy i starsi programiści Dostosuj CV do stanowiska, o które się ubiegasz Przykładowe CV Podsumowanie Skorowidz ISBN: 978-83-246-9861-5