AUGUSTEN TECHNICAL

FRESHERS SHINE

Pages

Thursday, 30 October 2014

JAVA UPADATED FEATURES


java 1.4 feature
   Assertions
- Used to check assumptions to guarantee the application always executes complying specifications
- Used as a debugging tool during dev and testing
- Added in 1.4
- Assertions ensure "correctness" of application as per business rules where as Exception Handling ensures "Robustness"
- Also known as "Pre-contracting"
- Syntax
- assert condition;

Eg: assert value == 5;

- assert condition : message;

Eg: assert (value == 5) : "Value should be 5";

To enable asserstions
java -enableassertions AssertionExample
or
java -ea AssertionExample

To disable asserstions
java -da AssertionExample
or
java -disableassertions AssertionExample

Note: Assertions are by default disabled.


 Java5 features

 Autoboxing
   - Converting primitive to its respective wrapper class object is
     called autoboxing.

     Eg:

int i = 98;

Integer obj = i;//Autoboxing
Integer obj = new Integer(i);//Before java5.

Unboxing
   - Converting wrapper class object its respective primitive value
     is called unboxing.

Eg:
Integer obj = 98;

int i = obj.intValue();//Before java5

int i = obj;//unboxing.

Note: If the Integer object is NULL and if we apply unboxing
      then we will get NPE at runtime.

Static imports
  - Static members of a class can be imported into another class
    by using static imports
    Eg:
import static com.xyz.Utility.m1;
import static com.xyz.Utility.bankName;

      Note: Here above import statements will imports static members
           "m1" and "bankName".

      Note: If we want to import all the static members of a class
            at a time then import with *

    Eg:
import static com.xyz.Utility.*;

Covariant Return type
 - An overridden method in a sub class can have return type of as
   same as return type of super class method or sub-class type of
   super class method return type. This is is called covariant
   return types.

Eg:
class A{

}
class B extends A{
}

class Super{
public A getA(){};
}

class Sub extends Super{
public B getA(){};
}

     Note: here overridden method getA() in class "Sub" can have
           return type as B because the B is sub type of A.

Formatted output
 - There is a method format() is added to PrintStream to produce
   formatted output like in 'C'

   Eg:
System.out.format("I value = %d and F value = %f",i,f);

Varargs( Variable arguments)
  - By using var-args we can pass 0 or more paramters to a method.
  - All these parameters are going to bind to a single arugment
    of a method

Eg:

public int add(int i, int ...j){
}

1. Here "j" is variable arument in the add method. It will
   accept 0 or more integers.
2. var-args should be prefixed with 3 dots i.e. "..."
3. var-args must be the last argument in a method
3. Only one var-arg is allowed for a method.

For each loop/ Enhanced for loop

- By using for each or ehanced for loop we can iterate through the
  array of elements or collections of elements with out using
  loop counter or iterator.

Eg:

String arr[] = {"abc","xyz","hello","lakven"};

for(String value : arr){
System.out.println("value == "+value);
}

ArrayList<String> al = new ArrayList<String>();

al.add("RAm");
al.add("Amod");
al.add("Yogesh");
al.add("Visu");

for(String value : al){
System.out.println("value == "+value);
}


StringBuilder
 - The behavior of this class is same as StringBuffer
 - All methods in this class are NOT synchronized where as in
   StringBuffer methods are synchronized.
 - This class object is not thread-safe.


Scanner
 - This class is used read the specific data types for an
   input Stream.

Enums
  - enums are used to specify list of constants
  - In C programming enums are String representation of int constants.
  - In java enums are public static final object of enum type
  - Java enums are sub classes of java.lang.Enum
  - methods, variables, constructors can be added in the enum
  - enums can be declared inside or outside of class but not
    with in any method
  - enums by default final
  - if declared inside class they are static
  - enum objects can not be created explicitly as new keyword
    is not available

    ENUM rules
  - enum constructor has to be private
  - enums can not be private, protected and abstract
  - enums are implicitly public, static, final.
  - The order of appearance of enum constants is
    called their NATURAL ORDERING.

  - Advantages of enums
