Data structures and algorithms I actually used while working at tech companies
As an engineer who works on security software, here&#x27;s what I&#x27;ve empirically used on the job:<p>1. Tree&#x2F;graph traversal (certificate validation and a couple other random places)<p>2. Using, not implementing, hash tables<p>3. Generators&#x2F;iterators&#x2F;streams: minimizing the number of unnecessary list traversals or allocations made when you have to shovel data around<p>4. Circular buffers: specifically in low latency, high throughput applications<p>5. Some exotic string search algorithms in a very specific, highly performance sensitive inner loop<p>6. Database query performance tuning<p>7. Every now and then something vaguely reminiscent of dynamic programming comes up, but it&#x27;s never an actual dynamic programming problem, it&#x27;s just a &quot;cache results of expensive operations&quot; problem.<p>For my job you need something exotic once in a blue moon, and when that happens you Google for someone else&#x27;s research. You&#x27;re not making up algorithms on your own. If you want to test that someone can handle algorithm-heavy situations like case #5, you should be testing their paper reading and ability to implement that paper, not their ability to solve an algorithms puzzle.<p>Also relevant to my job: if you find yourself implementing cryptographic algorithms, you&#x27;re almost certainly doing it wrong. You shouldn&#x27;t be implementing cryptographic algorithms. When I need them, my job is to vet and correctly use an expert implementation.