raganwald
(This is a snapshot of my old weblog. New posts and selected republished essays can be found at raganwald.com.)

Wednesday, July 12, 2006
  The worst interview question I've never been asked


What does this code do?

perl -e '$i=$ARGV[0];$i++while("."x$i)=~/^(..+?)\1+$/;print"$i\n";' 90



(code snarfed from GuyWithLag on reddit.)

Labels:

 

Comments on “The worst interview question I've never been asked:
Extremely cool explanation of how it works.

via google: 'perl one liner next prime'
 
"It gets refactored. If it can't get refactored, it gets documented."
 
Next prime?! Holy crap, I must have no clue how to read perl. Oh wait, I don't have a clue.
 
What does it do? It makes my eyes bleed, that's what.
 
I don't think that's a bad first-round (maybe phone-screen) question, provided the interviewer explains all parts of the syntax with which the candidate is unfamiliar.
 
provided the interviewer explains all parts of the syntax with which the candidate is unfamiliar.

If you're being asked this question, I'll bet that the company wants you to know the syntax of the language.

Bluntly put, if you 'know Perl' in the sense that you can write a VB program in your head and translate it to Perl, you don't know Perl.

To be a Perl programmer, you have to 'get' the syntax and the style. Regular expressions are your first choice for tasks, not an obscure library function.

A one-liner like this is a bit extreme, but it isn't out of reach for an actual Perl developer.
 
Oh, that's sick. Clever though--it tries the small factors first. It's not even all that obfuscated, if you're any good at regular expressions.

The way I figure it, questions like this are only fair if the candidate claims guru-level Perl knowledge.

I mean, if somebody claimed guru-level Lisp knowledge, they'd certainly get some questions about macros. And self-proclaimed Haskell hackers had better be able to explain monads. So asking a supposed Perl expert an easy regex question isn't unreasonable.

Yeah, I'm frustrated by resume puffery. Why do you ask? :-)
 




<< Home
Reg Braithwaite


Recent Writing
Homoiconic Technical Writing / raganwald.posterous.com

Books
What I‘ve Learned From Failure / Kestrels, Quirky Birds, and Hopeless Egocentricity

Share
rewrite_rails / andand / unfold.rb / string_to_proc.rb / dsl_and_let.rb / comprehension.rb / lazy_lists.rb

Beauty
IS-STRICTLY-EQUIVALENT-TO-A / Spaghetti-Western Coding / Golf is a good program spoiled / Programming conventions as signals / Not all functions should be object methods

The Not So Big Software Design / Writing programs for people to read / Why Why Functional Programming Matters Matters / But Y would I want to do a thing like this?

Work
The single most important thing you must do to improve your programming career / The Naïve Approach to Hiring People / No Disrespect / Take control of your interview / Three tips for getting a job through a recruiter / My favourite interview question

Management
Exception Handling in Software Development / What if powerful languages and idioms only work for small teams? / Bricks / Which theory fits the evidence? / Still failing, still learning / What I’ve learned from failure

Notation
The unary ampersand in Ruby / (1..100).inject(&:+) / The challenge of teaching yourself a programming language / The significance of the meta-circular interpreter / Block-Structured Javascript / Haskell, Ruby and Infinity / Closures and Higher-Order Functions

Opinion
Why Apple is more expensive than Amazon / Why we are the biggest obstacles to our own growth / Is software the documentation of business process mistakes? / We have lost control of the apparatus / What I’ve Learned From Sales I, II, III

Whimsey
The Narcissism of Small Code Differences / Billy Martin’s Technique for Managing his Manager / Three stories about The Tao / Programming Language Stories / Why You Need a Degree to Work For BigCo

History
06/04 / 07/04 / 08/04 / 09/04 / 10/04 / 11/04 / 12/04 / 01/05 / 02/05 / 03/05 / 04/05 / 06/05 / 07/05 / 08/05 / 09/05 / 10/05 / 11/05 / 01/06 / 02/06 / 03/06 / 04/06 / 05/06 / 06/06 / 07/06 / 08/06 / 09/06 / 10/06 / 11/06 / 12/06 / 01/07 / 02/07 / 03/07 / 04/07 / 05/07 / 06/07 / 07/07 / 08/07 / 09/07 / 10/07 / 11/07 / 12/07 / 01/08 / 02/08 / 03/08 / 04/08 / 05/08 / 06/08 / 07/08 /