Mostrando las entradas con la etiqueta scjp. Mostrar todas las entradas
Mostrando las entradas con la etiqueta scjp. Mostrar todas las entradas

miércoles, 29 de julio de 2009

SCJP Preguntas y Respuestas Serie 1

Preguntas

Pregunta 1:
Dado el siguiente código:
1. public class Test {
2. public static void main(String [] args) {
3. signed int x = 10;
4. for (int y=0; y<5; y++, x--)
5. System.out.print(" " + x);
6. }
7. }

¿Cuál es el resultado? (Selecciona uno.)
A. 10 9 8 7 6
B. 9 8 7 6 5
C. La compilación falla
D. Una excepción es lanzada en tiempo de ejecución

Pregunta 2:
¿Cuál es una palabra reservada en el lenguaje de programación Java? (Selecciona una)
A. method
B. native
C. subclasses
D. reference
E. array

Pregunta 3
¿Cuál de estas listas contiene solo palabras reservadas del lenguaje java?(Selecciona una)
A. class, if, void, long, Int, continue
B. goto, instanceof, native, finally, default, throws
C. try, virtual, throw, final, volatile, transient
D. strictfp, constant, super, implements, do
E. byte, break, assert, switch, include

Pregunta 4
¿Cuáles dos son palabras reservadas? (Selecciona dos)
A. interface
B. unsigned
C. Float
D. this
E. string

Pregunta 5
¿Cuáles tres son declaraciones válidas de un char? (Selecciona tres)
A. char c1 = 064770;
B. char c2 = ‘face’;
C. char c3 = 0xbeef;
D. char c4 = \u0022;
E. char c5 = ‘\iface’;
F. char c6 = ‘\uface’;

Pregunta 6
¿Cuáles dos son declaraciones válidas de un String? (Selecciona dos)
A. String s1 = null;
B. String s2 = ‘null’;
C. String s3 = (String) ‘abc’;
D. String s4 = (String) ‘\ufeed’;
E. String s5 = “strings rule”;

Pregunta 7
¿Cuál es una declaración válida de un tipo de dato boolean? (Selecciona uno)
A. boolean b1 = 0;
B. boolean b2 = ‘false’;
C. boolean b3 = false;
D. boolean b4 = Boolean.false();
E. boolean b5 = no;

Pregunta 8
¿Cuál es el rango númerico de un char? (Selecciona uno)
A. –128 to 127
B. –(2 ^ 15) to (2 ^ 15) - 1
C. 0 to 32767
D. Depende de la plataforma
E. 0 to 65535

Pregunta 9
¿Cuáles tres son declaraciones válidas de un float? (Selecciona tres)
A. float f1 = -343;
B. float f2 = 3.14;
C. float f3 = 0x12345;
D. float f4 = 42e7;
E. float f5 = 2001.0D;
F. float f6 = 2.81F;

Pregunta 10
¿Cuáles tres son declaraciones legales de un arreglo? (Selecciona tres)
A. int [] puntajes [];
B. char [] caracteres;
C. int [6] caracteres;
D. Persona personas [];
E. Persona personas [7];


Si ya llegaste hasta aquí apunta bien tus respuestas y comparalas con las respuestas de abajo, recuerda que para certificarte tienes que sacar un mínimo de 70%(acostumbrate a la autoevaluación)


Respuestas
Respuesta 1:
C. La palabra signed no es un modificador válido como palabra reservada en el lenguaje Java. Todos los números primitivos en java tienen signo, siempre.

Respuesta 2:
B. La palabra native es una palabra reservada válida que es usada para modificar la declaración de un método. Las alternativas A, D, y E no son palabras reservadas. C no puede ser porque la palabra reservada para subclasear(herencia) es extends no subclasses.

Respuesta 3.
B. Todas las palabras en la alternativa B son parte de las palabras reservadas java. A está mal porque la palabra reservada para el primitivo int inicia con una letra minúscula i. C tambien está mal porque virtual es una palabra reservada en C++, no en Java. D tampoco es porque constant
no es una palabra reservada, las constantes en Java son declaradas como static y final. E tampo es porque include es una palabra reservada en C, no en Java.