Typesafe
Namespace
Brittleness
Printed values are Informative

Generics
 - Generics provides abstraction over Types
 - Generics makes type safe code possible
 - Generics provides increased readability

Eg:
public class Box<T>{

T value;

public void put(T value){
this.value = value;
}

public T get(){
return value;
}
}


public static void main(String[] args) {


Box<Integer> b = new Box<Integer>();

b.put(56);//IF we add other than interger value
  // then the compiler is going to give
  // the compilation error.
}

  Note: Collection framework classes uses the generics concept
        extensively.
  Note: Collections are NOT generics.

- Generic Types
- The Diamond Operator(<>)
- Type Parameter Naming Conventions
The most commonly used type parameter names are:
E - Element (used extensively by the
Java Collections Framework)
K - Key
N - Number
T - Type
V - Value
S,U,V etc. - 2nd, 3rd, 4th types

- Generic Methods and Constructors
- Generics and Sub-typing

(ArrayList<Object> ao = new ArrayList<Integer>();//Illegal

- Bounded Type Parameters (x extends Y)
- Wildcards(?)
- Type Erasure

Annotations

      - Annotations provide data about a program that is not part of
the program itself.
      - They have no direct effect on the operation of the code they annotate.

 
      - Annotations can be applied to a program's declarations of classes, fields, methods, and other program elements.
   
      - The annotation appears first, often (by convention) on its own line, and may include elements with named or unnamed values:

@Author(
   name = "Benjamin Franklin",
   date = "3/27/2003"
)
class MyClass() { }

or

@SuppressWarnings(value = "unchecked")
void myMethod() { }

If there is just one element named "value," then the name may be omitted, as in:
@SuppressWarnings("unchecked")
void myMethod() { }

Also, if an annotation has no elements, the parentheses may be omitted, as in:
@Override
void mySuperMethod() { }


  - Annotations have a number of uses, among them:

 Information for the compiler
  - Annotations can be used by the compiler to detect errors or suppress
    warnings.
    Eg: @SuppressWarnings("unchecked"), @Override and @Deprecated


Compiler-time and deployment-time processing
  - Software tools can process annotation information to generate java code, XML files, and so forth.

Runtime processing
  -  Some annotations are available to be examined at runtime

1. Binary Literals
int i = 0B1111;

2. Strings in switch Statements
String str = new String("abc1");
switch (str) {
case "abc":
System.out.println("abc block");
break;
case "xyz":
System.out.println("xyz block");
break;
default:
System.out.println("Deafult block");
break;
}
3.Catching Multiple Exception Types
try{

}catch (NullPointerException | ArithmeticException |
NumberFormatException | ClassCastException |
ClassNotFoundException e) {

}

4. Underscores in Numeric Literals
int i = 1_000_000_000;
5.The try-with autoclosing resources Statement
try(FileInputStream fis = new FileInputStream("abc.txt");
FileInputStream fis2 = new FileInputStream("abc2.txt");) {

} catch (Exception e) {
e.printStackTrace();
}
6. Type Inference for Generic Instance Creation
List<Integer> list = new ArrayList<>();

Thursday, 16 October 2014

Frequently asked SQL Query Interview Questions


SQL Query Interview Questions

Question 1: SQL Query to find second highest salary of Employee
Answer : There are many ways to find second highest salary of Employee in SQL, you can either use SQL Join or Subquery to solve this problem. Here is SQL query using Subquery :

select MAX(Salary) from Employee WHERE Salary NOT IN (select MAX(Salary) from Employee );



Question 2: SQL Query to find Max Salary from each department.
Answer : You can find maximum salary for each department by grouping all records by DeptId and then using MAX() function to calculate maximum salary in each group or each department.

SELECT DeptID, MAX(Salary) FROM Employee GROUP BY DeptID.


This questions become more interesting if Interviewer will ask you to print department name instead of department id, in that case you need to join Employee table with Department using foreign key DeptID, make sure you do LEFT OUTER JOIN to include departments without any employee as well. Here is the query

SELECT DeptName, MAX(Salary) FROM Employee e LEFT JOIN Department d ON e.DeptId = d.DeptID;


Question 3: Write SQL Query to display current date.
Answer : SQL has built in function called GetDate() which returns current timestamp. This will work in Microsoft SQL Server, other vendors like Oracle and MySQL also has equivalent functions.SELECT GetDate();



Question 4: Write an SQL Query to check whether date passed to Query is date of given format or not.
Answer : SQL has IsDate() function which is used to check passed value is date or not of specified format ,it returns 1(true) or 0(false) accordingly. Remember ISDATE() is a MSSQL function and it may not work on Oracle, MySQL or any other database but there would be something similar.

SELECT ISDATE('1/08/13') AS "MM/DD/YY";


It will return 0 because passed date is not in correct format.



Question 5: Write a SQL Query to print the name of distinct employee whose DOB is between 01/01/1960 to 31/12/1975.
Answer : This SQL query is tricky but you can use BETWEEN clause to get all records whose date fall between two dates.SELECT DISTINCT EmpName FROM Employees WHERE DOB BETWEEN ‘01/01/1960’ AND ‘31/12/1975’;




Question 6: Write an SQL Query find number of employees according to gender whose DOB is between 01/01/1960 to 31/12/1975.
Answer :
SELECT COUNT(*), sex from Employees WHERE DOB BETWEEN '01/01/1960' AND '31/12/1975' GROUP BY sex;

Question 7: Write an SQL Query to find employee whose Salary is equal or greater than 10000.
Answer :
SELECT EmpName FROM Employees WHERE Salary>=10000;



Question 8: Write an SQL Query to find name of employee whose name Start with ‘M’
Answer :
SELECT * FROM Employees WHERE EmpName like 'M%';



Question 9: find all Employee records containing the word "Joe", regardless of whether it was stored as JOE, Joe, or joe.
Answer :
SELECT * from Employees WHERE UPPER(EmpName) like '%JOE%';




Question 10: Write a SQL Query to find year from date.
Answer : Here is how you can find Year from a Date in SQL Server 2008
SELECT YEAR(GETDATE()) as "Year";



Question 11 : Write SQL Query to find duplicate rows in a database? and then write SQL query to delete them?
Answer : You can use following query to select distinct records :
SELECT * FROM emp a WHERE rowid = (SELECT MAX(rowid) FROM EMP b WHERE a.empno=b.empno)
to Delete:
DELETE FROM emp a WHERE rowid != (SELECT MAX(rowid) FROM emp b WHERE a.empno=b.empno);

Question 12 : There is a table which contains two column Student and Marks, you need to find all the students, whose marks are greater than average marks i.e. list of above average students.
Answer : This query can be written using sub query as shown below :
SELECT student, marks from table where marks > SELECT AVG(marks) from table)


Question 13 : How do you find all employees which are also manager? .
You have given an standard employee table with an additional column mgr_id, which contains employee id of manager.
Answer : You need to know about self join to solve this problem. In Self Join, you can join two instances of same table to find out additional details as shown below

SELECT e.name, m.name FROM Employee e, Employee m WHERE e.mgr_id = m.emp_id;
this will show employee name and manger name in two column e.g.

name manager_name
John David

One follow-up is to modify this query to include employees which doesn't have manager. To solve that, instead of using inner join, just use left outer join, this will also include employees without managers.

Question 14 : You have a composite index of three columns, and you only provide value of two columns in WHERE clause of a select query? Will Index be used for this operation? For example if Index is on EmpId, EmpFirstName and EmpSecondName and you write query like

SELECT * FROM Employee WHERE EmpId=2 and EmpFirstName='Radhe'

If the given two columns are secondary index column then index will not invoke, but if the given 2 columns contain primary index(first col while creating index) then index will invoke. In this case Index will be used because EmpId and EmpFirstName are primary columns.



Hope this article will help you to take a quick practice whenever you are going to attend any interview and not have much time to go into the deep of each query.