salary experience, discussing, 196–198
salary history, discussing, 199
salary, negotiating, 12–13
salary range, obtaining from the interviewer, 197
salary review, having in six months, 198
scan conversion, 147
scanner. See token scanner
schema, 131, 132–133
screeners, examining prospective job applicants, 5
screening interviews, 9–10
search algorithms, searching for a particular node, 59
searches, common invoking trees, 59
security by obscurity, 190
SELECT SQL statement, 133–135
selling yourself in a resume, 206
semaphores
avoiding busy waiting, 113
described, 108–109
kinds of, 108
senior developers, resumes for, 212–218
senior position, stressing management skills and experience, 212
Shape class, 123
shapes library for a vector-based drawing application, 123
shared key cryptography. See symmetric key cryptography
shared resources, concurrency issues involving multiple, 117
shift operators, 145, 146
short-term projects, compared to long-term, 2
side project, working on, 4
sign bit in binary two’s complement notation, 145
sign extension, when shifting right, 146
signing bonus, exploding, 12
Simple SQL problem, 136–137
single inheritance
limiting classes to, 128
as restrictive, 129
single mask algorithm, compared to multiple, 156
single-threaded coding, 107
singly-linked lists, 25–26
small company, working for, 2
social networking sites, 3, 7
software architect, 2
software development firms, working for, 4
software development, offshoring of, 3
solutions
analyzing, 20–23
explaining to the interviewer, 18
obvious and less-obvious to interview problems, 82
wrong occuring first to most people, 172
source position, tracking for the read location, 77
spatial problems, 174–184
spatial visualization problems, 176
special cases
exercises on, 39–40
identifying, 36
special-case solutions, interview problems with less-obvious, 82
specific answers, preferred to knowledge questions, 186
SQL (structured query language)
highlights of, 132–135
use of ternary logic, 141
sqrt function, using, 148
Stack Implementation problem, 30–35
stack-based interactive routine, implementing, 92
stacks
described, 30
iterative implementation for storing data on, 63–64
as a last-in-first-out data structure, 64
states. See attributes
static arrays
Java arrays as, 69
in most dynamic array implementations, 68
strcpy function in C, 71
string class, immutable in C#, 77
String class in C#, 73
string class in C++, 72
String class in Java, 72
string function, designing an in-place reverse, 82
string problems, 73–88
StringBuffer class in Java, 72
StringBuilder class in Java, 72
strings
as closely related to arrays, 67
converting signed integers back into, 85–88
converting to signed integers, 83–85
described, 71–73
printing all possible combinations of characters in, 97–100
printing all possible orderings of the characters in, 95–97
reversing in place by exchanging characters, 82
reversing the order of words in, 79–83
storing internally as arrays, 71
truncating in C, 71
string-to-integer routine, converting a string to a signed, 83–85
strlen function in C, 71
struct, declaring for a linked list element, 31
structured query language. See SQL
subclass in inheritance, 122
subquery, using, 138
subtasks, tasks defined in terms of similar, 89
subtree property, as conducive to recursion, 58
subtrees, thinking in terms of, 61–62
suit, as overkill for a technical job interview, 11
SUM aggregate, using, 138
symmetric key cryptography, compared to public key cryptography, 189–190
synchronized keyword, creating a monitor in Java, 110–111
system programmers, 1
system threads
described, 108
versus user threads, 108–109
System.array abstract base class in C#, 70