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