Difference between revisions of "Interview Questions"

From Hawk Wiki
Jump to: navigation, search
(Object-oriented programming)
(Avoid Mysql Injection)
Line 72: Line 72:
 
</pre>
 
</pre>
 
This would allow anyone to log in without a valid password.
 
This would allow anyone to log in without a valid password.
 +
===Static method===
 +
Declaring class properties or methods as static makes them accessible without needing an instantiation of the class.
 +
<pre>
 +
<?php
 +
class Foo
 +
{
 +
    public static $my_static = 'foo';
 +
 +
    public function staticValue() {
 +
        return self::$my_static;
 +
    }
 +
}
 +
 +
class Bar extends Foo
 +
{
 +
    public function fooStatic() {
 +
        return parent::$my_static;
 +
    }
 +
}
 +
 +
 +
print Foo::$my_static . "\n";
 +
 +
$foo = new Foo();
 +
print $foo->staticValue() . "\n";
 +
print $foo->my_static . "\n";      // Undefined "Property" my_static
 +
print $foo::$my_static . "\n";
 +
$classname = 'Foo';
 +
print $classname::$my_static . "\n"; // As of PHP 5.3.0
 +
 +
print Bar::$my_static . "\n";
 +
$bar = new Bar();
 +
print $bar->fooStatic() . "\n";
 +
</pre>
  
 
==JavaScript==
 
==JavaScript==

Revision as of 18:23, 1 March 2012

Some Translation

n! Multiplicative

Object-oriented programming

Check here Interview_Questions(OOP)

C++ Interview

C++ interview

Algorithm Interview Problems

Algorithm Problems
All about Binary search tree
All about Linked List
Heap & Heap Sort

Regular Expression

http://www.zytrax.com/tech/web/regex.htm

C/C++

ArrayList Vs LinkedList

ArrayList: fast random access
slow at delete
memory fill up issue
LinkedList: slow random access
quick delete
no memory fill up issue
complex data structure

PHP

abstract class

Can not be Instantiable.(cannot become instant. Can only be inherited)

abstract class Fruit {
 private $color;

 abstract public function eat()

 public function setColor($c) {
  $this->color = $c;
 }
}

Single or Double Quotes?

//Sometimes people use double quotes in PHP to avoid having to use the period to separate code. For example, you could write:
$color='red';
echo "I have a $color shirt on today<br/>";
//Faster however is not always better. A better way to write this code would be:
echo 'I have a ' .$color. ' shirt on today<br/>';
echo 'I have a $color shirt on today<br/>';

Output:

I have a red shirt on today
I have a red shirt on today
I have a $color shirt on today

Avoid Mysql Injection

$_POST['username'] = 'aidan';
$_POST['password'] = "' OR ''='";
$query = "SELECT * FROM users WHERE user='{$_POST['username']}' AND password='{$_POST['password']}'";
$passwd=mysql_real_escape_string($_POST['password']);
$passwd1=addslashes($_POST['password']);
echo $passwd."<br />";
echo $passwd1."<br />";
echo ($query);

Output

\' OR \'\'=\'
\' OR \'\'=\'
SELECT * FROM users WHERE user='aidan' AND password='' OR ''=''

This would allow anyone to log in without a valid password.

Static method

Declaring class properties or methods as static makes them accessible without needing an instantiation of the class.

<?php
class Foo
{
    public static $my_static = 'foo';

    public function staticValue() {
        return self::$my_static;
    }
}

class Bar extends Foo
{
    public function fooStatic() {
        return parent::$my_static;
    }
}


print Foo::$my_static . "\n";

$foo = new Foo();
print $foo->staticValue() . "\n";
print $foo->my_static . "\n";      // Undefined "Property" my_static 
print $foo::$my_static . "\n";
$classname = 'Foo';
print $classname::$my_static . "\n"; // As of PHP 5.3.0

print Bar::$my_static . "\n";
$bar = new Bar();
print $bar->fooStatic() . "\n";

JavaScript

Closure.

<script>
function say667() {
  // Local variable that ends up within closure
  var num = 666;
  
  //var sayAlert = function() { alert(num); }
  return function() { num++; alert(num); };
}

var sayNumba = say667();
sayNumba();
sayNumba();
</script>

The example will keep var num in the memory. alert 667 and 668 on each call;

Swap 2 numbers in one line

//swap
$a=10;
$b=20;
$a=$a+$b-($b=$a);
echo $a." and ". $b."\n";
// output 20 and 10
$a^=$b^=$a^=$b; //This has a bug. You cannot do things like this $a^=$a^=$a^=$a
echo $a." and ". $b;
//output 10 and 20

Calculate degree between hour and minute hand

<?php
$time=array();
$time['h']=12;
$time['m']=15;
$time['s']=30;
function clockDegree($time){
	$mPercent=((float)$time['m']+((float)$time['s']/60.0))/60.0;
	$mDegree=$mPercent*360;
	$hdegree=((int)$time['h']%12+(float)$mPercent)/12.0*360;
	echo abs($mDegree-$hdegree);
}
clockDegree($time);