<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>Quick BrainSharpener</title>
        <link>http://geekswithblogs.net/yowhann/category/5720.aspx</link>
        <description>Programming, algorithm questions/challenges.  General computer science problems and Problem solving questions.</description>
        <language>en-US</language>
        <copyright>Yow-Hann Lee</copyright>
        <managingEditor>yowhann@gmail.com</managingEditor>
        <generator>Subtext Version 0.0.0.0</generator>
        <item>
            <title>Latest and Greatest Watch Window</title>
            <link>http://geekswithblogs.net/yowhann/archive/2008/06/03/122605.aspx</link>
            <description>&lt;p&gt;You know the little watch window that you get in Visual Studio...well, in the scope of the software development world, this is what is currently in my watch window:&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=B24C3708-EEFF-4055-A867-19B5851E7CD2&amp;amp;displaylang=en"&gt;Microsoft Project Codename "Velocity"&lt;/a&gt; - Distributed In-Memory Application Cache Platform &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This one is huge for .NET. All things considered, it is arriving late to the party (Reference &lt;a href="http://www.danga.com/memcached/"&gt;memcached&lt;/a&gt; and &lt;a href="jakarta.apache.org/jcs/"&gt;jcs&lt;/a&gt;) but it is worth watching how it all plays out. I am looking forward to trying out the optimistic/pessimistic concurrency models and other cache configurations. So while like the rest of the folks who are excited about Silverlight 2 Beta 2 this week, it is Velocity that is going in the watch window.&lt;/p&gt;
