<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>@InitBinder &#187; brainteaser</title>
	<atom:link href="http://initbinder.com/categories/brainteaser/feed" rel="self" type="application/rss+xml" />
	<link>http://initbinder.com</link>
	<description>My thoughts, notes and ideas as a passionate software engineer</description>
	<lastBuildDate>Sat, 24 Mar 2012 13:29:46 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Brainteaser: DevOps</title>
		<link>http://initbinder.com/articles/difference_between_continuous_deployment_and_continuous_delivery.html</link>
		<comments>http://initbinder.com/articles/difference_between_continuous_deployment_and_continuous_delivery.html#comments</comments>
		<pubDate>Sat, 24 Sep 2011 10:45:45 +0000</pubDate>
		<dc:creator>Alexander Zagniotov</dc:creator>
				<category><![CDATA[best practices]]></category>
		<category><![CDATA[brainteaser]]></category>
		<category><![CDATA[continuous delivery]]></category>
		<category><![CDATA[continuous deployment]]></category>
		<category><![CDATA[dev ops]]></category>
		<category><![CDATA[devops]]></category>

		<guid isPermaLink="false">http://initbinder.com/?p=1222</guid>
		<description><![CDATA[What is the difference between continuous deployment and continuous delivery? Please describe in one-two lines]]></description>
			<content:encoded><![CDATA[<p>What is the difference between <em>continuous deployment</em> and <em>continuous delivery</em>? Please describe in one-two lines</p>
]]></content:encoded>
			<wfw:commentRss>http://initbinder.com/articles/difference_between_continuous_deployment_and_continuous_delivery.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Brainteaser Drools: Testing Objects</title>
		<link>http://initbinder.com/articles/brainteaser_drools_testing_objects.html</link>
		<comments>http://initbinder.com/articles/brainteaser_drools_testing_objects.html#comments</comments>
		<pubDate>Sat, 22 Aug 2009 12:50:00 +0000</pubDate>
		<dc:creator>Alexander Zagniotov</dc:creator>
				<category><![CDATA[brainteaser]]></category>
		<category><![CDATA[drools]]></category>

		<guid isPermaLink="false">http://javabeans.asia/2009/08/22/brainteaser_drools_testing_objects.html</guid>
		<description><![CDATA[This can be a hard one, since it requires from you to be familiar with Drools. Consider the condition side of the following rules: [java] rule &#34;object comparison one&#34; no-loop when $customer1 : Customer( ) $customer2 : Customer(this != $customer1) &#8230; <a href="http://initbinder.com/articles/brainteaser_drools_testing_objects.html">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>This can be a hard one, since it requires from you to be familiar with Drools.</p>
<p>Consider the condition side of the following rules:</p>
<p>[java]<br />
rule &quot;object comparison one&quot;<br />
no-loop</p>
<p>when<br />
	$customer1 : Customer( )<br />
	$customer2 : Customer(this != $customer1)<br />
then<br />
	System.out.println(&quot;Rule one &#8211; Objects are equal&quot;);<br />
end<br />
[/java]</p>
<p>[java]<br />
rule &quot;object comparison two&quot;<br />
no-loop</p>
<p>when<br />
	$customer1 : Customer( )<br />
	$customer2 : Customer(eval(this != $customer1))<br />
then<br />
	System.out.println(&quot;Rule two &#8211; Objects are equal&quot;);<br />
end<br />
[/java]</p>
<p><strong>Question(s)</strong>:<br />
Which of the two rules does valid comparison of the two Customer instances?<br />
Which of the two rules is invalid? Why?</p>
<p>Looking forward for your answers dear readers</p>
<p>Resources:<br />
<em><span class="removed_link">Drools JBoss Rules 5.0 Developer&#8217;s Guide July 2009</span></em></p>
]]></content:encoded>
			<wfw:commentRss>http://initbinder.com/articles/brainteaser_drools_testing_objects.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Brainteaser: Overridable methods</title>
		<link>http://initbinder.com/articles/brainteaser_overridable_methods.html</link>
		<comments>http://initbinder.com/articles/brainteaser_overridable_methods.html#comments</comments>
		<pubDate>Sat, 18 Apr 2009 02:02:00 +0000</pubDate>
		<dc:creator>Alexander Zagniotov</dc:creator>
				<category><![CDATA[brainteaser]]></category>
		<category><![CDATA[design patterns]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[inheritance]]></category>
		<category><![CDATA[overridable methods]]></category>

		<guid isPermaLink="false">http://javabeans.asia/2009/04/18/brainteaser_overridable_methods.html</guid>
		<description><![CDATA[Consider the following case of inheritance: [java] public class Parent { public Parent() { getValue(); } public void getValue() { } } public class Child extends Parent { private final Integer integer; public Child() { integer = new Integer(888); } &#8230; <a href="http://initbinder.com/articles/brainteaser_overridable_methods.html">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Consider the following case of inheritance:</p>
<p>[java]<br />
public class  Parent {<br />
   public Parent()  {<br />
	getValue();<br />
   }<br />
   public void getValue()  {</p>
<p>   }<br />
}</p>
<p>public class  Child extends Parent {<br />
   private final Integer integer;<br />
   public Child()  {<br />
	integer = new Integer(888);<br />
   }</p>
<p>   @Override<br />
   public void getValue()  {<br />
	System.out.println(integer);<br />
   }<br />
}<br />
[/java]</p>
<p>Question: What would the following program print, why?</p>
<p>[java]<br />
public class  Test {<br />
   public static void main(String[] args)  {<br />
	Child child = new Child();<br />
	child.getValue();<br />
   }<br />
}<br />
[/java]</p>
<p>Lets assume that getValue() implementation in Child class was changed to:</p>
<p>[java]<br />
@Override<br />
public void getValue()  {<br />
     System.out.println(integer.toString());<br />
}<br />
[/java]</p>
<p><strong>Question</strong>: What would the output of the Test class be now, why?</p>
]]></content:encoded>
			<wfw:commentRss>http://initbinder.com/articles/brainteaser_overridable_methods.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Brainteaser: Broken Case of Inheritance</title>
		<link>http://initbinder.com/articles/brainteaser_broken_case_of_inheritance.html</link>
		<comments>http://initbinder.com/articles/brainteaser_broken_case_of_inheritance.html#comments</comments>
		<pubDate>Sun, 05 Apr 2009 10:34:00 +0000</pubDate>
		<dc:creator>Alexander Zagniotov</dc:creator>
				<category><![CDATA[brainteaser]]></category>
		<category><![CDATA[design patterns]]></category>
		<category><![CDATA[java]]></category>

		<guid isPermaLink="false">http://javabeans.asia/2009/04/05/brainteaser_broken_case_of_inheritance.html</guid>
		<description><![CDATA[Consider the following case of inheritance: [java] public class ExtendingHashSet&#60;E&#62; extends HashSet&#60;E&#62; { private int counter = 0; public ExtendingHashSet() { } @Override public boolean add(E e) { counter++; return super.add(e); } @Override public boolean addAll(Collection&#38;lt;? extends E&#38;gt; c) { &#8230; <a href="http://initbinder.com/articles/brainteaser_broken_case_of_inheritance.html">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Consider the following case of inheritance:</p>
<p>[java]<br />
public class ExtendingHashSet&lt;E&gt; extends HashSet&lt;E&gt;  {<br />
   private int counter = 0;</p>
<p>   public ExtendingHashSet() {</p>
<p>   }</p>
<p>   @Override<br />
   public boolean add(E e)  {<br />
      counter++;<br />
      return super.add(e);<br />
   }</p>
<p>   @Override<br />
   public boolean addAll(Collection&amp;lt;? extends E&amp;gt; c)  {<br />
      counter += c.size();<br />
      return super.addAll(c);<br />
   }</p>
<p>   public int getCounter()  {<br />
      return counter;<br />
   }<br />
}<br />
[/java]</p>
<p>Created instance:</p>
<p>[java]<br />
ExtendingHashSet&lt;String&gt; s = new ExtendingHashSet&lt;String&gt;();<br />
s.addAll(Arrays.asList(&quot;one&quot;, &quot;two&quot;, &quot;three&quot;));<br />
[/java]</p>
<p><strong>Question</strong>: What value would <em>s.getCounter()</em> method return at this point and why?</p>
<p>Looking forward for your answers dear readers</p>
]]></content:encoded>
			<wfw:commentRss>http://initbinder.com/articles/brainteaser_broken_case_of_inheritance.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Brainteaser: Broken Comparator</title>
		<link>http://initbinder.com/articles/brainteaser_broken_comparator.html</link>
		<comments>http://initbinder.com/articles/brainteaser_broken_comparator.html#comments</comments>
		<pubDate>Sat, 18 Oct 2008 14:25:00 +0000</pubDate>
		<dc:creator>Alexander Zagniotov</dc:creator>
				<category><![CDATA[brainteaser]]></category>
		<category><![CDATA[design patterns]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[comparator]]></category>

		<guid isPermaLink="false">http://javabeans.asia/2008/10/19/brainteaser_broken_comparator.html</guid>
		<description><![CDATA[Question: The following program returns result &#8220;1&#8243;, which indicates that first Integer value is greater than the second, why? [java] import java.util.*; public class Example { public static void main(String[] args) { System.out.println(&#38;amp;quot;Result: &#38;amp;quot; + naturalOrder.compare(new Integer(90), new Integer(90))); } &#8230; <a href="http://initbinder.com/articles/brainteaser_broken_comparator.html">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><strong>Question</strong>: The following program returns result &#8220;1&#8243;, which indicates that first Integer value is greater than the second, why?</p>
<p>[java]<br />
import java.util.*;</p>
<p>public class Example  {</p>
<p>   public static void main(String[] args)  {<br />
      System.out.println(&amp;amp;quot;Result: &amp;amp;quot; +<br />
	   naturalOrder.compare(new Integer(90),<br />
				new Integer(90)));<br />
   }</p>
<p>private static Comparator&amp;amp;lt;Integer&amp;amp;gt; naturalOrder =<br />
				new Comparator&amp;amp;lt;Integer&amp;amp;gt;()  {<br />
   public int compare(Integer first, Integer second)  {<br />
	return first &amp;amp;lt; second ? -1 : (first == second ? 0 :1);<br />
   }<br />
  };<br />
}</p>
<p>[/java]</p>
<p>Please note:<br />
In this case, comparator for natural order on Integer is written for example only, and in practice there is no need to write it.</p>
<p>Looking forward for your answers dear readers</p>
<p>Resources:<br />
<span class="removed_link" title="http://www.oracle.com/publications">Effective Java</span></p>
]]></content:encoded>
			<wfw:commentRss>http://initbinder.com/articles/brainteaser_broken_comparator.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Brainteaser: ArrayList VS TreeSet</title>
		<link>http://initbinder.com/articles/brainteaser_arraylist_vs_treeset.html</link>
		<comments>http://initbinder.com/articles/brainteaser_arraylist_vs_treeset.html#comments</comments>
		<pubDate>Wed, 01 Oct 2008 03:31:00 +0000</pubDate>
		<dc:creator>Alexander Zagniotov</dc:creator>
				<category><![CDATA[brainteaser]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[collections]]></category>

		<guid isPermaLink="false">http://javabeans.asia/2008/10/01/brainteaser_arraylist_vs_treeset.html</guid>
		<description><![CDATA[When I came across the following example I did not expect the results that the program has printed hehe&#8230; Question: What does this program print? Why? [java] import java.util.*; public class SetList { public static void main(String[] args) { Set&#60;Integer&#62; &#8230; <a href="http://initbinder.com/articles/brainteaser_arraylist_vs_treeset.html">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>When I came across the following example I did not expect the results that the program has printed <img src='http://initbinder.com/bunker/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  hehe&#8230;</p>
<p><strong>Question</strong>: What does this program print? Why?</p>
<p>[java]<br />
import java.util.*;</p>
<p>public class SetList {</p>
<p>    public static void main(String[] args) {</p>
<p>    Set&lt;Integer&gt; set =<br />
    			new TreeSet&lt;Integer&gt;();<br />
    List&lt;Integer&gt; list =<br />
    			new ArrayList&lt;Integer&gt;();</p>
<p>    for (int i = -3; i &lt; 3; i++) {<br />
        set.add(i);<br />
        list.add(i);<br />
    }</p>
<p>    for (int i = 0; i &lt; 3; i++) {<br />
        set.remove(i);<br />
        list.remove(i);<br />
    }</p>
<p>     System.out.println(set + &quot; &quot; + list);<br />
   }<br />
}<br />
[/java]</p>
<p>Looking forward for your answers dear readers</p>
<p>Resources:<br />
<em><span class="removed_link" title="http://www.oracle.com/publications">Effective Java</span></em></p>
]]></content:encoded>
			<wfw:commentRss>http://initbinder.com/articles/brainteaser_arraylist_vs_treeset.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Brainteaser: Hidden Iterators</title>
		<link>http://initbinder.com/articles/brainteaser_hidden_iterators.html</link>
		<comments>http://initbinder.com/articles/brainteaser_hidden_iterators.html#comments</comments>
		<pubDate>Sun, 07 Sep 2008 08:05:00 +0000</pubDate>
		<dc:creator>Alexander Zagniotov</dc:creator>
				<category><![CDATA[brainteaser]]></category>
		<category><![CDATA[design patterns]]></category>
		<category><![CDATA[threads]]></category>
		<category><![CDATA[java]]></category>

		<guid isPermaLink="false">http://javabeans.asia/2008/09/07/brainteaser_hidden_iterators.html</guid>
		<description><![CDATA[&#8230; While locking can prevent iterators from throwing ConcurrentMofdificationException, You have to remember to use locking everywhere a shared collection might be iterated. This is trickier than it sounds &#8230; Brian Goetz p.83-84 Question: The following code could throw ConcurrentMofdificationException, &#8230; <a href="http://initbinder.com/articles/brainteaser_hidden_iterators.html">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<blockquote><p>&#8230; While locking can prevent iterators from throwing <em>ConcurrentMofdificationException</em>, You have to remember to use locking everywhere a shared collection might be iterated. This is trickier than it sounds &#8230;</p></blockquote>
<p><a href="http://jcip.net/" target="_blank">Brian Goetz</a> p.83-84</p>
<p><strong>Question</strong>: The following code could throw <em>ConcurrentMofdificationException</em>, even though <em>add()</em> is synchronized, why?</p>
<p>[java]<br />
public class HiddenIterator  {<br />
     private final Set set = new HashSet();</p>
<p>public synchronized void add(Integer i) {<br />
     set.add(i);<br />
}</p>
<p>public synchronized void remove(Integer i) {<br />
     set.remove(i);<br />
}</p>
<p>public void addTenThings() {<br />
   Random r = new Random();<br />
   for (int index = 0; index &amp;lt; 10;  index++;) {<br />
       add(r.nextInt());<br />
   }</p>
<p>   System.out.println(&quot;Added ten elements to set: &quot; + set);<br />
}<br />
}<br />
[/java]</p>
<p>Looking forward for your answers dear readers</p>
]]></content:encoded>
			<wfw:commentRss>http://initbinder.com/articles/brainteaser_hidden_iterators.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
<!-- This Quick Cache file was built for (  initbinder.com/categories/brainteaser/feed ) in 0.23376 seconds, on May 18th, 2012 at 1:47 pm UTC. -->
<!-- This Quick Cache file will automatically expire ( and be re-built automatically ) on May 18th, 2012 at 2:47 pm UTC -->