Respuesta 4.
A y D. Tanto interface y this son palabras reservadas. B esta mal porque unsigned es una palabra reservada en C/C++ pero no en Java. C tambien está mal porque Float es un tipo de clase, la palabra reservada para el primitivo Java es float. E tambien está mal porque aunque String es un tipo de clase en Java, string no es una palabra reservada.

Respuesta 5.
A, C y F. A es una representación octal del valor enter 27128, el cuál es legal porque pertenece a un tipo de dato entero de 16bits sin signo. C es una representación hexadecimal del valor entero 48879, el cuál pertenece tambien a un tipo de dato entero de 16bits sin signo. F es una representación Unicode de un caracter. B está mal porque no podemos colocar más de un caracter en un literal de caracteres.(esto lo podemos saber porque esta entre comillas simples). Los unicos aceptables literales de caracter que pueden ir entre comillas simples son valores Unicode, y los literales Unicode deben siempre iniciar con '\u'. D tambien está mal porque las comillas simples no aparecen. E tambien es incorrecto porque parece ser una representación Unicode pero inicia con '\i' en vez de '\u'.

Respuesta 6.
A y E. A coloca la referencia String a null; E inicializa la referencia String con un literal.
B es incorrecto porque un null no puede estar entre comillas simples. C es incorrecto porque allí existen multiples caracteres entre las comillas simples(‘abc’). D tambien es incorrecto porque no podemos castear(pasar el valor de una variable de un tipo de dato a otro) un primitivo char a un objeto String.

Respuesta 7.
C. A un boolean solo puede ser asignado el literal true o false. A, B, D, and E son todas asignaciones incorrectas para un boolean.

Respuesta 8.
E. Un char es realmente un entero sin signo de 16bits.

Respuesta 9.
A, C, y F. A y C son literales de enteros (32 bits), y los enteros pueden ser legalmente asignados a floats (que tambien son de 32 bits). F es correcto porque F es agregado al literal, declarandolo como float mas que como un double( el tipo de dato por default para literales de punto flotante, osea decimales). B, D, y E son todos doubles.

Respuesta 10.
A, B, y D. En una declaración de arreglo, podemos colocar los corchetes a la derecha o a la izquierda del identificador. A parece extraño, pero es perfectamente legal porque divide los corchetes y hace un arreglo multidimensional, colocando los corchetes a ambos lados del identificador. C y E son incorrectos porque no podemos declarar un arreglo con un tamaño, el tamaño es solo necesario cuando el arreglo va a instanciarse(y la máquina virtual Java necesita conocer cuanto espacio de memoria asignar al arreglo, basado en el tipo del arreglo y su tamaño).

domingo, 26 de julio de 2009

SCJP Declaraciones Inicializacion y Alcance 2

Declarando una interface
Cuando creamos una interface, lo que estamos realizando es un contrato de lo que la clase que implementa dicha interface tiene que hacer sin decir nada acerca de como la clase lo hará, en pocas palabras la interface indica que se va a hacer y la clase que implementa dicha interface indica como se va implementar, de esto concluimos que una interface es un contrato que la clase que lo implementa debe de cumplir. Por ejemplo si tenemos la interface Imprimible definida de la siguiente manera:

public interface Imprimible{
public void imprimirAPdf();
public void imprimirAExcel();
}

Y una clase Libro que implementa la interface anterior de la siguiente manera:

public class Libro implements Imprimible{
public void imprimirAPdf(){
-- Aqui va el código que imprime el libro en formato pdf
}
public void imprimirAExcel(){
-- Aqui va el código que imprime el libro en formato excel
}
}

La clase al implementar la interface debe de cumplir con el contrato, es decir debe de proveer una forma de implementación para cada uno de los métodos de la interface, en el ejemplo vemos que la clase implementa los métodos declarando código entre las llaves de apertura y cerradura de dichos métodos, en la interface después de los parentesis termina su declaración con un punto y coma.

