Podcast: Play in new window | Download
Subscribe: Apple Podcasts | Spotify | TuneIn | RSS
On this episode we discuss algorithms, puzzles and how to approach them when asked to solve one in the interview process. We discuss many of the problems programmers face when being asked to solve these types of problems as well as steps to alleviate some of these common issues. We also provide a number of resources for sharpening your problem solving skills and of course our favorite tips!
Sponsored by Infragistics
This episode of the Coding Blocks podcast was sponsored by Infragistics. Sign up for their webinars coming up at the end of April to learn about moving from the Desktop to the Web by going to:
http://www.infragistics.com
Also, check out what’s new by heading to:
http://www.infragistics.com/whats-new
News / Updates
SwanseaCon 2015 – Agile Development and Software Craftsmanship Conference
Andy Joiner pointed us towards Swansea Con – September 7, 8 in Swansea, South Wales
http://swancon.co.uk/
Shout Outs!
Thanks to @ThomasDane for the review and here’s the shout out for he and his buddies at @Ansarada
http://www.ansarada.com/
Thank you for all the reviews! If you haven’t left one yourself, please go here and do so!
http://www.codingblocks.net/review
Want to know what a closure is and how it’s useful in Javascript?
Watch the two videos on Javascript Closures – about 8 minutes each
Sharpen your programming skills, while making money?!
Finding vulnerabilities and making cold hard cash for your efforts at Pwn2Own
What is Pwn2Own?
http://en.wikipedia.org/wiki/Pwn2Own
BIG winner at 2015’s Pwn2Own:
http://arstechnica.com/security/2015/03/all-four-major-browsers-take-a-stomping-at-pwn2own-hacking-competition/
https://twitter.com/hashtag/lokihardt
Michael uninstalls Resharper?!?
There’s been some confusion about who each of us are.
Allen Underwood – Guy on the left
Michael Outlaw – Guy in the middle
Joe Zack – Guy on the right
Progress Updates on New Year’s Resolutions
Michael – Nada
Joe – Mostly Nada
Allen – Yet another tangent – TypeScript – pretty impressive for people coming from “real” OO languages like Java, C#, etc.
http://www.typescriptlang.org/
A Somewhat Failed Segue – Kind of…Algorithms
What is an algorithm? As per https://www.google.com/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=define:+algorithm
“a process or set of rules to be followed in calculations or other problem-solving operations, especially by a computer.”
It’s essentially the recipe you have to follow to get your expected output.
Your program / code is your implementation of the algorithm, not the algorithm itself.
Ain’t Nobody Got Time for That
Twitter Question…
Is a Design Pattern an Algorithm? If not, what is it?
Popular Puzzles
Fizz Buzz
http://en.wikipedia.org/wiki/Fizz_buzz
http://c2.com/cgi/wiki?FizzBuzzTest
Why do so many programmers fail at outputting 100 to 1 and what’s the correlation to other pieces of the interview?
http://www.thousandtyone.com/blog/EasierThanFizzBuzzWhyCantProgrammersPrint100To1.aspx
How to Solve Algorithm / Puzzle Problems in an Interview, or on the Job
- Determine the problem that’s attempting to be solved….this part is so important – really take the time to FULLY understand the problem so you can come up with an appropriate solution
- Write down the steps you would take in order to solve the problem – creating your algorithm – DO NOT WRITE CODE at this step – this is simply the thought process
- Turn your steps from #2 into pseudo-code – if you have a hard time not writing actual code, check out this resource:
http://users.csc.calpoly.edu/~jdalbey/SWE/pdl_std.html - Now it’s time to replace your pseudo-code with actual code – again, refer to the link in step #3 for some example pseudo-code to real code transitions
- Refine – take a step back and look if there are pieces that can be simplified or removed altogether. If there are, then start cleaning up your code from step #4 until you get to the promised land!
Suggested Resources
Listen to the Serial Podcast – It’s Incredible
http://serialpodcast.org/
Project Euler – Mathematical and Programming Challenges
https://projecteuler.net/
Joe is a LEVEL 2!
TopCoder – Programming challenges with monetary rewards
http://www.topcoder.com/
Pluralsight Video – By John Sonmez – @jsonmez
http://www.pluralsight.com/courses/developer-job-interviews
Cracking the Coding Interview
http://www.codingblocks.net/get/crackingthecodinginterview
ROSALIND – Learning Informatics and Programming through problem solving
http://rosalind.info/problems/list-view/
Code Golf on Stackexchange – Programming challenges
http://codegolf.stackexchange.com/
Google Code Jam – Solving difficult algorithmic problems
https://code.google.com/codejam
Big thanks to @DreYoung79 for these additional resources!
Exercism.io – deep focus on improving your coding skills
http://exercism.io/
Smarterer.com – skills tests
http://smarterer.com/
Tip of the Week
Michael’s
Git tab completion for commands – turns out this is for Git Bash and not the Git runtime…so it’s kind of a tip, if you’re using Git Bash!
Revised his tip to use one of Allen’s previous – ConEmu!
https://github.com/Maximus5/ConEmu
Joe’s – tip via Andy Joiner – @tekkiesuk
Using a database transaction to test out your queries before you actually run the statement (helpful for updates / deletes) – this helps you do a sanity check before pulling the trigger
Allen’s – Video speed controller – Chrome plugin – tip via Mike Barlow – @bardev
https://chrome.google.com/webstore/detail/video-speed-controller/nffaoalbilbmmfgbnbgppjihopabppdk?utm_source=chrome-app-launcher-info-dialog