Published Nov 10, 2020

Episode 434: Steven Skiena on Preparing for the Data Structures and Algorithm Job Interview

Steven Skiena shares expert insights on mastering algorithm design and data structures for technical interviews, highlighting practical exercises, collaborative learning, and understanding core principles over memorization to solve complex problems and excel in job interviews.
Episode Highlights
Software Engineering Radio - the podcast for professional software developers logo

Popular Clips

Episode Highlights

  • Fundamentals

    and explore the foundational data structures like arrays, hash tables, and trees, highlighting their unique characteristics across programming languages. Skiena emphasizes the importance of understanding these structures, as they form the backbone of efficient algorithm design. He notes, "Different programming languages make a certain degree of algorithm more visible or more transparent than others," which underscores the need for programmers to grasp these concepts deeply 1. Conrad adds that recognizing these structures in various forms, such as JavaScript's objects or Python's dictionaries, is crucial for effective coding 1.

       

    Advanced Structures

    Advanced data structures like priority queues and graphs are essential for solving complex problems efficiently. Skiena explains that priority queues allow for operations such as inserting items and retrieving them in a sorted order, which is vital for tasks like job scheduling 2. He also highlights the importance of understanding graph algorithms, such as Dijkstra's algorithm, for finding the shortest path in networks 3. Skiena states, "There's a small number of algorithm problems that are relatively common, that tend to appear in a lot of different settings," emphasizing the value of mastering these concepts for technical interviews.

       

    Real-World Applications

    Understanding data structures is crucial in real-world applications, from algorithm design to interview preparation. Skiena argues that while algorithms and data structures are beautiful and useful, the emphasis on them in interviews may not always be the best measure of a software engineer's capabilities 4. He contrasts hashing with text compression, explaining that hashing provides a unique identifier for documents, which is essential for tasks like plagiarism detection 5. Skiena remarks, "It's enough that it's sort of unique, and so you can tell whether you've seen it before," highlighting the practical utility of hashing in various scenarios.