Podemos pensar en las interfaces como clases 100% abstractas, asi como una clase abstracta una interface define métodos abstractos que toman la siguiente forma:

abstract void nombreMetodo();

Pero mientras que una clase abstracta puede definir tanto métodos abstractos como no abstractos, una interface solo puede tener métodos abstractos, es decir podemos tener una clase abstracta de la siguiente manera:

public abstract class Libro{
-- Método abstracto:
public abstract void calcularCosto();

-- Método no abstracto:
public void calcularVentas(){
--Aquí la implementación del método.
}
}

Pero no podemos hacer una interface parcialmente abstracta, las interfaces son 100% abstractas, es decir todos sus métodos son abstractos(no tienen una implementación { ... } ), por lo que la siguiente interface es incorrecta:

public interface Imprimible{
-- Método abstracto:
public abstract void imprimirAPdf();

-- Método no abstracto:
public void imprimirAExcel(){
--Aquí la implementación del método.
}
}

Algunas reglas más sobre la declaración de las interfaces son las siguientes:

1. Todos los métodos de las interfaces son implicitamente públicos y abstractos, en otras palabras no necesitamos escribir los modificadores public y abstract en la declaración del método, el método siempre será públic y abstracto. Veamos, si tenemos la siguiente interface:

public interface Imprimible{
void imprimirAPdf();
int imprimirAExcel();
}

Entonces lo que el compilador realmente analizará es:

public interface Imprimible{
public abstract void imprimirAPdf();
public abstract int imprimirAExcel();
}

2. Todas las variables definidas en una interface deben ser públicas estáticas y finales, en otras palabras las interfaces pueden declarar solo constantes, no variables de instancia.

--Recordar una variable de instancia;
public class Libro{
-- variable de instancia:
private int ancho;
}

3. Los métodos de las interfaces no deben ser estáticos. No podemos hacer lo siguiente:
public interface Imprimible{
public static void imprimir();
}

4. Como los métodos de las interfaces son abstractos entonces no podemos definirlos tambien como finales final, strictfp ó native.

5. Una interface puede extender una o más interfaces, es decir podemos hacer lo siguiente:

public interface interface1{
void metodo1();
}

public interface interface2{
void metodo2();
}

public interface interface3 extends interface1,interface2{
void metodo1();
void metodo2();
void metodo3();
}

6. Una interface solo puede extender interfaces no puede extender clases, por ejemplo si tenemos la clase:

public class Descargable{
protected int descargar(){
-- XXX
}
}

entonces la siguiente declaración de interface es incorrecta:

public interface interface3 extends Descargable{
protected int descargar();
}

7. Una interface no puede implementar otra interface o una clase, no podemos hacer lo siguiente:

public interface interface3 implements interface1,interface2{
void metodo1();
void metodo2();
void metodo3();
}

8. Una interface debe ser declarada con la palabra clave interface.

Declarando constantes en interfaces
Nosotros podemos declarar constantes en una interface, haciendolo garantizamos que cualquier clase que implementa la interface tendrá acceso a la misma constante, la regla principal para las constantes es la siguiente:

public static final = ;

Por ejemplo si tenemos la siguiente interface:

public interface Imprimible{
int ancho = 100;
int largo = 170;
public void imprimir( );
}

y la siguiente clase:

public class Libro implements Imprimible{
public void imprimir(){
--Nosotros podemos usar las constantes
System.out.println(ancho*largo):

--Pero no podemos asignarles un valor porque las declaraciones int ancho = 100;
--el compilador lo analiza como public static final int ancho = 100; es decir es
--declarado como final y estático ya no podemos modificarlo, por lo tanto es incorrecto:
ancho = 666;
}
}

SCJP Declaraciones Inicializacion y Alcance 1

