This is just a quick plug for HackerRank. My boss (well one of my bosses) sent me the link because he wanted me to take a look at it as a way of helping to screen applicants for programming jobs. I quickly went from, “Hey, this is kind of cool.” to, “Meh, the problems don’t seem quite right for screening”.
Then I had two weeks off over the holidays. I wound up spending some time each morning solving puzzles, and my opinion changed. I was hooked.
The contests are a little heavy on the “Do you know the trick?” sorts of problems. Maybe I’m just miffed that I usually don’t know the trick, but it is the kind of stuff you likely won’t ever use except in one of these contests. Still, there were some decent problems lurking in the many, many collections present on their site.
Their section on Functional Programming actually prompted me to try and learn some modern functional programming languages. So I played a bit with Haskell and OCaml over break. (I also learned that there is a bit of a war between the Haskell and OCaml people. I’m not taking sides.)
I also started a ten days of statistics tutorial. I’ve had statistics, but it looked interesting and seemed like it would be fun. In fact, that tutorial is partially responsible for this blog. I wrote up some notes on what I’d learned, and that sent me searching for simple math-aware editors, which led to TeXmacs and Markx, and eventually to the software I am blogging with now, as described in my very first post on this blog.
That tutorial kind of bogged down on Day 4, however. Their explanation of Binomial Distributions was not exactly a model of clarity for me. I then tried to write it up myself, and ran into problems as well, so maybe it isn’t something that digests down to a page or two very easily. In any case, I never got past that day. I could have just worked the problems and gone on, but part of the fun was writing up the notes that “proved” that I really understood.
A lot of the problems (I think they call them “challenges”) are quick and straightforward. They run contests at least once a week, but as I said, in my experience, they tend to be heavily weighted towards finding or knowing the trick. I eventually worked my way through to a C++ challenge that was just about the right difficulty for (part of) a preinterview screening question.
The Attribute Parser challenge involved parsing HTML-like tags and attributes. It is in the C++ strings section of the site, but it involves more than just strings. You’ll have to find a nice way of organizing and searching a symbol-table (essentially) as well.
So anyway, I’ve had a lot of fun with this website, and we probably will be at least testing it for candidate screening in the near future.