&lt;p&gt;As a side note, this now also means there is another answer to &lt;a href="http://geekswithblogs.net/yowhann/archive/2007/03/22/109471.aspx"&gt;BrainSharpener #10&lt;/a&gt;. Depending on the scenario, that could either be a good or bad thing :)&lt;br /&gt;
&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=122605"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=122605" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/yowhann/aggbug/122605.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Yow-Hann Lee</dc:creator>
            <guid>http://geekswithblogs.net/yowhann/archive/2008/06/03/122605.aspx</guid>
            <pubDate>Wed, 04 Jun 2008 06:49:45 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/yowhann/comments/122605.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/yowhann/archive/2008/06/03/122605.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/yowhann/comments/commentRss/122605.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/yowhann/services/trackbacks/122605.aspx</trackback:ping>
        </item>
        <item>
            <title>Quick BrainSharpener (#11)</title>
            <link>http://geekswithblogs.net/yowhann/archive/2008/01/25/118895.aspx</link>
            <description>&lt;p&gt;Haven't been contributing to this series in a while, so here's a standard one to ease back into the flow...&lt;/p&gt;  &lt;p&gt;Given any two large List&amp;lt;int&amp;gt;, what is the quickest way to find the mutual intersection of the two? Now take into consideration memory constraints? &lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=118895"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=118895" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/yowhann/aggbug/118895.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Yow-Hann Lee</dc:creator>
            <guid>http://geekswithblogs.net/yowhann/archive/2008/01/25/118895.aspx</guid>
            <pubDate>Fri, 25 Jan 2008 13:24:09 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/yowhann/comments/118895.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/yowhann/archive/2008/01/25/118895.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/yowhann/comments/commentRss/118895.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/yowhann/services/trackbacks/118895.aspx</trackback:ping>
        </item>
        <item>
            <title>Listening to Requirements...Reflecting on BrainSharpener #9</title>
            <link>http://geekswithblogs.net/yowhann/archive/2007/03/25/109746.aspx</link>
            <description>&lt;p&gt;In a previous &lt;a href="http://geekswithblogs.net/yowhann/archive/2007/03/21/109468.aspx"&gt;post&lt;/a&gt;, I &lt;a href="http://geekswithblogs.net/yowhann/archive/2007/03/21/109468.aspx"&gt;proposed a replacement&lt;/a&gt; for the FizzBuzz problem as part of the &lt;a href="http://geekswithblogs.net/yowhann/category/5720.aspx"&gt;BrainSharpener series&lt;/a&gt;. As most people recall, the aim of the &lt;a href="http://tickletux.wordpress.com/2007/01/24/using-fizzbuzz-to-find-developers-who-grok-coding/"&gt;FizzBuzz problem&lt;/a&gt;&amp;nbsp;was not to provide people with an extreme challenge. As the blogger noted, it was merely to identify programming competency.&amp;nbsp;And similarly, the aim of this FizzBuzz Replacement, &lt;a href="http://geekswithblogs.net/yowhann/archive/2007/03/21/109468.aspx"&gt;the base 15 converter problem&lt;/a&gt;, was&amp;nbsp;not to&amp;nbsp;stump the programmer. Instead, as opposed to Imran's goal,&amp;nbsp;the intent here was to&amp;nbsp;highlight a common behavior that is lacking sometimes.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Q. &lt;/strong&gt;What is this behavior you ask? &lt;/p&gt; &lt;p&gt;&lt;strong&gt;A.&lt;/strong&gt; &lt;strong&gt;Listening, or rather paying careful attention to what the&amp;nbsp;interviewer is asking for.&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Ironically, the first person to come up with a response fell victim to this: &lt;a title="http://geekswithblogs.net/yowhann/archive/2007/03/21/109468.aspx#109526" href="http://geekswithblogs.net/yowhann/archive/2007/03/21/109468.aspx#109526"&gt;http://geekswithblogs.net/yowhann/archive/2007/03/21/109468.aspx#109526&lt;/a&gt;.&amp;nbsp;In any case, the intent here is&amp;nbsp;NOT to embarass anyone. But it is rather to point out a very real possibility that was not highlighted in the FizzBuzz blog entry. And that is:&amp;nbsp;differentiating between individuals who consistently miss requirements vs. people who just happen to miss it in the heat of the moment or are under interview pressure. I am the first to admit that I fall victim to this ocassionally. But the key here is whether the individual does it &lt;em&gt;consistently&lt;/em&gt;.&lt;/p&gt; &lt;p&gt;As an interviewer, the only way you can identify this is with several whiteboarding problems and observing not just their solution, but how they break down the problem. In this case, being a very trivial question, you&amp;nbsp;may not expect them to write down notes first. But for more complex problems, telltale signs that they are methodical and pay attention to the question include:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Verbally communicating the requirements and/or confirming details with you&lt;/li&gt; &lt;li&gt;Circling or underlining key points (if you wrote down your problem on paper or whiteboard)&lt;/li&gt; &lt;li&gt;Writing a couple bullet points before coding out the solution&lt;/li&gt; &lt;li&gt;Depending on the complexity of the problem, diagramming a state or workflow diagram&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Of course, there are cases where people are just not very vocal and also don't express themselves very well on paper/whiteboard. But I think you get the idea...&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=109746"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=109746" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/yowhann/aggbug/109746.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Yow-Hann Lee</dc:creator>
            <guid>http://geekswithblogs.net/yowhann/archive/2007/03/25/109746.aspx</guid>
            <pubDate>Sun, 25 Mar 2007 07:31:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/yowhann/comments/109746.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/yowhann/archive/2007/03/25/109746.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/yowhann/comments/commentRss/109746.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/yowhann/services/trackbacks/109746.aspx</trackback:ping>
        </item>
        <item>
            <title>Quick BrainSharpener (#10) - Managing ASP.NET Session State in a Distributed Environment</title>
            <link>http://geekswithblogs.net/yowhann/archive/2007/03/22/109471.aspx</link>
            <description>&lt;P&gt;To make up for using a FizzBuzz-like question in the &lt;A href="http://geekswithblogs.net/yowhann/archive/2007/03/21/109468.aspx"&gt;last entry&lt;/A&gt; (Hey, the title does stress "quick" doesn't it?), I will follow up with a thoughtful and practical&amp;nbsp;question. This one is somewhat technology dependent but could be potentially reworded to be more agnostic.&lt;/P&gt;
&lt;P&gt;NOTE: As an interview question, I wouldn't recommend asking this unless the candidate claims to have .NET knowledge. This usually comes in conjunction with a pure coding whiteboarding problem.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;QUESTION:&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Describe a couple different approaches to managing ASP.NET Session State in a distributed fashion. (You get extra points if you've never had to deal with this problem and had to come up with something on the spot. Usually, people that fall into this group are more likely to come up with unique approaches.)&lt;/P&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=109471"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=109471" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/yowhann/aggbug/109471.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Yow-Hann Lee</dc:creator>
            <guid>http://geekswithblogs.net/yowhann/archive/2007/03/22/109471.aspx</guid>
            <pubDate>Thu, 22 Mar 2007 07:19:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/yowhann/comments/109471.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/yowhann/archive/2007/03/22/109471.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/yowhann/comments/commentRss/109471.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/yowhann/services/trackbacks/109471.aspx</trackback:ping>
        </item>
        <item>
            <title>Quick BrainSharpener (#9) - Retiring FizzBuzz with a Replacement</title>
            <link>http://geekswithblogs.net/yowhann/archive/2007/03/21/109468.aspx</link>
            <description>&lt;P&gt;So by now, everyone is tired of reading about &lt;A href="http://tickletux.wordpress.com/2007/01/24/using-fizzbuzz-to-find-developers-who-grok-coding/"&gt;FizzBuzz&lt;/A&gt;. It's even been on a &lt;A href="http://www.hanselminutes.com/default.aspx?showID=69"&gt;podcast episode&lt;/A&gt;. So without further ado, here is a question to replace the now infamous technical filter.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;QUESTION:&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Write a function that takes in a base 15 value as a string and returns its integer value. An example would be "1000" = 3375.&lt;/P&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=109468"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=109468" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/yowhann/aggbug/109468.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Yow-Hann Lee</dc:creator>
            <guid>http://geekswithblogs.net/yowhann/archive/2007/03/21/109468.aspx</guid>
            <pubDate>Thu, 22 Mar 2007 06:24:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/yowhann/comments/109468.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/yowhann/archive/2007/03/21/109468.aspx#feedback</comments>
            <slash:comments>5</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/yowhann/comments/commentRss/109468.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/yowhann/services/trackbacks/109468.aspx</trackback:ping>
        </item>
        <item>
            <title>Quick BrainSharpener (#8) - Faster than Linear Time Approach To Substring Search</title>
            <link>http://geekswithblogs.net/yowhann/archive/2007/01/27/104761.aspx</link>
            <description>&lt;p&gt;The problem goes along the lines of:&lt;/p&gt; &lt;p&gt;Write a program that returns the starting indices of every&amp;nbsp;occurrence of a&amp;nbsp;substring (i.e. "dotnet") in a very long string, say over 1 million characters in length. Try to do this in the most time efficient manner.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=104761"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=104761" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/yowhann/aggbug/104761.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Yow-Hann Lee</dc:creator>
            <guid>http://geekswithblogs.net/yowhann/archive/2007/01/27/104761.aspx</guid>
            <pubDate>Sun, 28 Jan 2007 06:09:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/yowhann/comments/104761.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/yowhann/archive/2007/01/27/104761.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/yowhann/comments/commentRss/104761.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/yowhann/services/trackbacks/104761.aspx</trackback:ping>
        </item>
        <item>
            <title>Quick BrainSharpener (#7) - General and Soldier Robots (Executing Simultaneous Shoot Command) Problem</title>
            <link>http://geekswithblogs.net/yowhann/archive/2007/01/21/104148.aspx</link>
            <description>&lt;P&gt;&lt;/P&gt;
&lt;P&gt;The following puzzle comes &lt;STRONG&gt;verbatim&lt;/STRONG&gt; courtesy of a coworker. It caused a lot of controversy amongst my colleagues and hopefully will bring some enjoyment to its problem solvers. 
&lt;P&gt; 
&lt;P&gt;&lt;STRONG&gt;General and Solder Robots (Executing Simultaneous Shoot Command) Problem Description:&lt;/STRONG&gt; 
&lt;P&gt;1. You have two types of robots, a General and many Solider robots. 
&lt;P&gt;2. They are linked up as follows GSSSSS….&amp;nbsp; (where G = General and S = Soldier) 
&lt;P&gt;3. There is a finite but indefinite number of Soldier robots. 
&lt;P&gt;4. Each robot can communicate with only the one or two robots that are adjacent to it, and this communication takes 1 unit of time. 
&lt;P&gt;5. The General has one program on it, and the Soldiers all have different instances of one program on them. 
&lt;P&gt;6. The General must execute the first communication to its neighbor robot and then it may not communicate any more. 
&lt;P&gt;7. Each of the soldiers have a shoot command on them this can be arbitrarily named ‘Shoot()’ for convenience. 
&lt;P&gt;8. Each of the Soldiers must execute the Shoot() command simultaneously and the Shoot() command can only be execute once. 
&lt;P&gt;&lt;STRONG&gt;Difficulty Levels of the Solution:&lt;/STRONG&gt; 
&lt;P&gt;1. You are allowed that the robot is an Infinite State Machine. 
&lt;P&gt;2. The robot must be a Finite State Machine. 
&lt;P&gt;3. The robots must all shoot at time 2N-2, where N is the number of robots. 
&lt;P&gt; 
&lt;P&gt;Attempt to solve the problem in incremental levels of difficulty. #1 should come fairly quickly whereas #2 &amp;amp; 3 are tougher.&lt;/P&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=104148"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=104148" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/yowhann/aggbug/104148.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Yow-Hann Lee</dc:creator>
            <guid>http://geekswithblogs.net/yowhann/archive/2007/01/21/104148.aspx</guid>
            <pubDate>Mon, 22 Jan 2007 03:09:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/yowhann/comments/104148.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/yowhann/archive/2007/01/21/104148.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/yowhann/comments/commentRss/104148.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/yowhann/services/trackbacks/104148.aspx</trackback:ping>
        </item>
        <item>
            <title>Quick BrainSharpener (#6) - Designing a Shuttle Service System: Precursor to SoundPRT</title>
            <link>http://geekswithblogs.net/yowhann/archive/2006/12/25/102031.aspx</link>
            <description>&lt;p&gt;In this Christmas edition (Happy Holidays everyone!), here is another high level design and implementation problem.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Question:&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;As you know, Microsoft campus has a shuttle service to take employees from one building to another. The shuttle service is composed of several vehicle types: a minibus (capacity: 12), a minivan (capacity: 6) and a sedan (capacity: 4).&lt;/p&gt; &lt;p&gt;How would you design software to efficiently coordinate the fleet of vehicles and its passengers?&lt;/p&gt; &lt;p&gt;Assumption: Each vehicle has a GPS system.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;While on the topic of transportation, I thought I would point out SoundPRT. I actually came across this quite a while back, but was&amp;nbsp;unable to&amp;nbsp;work this into a blog entry until now.&amp;nbsp;As you know, the traffic during rush hour on Redmond campus can be a bit trying. This is a proposed innovative solution to help relieve some of the gridlock in Redmond.&lt;/p&gt; &lt;p&gt;See the &lt;a href="http://gettherefast.org/bettercampus.html"&gt;link here&lt;/a&gt;. You can watch the &lt;a href="http://soapbox.msn.com/video.aspx?vid=c8db1161-7b51-4c38-b606-30f4fca40933&amp;amp;wa=wsignin1.0"&gt;prototype video here&lt;/a&gt;&amp;nbsp;(NOTE: you will need to be a registered Soapbox user).&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=102031"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=102031" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/yowhann/aggbug/102031.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Yow-Hann Lee</dc:creator>
            <guid>http://geekswithblogs.net/yowhann/archive/2006/12/25/102031.aspx</guid>
            <pubDate>Tue, 26 Dec 2006 06:11:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/yowhann/comments/102031.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/yowhann/archive/2006/12/25/102031.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/yowhann/comments/commentRss/102031.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/yowhann/services/trackbacks/102031.aspx</trackback:ping>
        </item>
        <item>
            <title>Quick BrainSharpener (#5) - Untraditional MP3 Windiff Program</title>
            <link>http://geekswithblogs.net/yowhann/archive/2006/12/10/100785.aspx</link>
            <description>&lt;P&gt;The following is more of a design and implementation&amp;nbsp;problem rather than one that asks you to pump out code.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Question:&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;How would you go about designing a Windiff of mp3 files?&lt;/P&gt;
&lt;P&gt;Would you still rely on binary comparison if I added the&amp;nbsp;goal is to match on the same tunes (i.e. The Fray - How to Save a Life) as opposed to identical files.&lt;/P&gt;
&lt;P&gt;Is there a quick and dirty way to do this? &lt;/P&gt;
&lt;P&gt;What about a more involved approach? Describe and list out the pros/cons.&lt;/P&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=100785"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=100785" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/yowhann/aggbug/100785.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Yow-Hann Lee</dc:creator>
            <guid>http://geekswithblogs.net/yowhann/archive/2006/12/10/100785.aspx</guid>
            <pubDate>Sun, 10 Dec 2006 08:38:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/yowhann/comments/100785.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/yowhann/archive/2006/12/10/100785.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/yowhann/comments/commentRss/100785.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/yowhann/services/trackbacks/100785.aspx</trackback:ping>
        </item>
        <item>
            <title>Thinking like a Technical Interviewer</title>
            <link>http://geekswithblogs.net/yowhann/archive/2006/11/30/100113.aspx</link>
            <description>&lt;P&gt;The&amp;nbsp;programming question&amp;nbsp;(in a &lt;A href="http://geekswithblogs.net/yowhann/archive/2006/11/30/100104.aspx"&gt;previous blog&lt;/A&gt; - &lt;A href="http://geekswithblogs.net/yowhann/archive/2006/11/30/100104.aspx"&gt;Quick BrainSharpener #4&lt;/A&gt;) was designed to get&amp;nbsp;people thinking about an overall design of a problem. Besides simply coming up with a solution, this question also aims to give insight to&amp;nbsp;the candidate's&amp;nbsp;thinking patterns. When you are given a technical challenge, do you directly tackle the problem? Are you more forward thinking? Do you&amp;nbsp;start to get curious about the context of the problem? Do you ask questions? Do you ask the right questions?&amp;nbsp;&lt;/P&gt;
&lt;P&gt;What type of developer are you? What types of traits* does your interviewer want you to exemplify? Perhaps this is always a good question to ask your interviewer before approaching a problem. &lt;/P&gt;
&lt;P&gt;*Should I be thinking about extensibility? If you are asked to write a function, ask how often it would get called in his/her hypothetical program? Does it have to be designed to be highly performant?&amp;nbsp;So much so that it&amp;nbsp;may impede maintainability and readability? Given a Memory vs. performance: which gets the nod for the particular scenario presented?&lt;/P&gt;
&lt;P&gt;If this is an open ended problem (and a&amp;nbsp;language agnostic challenge), do you carefully choose the right tool (language) or do you start coding with your favorite language? Should you opt for a dynamic loosely-typed language or a&amp;nbsp;strongly-typed language. And are you conscious of your choice and can point out the pros/cons of your language (i.e. compiled vs. interpreted)?&lt;/P&gt;
&lt;P&gt;As much as an interviewee is stressed out, it must be a stressful experience for the interviewer. Whether your interview process is&amp;nbsp;a few hours or an entire day or two, generally, one interviewer will only have an hour of the candidate's time. During that time, he/she has to assess your technical abilities and make a decision. First, they have to determine that your personality (or the guise that you put on for the interview =P - this may be non-intentional as nerves/stress can play&amp;nbsp;a huge factor on someone's behavior and performance) will fit with the rest of the team. Then, they have to judge your technical skills. I imagine coming up with programming problems isn't&amp;nbsp;too difficult. And even if you run out of ideas, you can just take an existing problem and twist it a little (see &lt;A href="http://geekswithblogs.net/yowhann/archive/2006/11/30/100104.aspx"&gt;Quick BrainSharpener #4&lt;/A&gt;). You just need to be aware of what it is your particular problem is testing? And the challenge is actually in determining how to evaluate&amp;nbsp;a candidate's response to your question. You have to come up with a series of possible solutions and then rate each one. In fact, to put it in human terms, you need to get intimate with the problem. Having become intimate with the problem, you also need to resist being biased and judge the person's performance based on the time allotted. That's one of the beauties of programming and time. Given more time on a problem, you can usually come up with a more elegant/faster solution or at least refactor it in some way.&lt;/P&gt;
&lt;P&gt;On another note, the interviewer also needs to ensure that the problem is explained to you in&amp;nbsp;a clear and concise fashion.&lt;/P&gt;
&lt;P&gt;I would also like to bring up the challenges of asking the perfect interview question regarding design patterns. It is somewhat of a challenge to ask such a question without actually directly asking, for instance, how to implement a singleton? The challenge is incorporating these problems into a real-world situation and still keeping it fairly technical. Sure, you can ask them when they would use a singleton. But in such a case, you wouldn't be presenting them with a programming problem that they are getting their hands dirty on. So what to do? Well, perhaps another approach is to actually give someone an isolated piece of code that exists in your current system/service and have them run with it. This may already be&amp;nbsp;code complete and a scenario with&amp;nbsp;an obvious design pattern&amp;nbsp;that you removed to see if he/she tackled using a&amp;nbsp;structured approach&amp;nbsp;or perhaps completely refactored to something better.&amp;nbsp;In scenarios where you are actually giving them completely hands-on tasks (with IDE and compiler in hand), you would lose touch with being able to gauge the person's thought process and it would also be more time consuming than a whiteboard problem. Before I digress any further from the topic of good design pattern questions and into the general challenge of developing a good measurement for technical skill, I will stop myself right there.&lt;/P&gt;
&lt;P&gt;So, while I must say that candidates have more stress since their professional livelihood is on the line, it is no cakewalk for the interviewer either. &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;DISCLAIMER:&lt;/P&gt;
&lt;P&gt;I have never&amp;nbsp;been fortunate enough to attend interviewer training. The previous company I worked at did not have such a structure set up.&amp;nbsp;I do, however,&amp;nbsp;wish I had such an opportunity since&amp;nbsp;it would directly or indirectly make you a better interviewee. It's like the old saying goes, you only really understand someone's perspective after you've walked in his/her shoes. Being deprived of such experiences,&amp;nbsp;I use the poor man's methodology; I let my imagination act as a substitute for experience. And the above was a peek at the results.&amp;nbsp;&lt;/P&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=100113"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=100113" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/yowhann/aggbug/100113.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Yow-Hann Lee</dc:creator>
            <guid>http://geekswithblogs.net/yowhann/archive/2006/11/30/100113.aspx</guid>
            <pubDate>Fri, 01 Dec 2006 07:44:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/yowhann/comments/100113.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/yowhann/archive/2006/11/30/100113.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/yowhann/comments/commentRss/100113.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/yowhann/services/trackbacks/100113.aspx</trackback:ping>
        </item>
    </channel>
</rss>