Cuando escribimos código en java, lo que estamos escribiendo es justamente clases o interfaces, dentro de estas clases como conocemos pueden haber variables y métodos(y algunas otras cosas más), la forma en la que declaramos las clases, métodos y variables afecta en forma sustancial el comportamiento del código, por ejemplo un método público puede ser accedido desde código ejecutandose en cualquier lugar en tu aplicación, haciendo el método privado lo oculta a cualquier posible llamada(excepto a la clase en la cuál fué declarada).

Reglas de declaración de archivos fuente
  1. Solo puede haber una clase pública por archivo fuente.
  2. Los comentarios pueden aparecer al inicio o al fin de cualquier línea en el archivo de código fuente.
  3. Si es que hay una clase pública el nombre del archivo debe de coincidir con el nombre de la clase, por ejemplo si hay una clase declarada public Casa entonces el nombre del archivo deberá ser Casa.java
  4. Si la clase es parte de un paquete, la declaración del paquete debe ser la primera línea en el archivo de código fuente, antes de cualquier declaración de importacion import que pueda estar presente.
  5. Si hay declaraciones de importacion import, estas declaraciones deben de ir entre la declaración del paquete(si es que lo hubiera) y la declaración de la clase.
  6. Declaraciones de importación import y de paquetes package aplican a todas las clases dentro de un archivo de código fuente, en otras palabras, no hay manera para declarar multiples clases en un archivo y tenerlos en diferentes paquetes o usar diferentes importaciones.
  7. Un archivo puede tener más de una clase no pública.
  8. Archivos con clases no públicas pueden tener un nombre que no coincide con cualquiera de las clases en el archivo.
Declaraciones de clases y modificadores
  1. Modificadores de acceso: public, protected, private
  2. Modificadores de no-acceso: strictfp, final y abstract
Acceso de Clase
Que es lo que significa acceder a una clase?, cuando decimos que el código de una clase(class X) a accedido a otra clase(class Y) esto significa que la clase X puede hacer cualquiera de las 3 siguientes acciones:

Crear una instancia de la clase Y.
class X{
Y y = new Y( );
}

Extender la clase Y.
class X extends Y{ }

Accesar ciertos métodos y variables de la clase Y, dependiendo del control de acceso de estos métodos y variables.
class X{
Y y = new Y( );
X(){
y.holamundo();
}
}

Modificador de Acceso por Defecto.
Una clase con default access no tiene un modificador de acceso que le precede en su declaración, es decir tiene la forma class X{ } y no public class X { } este es el control de acceso que se obtiene cuando no escribimos el modificador en la declaración, las clases con default access pueden ser vistas como clases con nivel de acceso a nivel de paquete, porque una clase con default access puede ser vista solo por clases dentro del mismo paquete. Por ejemplo si tenemos una clase llamada Persona en el paquete miempresa.core declarada de la siguiente manera:

package miempresa.core;
class Persona{ }

y queremos usar la clase anterior pero en otro paquete digamos miempresa.rrhh con la clase Empleado extendiendola de la siguiente manera:

package miempresa.rrhh;
class Empleado extends Persona{ }

Al compilar la clase Persona no hay problema, pero cuando queremos compilar la clase Empleado entonces el compilador nos retorna un error diciendonos que no tiene acceso a la clase Persona esto es cierto porque el modificador de acceso de la clase Persona es por default, es decir no está indicado explicitamente(no está escrito) y por lo tanto solo puede ser visto por aquellas clases declaradas en el mismo paquete, es decir en el paquete miempresa.core, lo anterior se puede solucionar declarando la clase Empleado en el paquete miempresa.core ó declarando el modificador de acceso a public

Modificador de Acceso Público.
Una declaración de clase con la palabra clave public da a todas las clases de todos los paquetes acceso a esta clase pública, es decir en el ejemplo anterior si a la clase Persona la redeclaro como
public class Persona{ } entonces esta clase puede ser accedida desde cualquier clase en cualquier paquete desde mi aplicación. Ojo que si tratamos de usar la clase pública desde otro paquete entonces debemos de importar dicha clase con la palabra clave import

Otros Modificadores de Clase que no son de Acceso.
Podemos modificar la declaración de una clase con las palabras clave final y abstract

Clases Finales.
Cuando es usada en la declaración de una clase, la palabra clave final significa que la clase no puede ser extendida, en otras palabras ninguna clase puede heredar o extender una clase declarada final si intentamos hacerlo en compilador nos retornará un error.

Clases Abstractas.
Una clase abstracta no puede nunca ser instanciada, su único proposito es ser extendida.
Es decir si tenemos:
public abstract class Persona{ }
no podemos hacer esto:
Persona p = new Persona();
lo que debemos de hacer es lo siguiente:
public class Empleado extends Persona{ }

sábado, 25 de julio de 2009

Pasos para certificarse en java.

Aqui vamos a ver el trámite que hay que realizar para poder dar el examen, ojo no para aprobarlo, ya depende de ti si has estudiado lo suficiente.

Primer paso: Comprar el voucher.
El voucher es un documento digital, que como todo documento tiene un número que lo identifica, cuando compras un voucher lo único que interesa es dicho número, el voucher lo puedes comprar mediante el partner de Sun en el Perú
cjava, te comunicas con Elizabeth Bazalar(elizabeth.bazalar@cjavaperu.com) ó con Edwin Maraví(emaravi@cjavaperu.com) indicandoles que deseas comprar un voucher de certificación de un determinado examen de Sun Microsystems, ellos te responderán rápidamente indicandote el costo en dólares del examen y el número de cuenta del Banco de Crédito para que realices el depósito ó si no te gusta ir al banco entonces puedes ir directamente a sus oficinas(Jr. Joaquin Bernal # 482 Lima 14 - Perú) y realizar el pago en efectivo. Una vez que has realizado el pago, seleccionado el examen y llenado(o enviado) tus datos principales(nombres completos, dni, teléfono, correo), entonces cjava procederá a comunicarse con Sun y estos últimos generarán el número de voucher que a más tardar en dos días está en la bandeja de entrada de tu correo electrónico.

Segundo paso: registrarse en prometric.
Una vez con el número de voucher ahora te toca registrarte y programar el examen en la web de prometric que es una empresa cuyo negocio es coordinar los registros y programaciones(lugar,fecha y hora) de los examenes que otras empresas como Sun Microsystems, Microsoft ó Oracle otorgan. Si es tu primer examen entonces lo primero que tienes que hacer es registrarte, llenas un formulario simple donde colocas la información básica para poder dar el examen.

Iniciando desde
aqui el sistema te va a dar varias opciones que a continuación enumero:

Locate a test site:
Seleccionamos el país(Country) y la provincia(State/Province) damos click en "Next>", en este paso en país seleccionamos "Perú" y en provincia la única opción que es "-- None --".

Ahora seleccionamos el programa de certificación que queremos, van a aparecernos dos listas una "Client" que es el listado de empresas que otorgan certificaciones(aquí podemos encontrar Sun Microsystems, Microsoft, Oracle, etc...) seleccionamos Sun Microsystems y en listado "Program" seleccionamos "Sun Microsystems(310-311)" y le damos click en "Next>",

Lo siguiente solo es la pantalla de bienvenida de Sun que entre otras cosas muestra las politicas de confidencialidad asi como también que tú cuando registrar un voucher tambien estás declarando que no eres un ciudadano de Cuba, Irán, Corea del Norte, Sudán Siria, etc.(esto por las politicas de embargo que EEUU mantiene con estos países) solo le damos click en "Next>"

Ahora nos toca seleccionar el examen que queremos dar deacuardo al voucher que compramos, en la lista "Exam" por ejemplo seleccionamos "310-065 - Sun Certified Programmer for the Java 2 Platform, SE 6.0", al hacer esto automáticamente las listas de abajo se llenan, la primera lista nos indica el idioma en el que queremos dar el examen seleccionamos "SPANISH" y en "Currencies" la moneda con la que queremos pagar el examen, esto ultimo solo es referencial, no le hagas caso y solo dale click en "Next>"

En la siguiente pantalla seleccionamos la institución(Site) donde queremos dar el examen, seleccionamos la que quieras pulsando sobre el enlace "Schedule Appointement". Ahora si es que somos nuevos entonces le damos en "Click Here" de la parte "Are you a new user".

En esta pantalla de registro voy a explicarles cada uno de los pasos:
Prometric Testing Id: Si eres nuevo ó nunca has dado un examen,entonces dejalo en blanco.

General Information(Información General)
First Name: Aqui debes ingresar tus nombres completos como aparece en tu DNI, por ejemplo para mi sería "CARLOS ALBERTO".

Middle Initial: Lo dejamos en blanco.

Last Name: Aqui nuestros apellidos, igual como aparece en el DNI, para mi sería "CACIQUE YUPANQUI"

Address where you would like your certificate and correspondence mailed(Dirección donde quieres que te lleguen los certificados):

Address Line 1: La dirección de mi casa: por ejemplo: "Av. Tupac Amaru 094 Urb. Manco Inca Comas"

Address Line 2: Lo dejamos en blanco ó especifica otra dirección.

City: La ciudad, para nuestro caso sería "LIMA"

Country: El país, para nuestro caso sería "Perú"

Zip Code / Postal Code: El código postal de nuestro distrito, lo puedes obtener desde acá para mi caso que soy de comas sería "LIMA 7", esto les sirve a Serpost para identificar más rápidamente la dirección exacta del paquete con el certificado.

Company Name: Lo dejamos en blanco.

Phone Information(Información Telefónica)

Debemos ingresar mínimo un teléfono, cuando seleccionamos el país en el campo anterior automáticamente se registra el código telefónico para el país ahora solo le colocamos el código de la ciudad "Area Code" si eres de Lima entonces "1" y el número de tu casa en "Number" y por ultimo la información para poder realizar un login en "prometric", "Email" "Password" y una confirmación del password así como una pregunta si es que olvidamos el password "Reminder question", aceptamos las condiciones "I agree" y le damos click en "Submit>"

Una vez con el usuario y clave regresamos(que fué enviado a nuestro correo electrónico) al punto donde seleccionamos la institución donde queremos rendir el examen, una vez seleccionada la institución e ingresado nuestro usuario y password vamos a programar el examen, nos aparecerá un calendario y una lista a la derecha, en el calendario se habilitarán los día disponibles deacuerdo a la institución y na vez seleccioando el día en la lista de la derecha aparecerá la hora en la que quieres dar el examen.

Ahora llega el momento de ingresar el código del examen "Voucher Number o Promotion Code", en Discount Type(tipo de descuento) seleccionamos "Voucher Number" y en Voucher Number el número del voucher que
cjava nos envió, le damos click en "Validate". Ahora solo leemos los datos de resumen(Todo lo que hemos hecho hasta aquí) y damos click en "Submit". Una vez realizado esto ultimo prometric nos enviará un correo electrónico con los datos de resumen.

Tercer paso: dar el examen,
Vas a la institución donde has programado el examen 30 minutos antes con tu DNI, firmas unos documentos que indican las politicas del examen como que está prohibido llevar aparatos electrónicos, copiar, etc.., porsiacaso te filman..., al final de dar el examen te entregan tu reporte que indica si has aprobado o no y los puntos del examen con un porcentage de aprobación sobre cada uno de ellos.

Cuarto paso: Solo si has aprobado y es tu primer examen,
Ahora tienes que validar tu dirección para que te envíen allí el certificado, esto debes de hacerlo dos días después de aprobar el examen a través de
certmanager desde aquí puedes rastrear tu certificado y validar la dirección para que una vez validado pueda ser enviado a Serpost y desde allí a tu casa.

Quinto paso: Esperar,
Sé paciente a que te llegue el certificado a tu casa, en aproximadamente 3 semanas te llegará.