Blog
Las 83 preguntas de Entrevista o Examen sobre Javascript que debes conocer
- Publicado por: Rafael Fernandez
- Categoría: Blog Java Script
Con esta serie de preguntas de entrevista de JavaScript vas a poder comprobar tus conocimientos de la materia para una entrevista de JavaScript. De esta manera, podrás prepárate mejor y le sacarás el máximo provecho a tu evaluación. Adicionalmente, si eres principiante te va a servir para conocer los conceptos elementales de Javascript.
JavaScript es un lenguaje de programación que ha sido concebido para profesionales y todos los que se desenvuelven en el desarrollo de paginas web. Es un lenguaje que funciona del lado del cliente y servidor, por tanto, son los navegadores los que se ocupan de interpretar el lenguaje Javascript. Vale resaltar que JavaScript no es lo mismo que Java.
- JavaScript ha sido un lenguaje interpretado, y Java compilado. Los programas de JavaScript son archivos de texto que se integra directamente en las páginas HTML y es interpretado (sin estar compilado) por el cliente (navegador), mientras que en Java se compilan a un archivo especial para que ser optimizados a un lenguaje intermedio llamado bytecode, y leído posteriormente en un ordenador que lo ejecute.
- Java es un lenguaje de programación orientado a objetos puros (OOP), mientras que JavaScript está basado en prototipos y, puede emular la programación orientada a objetos.
- JavaScript es gestionado por ECMAScript, una organización sin ánimo de lucro. En Java, el control lo tiene Oracle, una empresa privada que lo gestiona en función de sus intereses.
- JavaScript se depura en una fase y Java en dos. JavaScript hace que el código trabaje informando de los errores que se producen a medida que se ejecutando. Java, primero hace la fase de compilación y el compilador nos indica los posibles errores de sintaxis presentes en nuestro código. Después, se ejecuta el programa, donde pueden surgir errores para ser depurados.
- Java tiene variables definidas que no se pueden cambiar y es más complejo, JavaScript puede ser cambiante, dándole flexibilidad y es más sencillo.
- JavaScript es débilmente tipado, una misma variable puede contener primero un texto, luego un número, un array o un objeto. Esto, que parece una ventaja, también es fuente de posibles errores si no controlamos correctamente lo que ocurre en nuestro código. Java es fuertemente tipado, todas las variables tienen un tipo determinado y, una vez definidas, no se pueden cambiar.
Los tipos de datos JavaScript son: String, booleano, Objeto, Número, Indefinido.
La función isNan devuelve verdadero si el argumento no es un número porque de lo contrario arrojaría un falso.
JavaScript es más rápido porque es un lenguaje del lado del cliente y no necesita la ayuda del servidor web para ejecutarse. Por otra parte el ASP es un lenguaje del lado del servidor. Motivo por el que siempre es más lento que JavaScript. Sin embargo, Javascript ahora, también puede ser usado como un lenguaje de lado del servidor (server side) (nodejs).
Infinito Negativo es un número en JavaScript que puede ser derivado, al dividir el número negativo entre cero.
Si, haciendo una declaracion string con el uso de una barra invertida (slash), '\', al terminar la primera línea
Ejemplo:
// Con strings var texto = 'Este es un texto\ de varias \ lineas' console.log(texto) // Salida por consola Este es un texto de varias lineas // Con variables var x=1, y=2, z= x+y;
En cuanto al código de ejemplo con las variables está muy bien, aunque no es recomendable porque puede que dificulte la depuración de errores.
La compañía de software Netscape fue quien desarrolló el JavaScript.
Variables no declaradas: son las que no existen en un programa, y no se declaran. Si el programa trata de leer su valor entonces va a arrojar un error.
Variables no definidas: son aquellas declaradas en el programa, pero no tienen asignado ningún valor. Si el programa quiere leer el valor de variable no definida, se devuelve un valor no definido.
<html> <head> <title> Añadiendo elementos de forma dinámica con nodos de texto </title> </head> <body> <div id="nodo-texto"></div> <script type="application/javascript"> var elemento = document.createElement("H1") // Creamos un elemento del tipo h1 var texto = document.createTextNode("Este es un texto creado a través de un nodo de texto"); // Creamos un texto con un nodo de texto elemento.appendChild(texto); // Agregamos el nodo de texto al elemento document.getElementById('nodo-texto').appendChild(elemento) // Para podemos mostrarlo en el DOM lo seleccionamos el div donde lo queremos introducir y le pasamos como hijo el h1 </script> </body> </html>
Las variables globales son las que están a disposición para utilizar en todo el código, esto quiere decir, que no tienen alcance. La palabra clave (var) es utilizada para declarar una variable u objeto local. Si la palabra clave (var) es omitida, se declara como variable global.
Ejemplo:
var miVariableGlobal = null function crearTexto(){ miVariableGlobal = 'Hola mundo' return miVariableGlobal } crearTexto() console.log(miVariableGlobal) // Salida por consola Hola mundo
Las situaciones que enfrenta el uso de las variables globales, es el choque de nombres de las variables de alcance local y global. Asimismo, es difícil limpiar y probar el código que se sujeta en variables globales.
Es un cuadro que permite al usuario introducir datos, mediante un cuadro de texto. La etiqueta y el cuadro se suministrarán para que se pueda ingresar el texto o el número.
La palabra clave 'this' se refiere al objeto desde donde fue llamado.
Los temporizadores se usan para ejecutar un fragmento de código en un momento determinado o para repetir el código en un espacio de tiempo señalado. Esto se hace utilizando las funciones setTimeout, setInterval y clearInterval,
La función setTimeout (function, delay), es una funcion que se usa para iniciar un temporizador que llama a una funcion luego del retardo especificado. La función setInterval (function, delay) es utilizada para ejecutar repetidamente una función el el retardo (delay) que se especifique y solo se detiene cuando se cancela. La función clearInterval(id) es la que señala al temporizador que se pare.
Los temporizadores funcionan dentro de un hilo único, debido a esto, los eventos pueden quedar 'en cola', a la espera de ser ejecutados.
Se usa (//) para comentarios de una sola línea
Para comentarios multi-linea se abre con (/*) y se cierra con (*/).
‘ViewState' es muy específico para la página de una sesión.
‘SessionState' es específico para los datos del usuario, a los que se entra en las páginas de la aplicación web.
El operador (===) es llamado operador de igualdad estricta, el cual arroja verdadero (true) cuando los dos operandos poseen el mismo valor sin ningún tipo de conversión.
Si, se puede hacer usando:
document.form[0].submit();
Sí, Javascript es compatible con los tipos de conversión automática. Es un tipo de conversión muy usada por los desarrolladores de JavaScript.
De la siguiente forma:
document.getElementById("myText").style.fontSize = "20?;
o de esta otra:
document.getElementById("myText").className = "anyclass";
Hay dos formas de leer y escribir un archivo usando JavaScript:
-Utilizando extensiones JavaScript.
-A través de una página web y objetos ActiveX.
Las estructuras de bucles en Javascript son:
-For
-While
-Do-While
-forEach
La tipificación de variables se usa para asignar un número a una variable, y esta misma variable se puede asignar a un string.
Ejemplo:
i = 10; i = "cadena";
El ejemplo representa la tipificación de variables.
A través del uso de la función parseInt(), ya que, esta función toma el string a convertir como primer parámetro, y como segundo parámetro usa la base del string dado.
Para convertir 4F (de base 16) a entero, el código utilizado será:
parseInt ("4F", 16);
La diferencia es que ("==") chequea solamente la igualdad de valor, pero ("====") es la prueba de igualdad más estricta y además, devuelve falso si el tipo o el valor de las dos variables es distinto.
Dado que 3 y 2 son números enteros, se sumarán numéricamente. Y como el 7 es una cadena, se va a aplicar su concatenación, así que el resultado en este caso sería 57.
Es necesario usar la cadena navigator.platform.
El valor (NULL) es utilizado para representar a ningún valor o ningún objeto. Esto quiere decir, que no representa a ningún objeto o cadena, ni valor booleano, ni número u objeto de un array.
La palabra clave (delete) es usada para eliminar la propiedad, así como su valor.
Un valor no definido significa que:
-La variable usada en el código no existe.
-La variable no está acreditada a ningún valor.
-La propiedad no existe.
Alerta (alert), Confirmar (confirm) y Entrada por teclado(prompt).
alert('Esto es una alerta') confirm('Esto es una ventana de confirmación con un mensaje', true) prompt('Esto es una entrada por teclado, introduce cualquier valor: ')
Se usa Void(0) para prevenir que la página sea actualizada. También, se usa para llamar a otro método sin que se actualice la página.
Se puede usar el siguiente código para lograr objetivo deseado.
<script type="text/application/javascript" > document.location.href = 'https://www.google.co.ve/'; </script>
Todas las variables en JavaScript son del tipo objetos.
El cuadro de alerta sólo muestra un botón, el botón OK.
El cuadro de confirmación presenta dos botones: el de OK y Cancelar.
Los caracteres de escape (barra invertida) son utilizados para trabajar con caracteres especiales, entre ellos; comillas dobles, comillas simples, símbolos y apóstrofes.
Ejemplo:
document.write "I m a "good" boy" document.write "I m a \"good\" boy"
Son archivos pequeños de prueba que se guardan en un ordenador y se crean cuando el usuario visita los sitios web para guardar información necesaria.
El método pop() es un método parecido al método shift(), con la diferencia de que el Shift funciona al comienzo del array. También, el método pop() aparta el último elemento del array dado y lo devuelve. Por ello, el array que llama es entonces alterado.
Ejemplo:
var ropa= ["Camisa", "Pantalón", "Franela"]; ropa.pop(); //Ahora ropa se convierte en camisa, pantalón.
Si se usa innerHTML en JavaScript la desventaja es:
-Se reemplaza el contenido en todas partes
-El contenido innerHTML es re-analizado y elaborado en elementos, lo que hace que sea mucho más lento.
-El innerHTML no suministra validación, por lo tanto, potencialmente se puede insertar HTML válido y no válido en el documento y dañarlo.
La declaración Break sirve para salir del bucle actual.
La declaracion continue sirve para continuar con la próxima sentencia del bucle.
Primitivos: Son el número y tipos de datos booleanos.
Tipos de referencia: son los tipos más complejos, como las string y las fechas.
Los objetos genéricos se pueden crear como:
var myObjeto = new Object({ 'nombre': 'Diego', 'apeliido': 'Querales', 'edad': 25, }) // Salida por consola {nombre: "Diego", apeliido: "Querales", edad: 25}
Typeof': es un operador que se usa para regresar una descripción de cadena del tipo de una variable.
Try, Catch y Finally son las que se utilizan para manejar excepciones en lenguaje JavaScript
Try{ Code } Catch(exp){ Código para lanzar una excepción } Finally El código se ejecuta o bien termina con éxito después del catch. }
document.write ("Bienvenido") se usa para imprimir el texto - 'Bienvenido' en la pantalla.
El evento blur es usado para desaparecer el enfoque del objeto especifico.
var myForm = document.getElementById("form"); myForm.addEventListener("focus", function (event) { event.target.style.background = "pink"; }, true); myForm.addEventListener("blur", function (event) { event.target.style.background = ""; }, true);
Código HTML
<form id="form"> <input type="text" placeholder="text input"> <input type="password" placeholder="password"> </form>
La tipificación de variables, sirve para asignar un número a una variable y después asignar un string a la misma variable.
Ejemplo:
i= 8; i="john";
Mediante navigator.appVersion se puede conseguir la versión del navegador que está usando el cliente
Se pueden encontrar tres tipos de errores:
-Errores de tiempo de carga: Son los errores que se originan al cargar una página web, como son los errores de sintaxis inadecuados, los cuales se conocen como errores de tiempo de carga y producen los errores dinámicamente.
-Errores de tiempo de ejecución: Son los errores producidos motivado al mal uso del comando dentro del lenguaje HTML.
-Errores lógicos: Estos errores se producen debido a la mala lógica realizada en una función que tiene una operación distinta.
El método push es el utilizado para añadir o añadir uno o más elementos al final de un Array. Cuando se usa este método, se pueden añadir múltiples elementos pasando múltiples argumentos.
Unshift es un método parecido al método push, el cual funciona al comienzo del array. Este método es usado para anteponer uno o varios elementos al comienzo del array.
Los dos son muy similares. JavaScript fue desarrollado por Netscape y Jscript fue desarrollado por Microsoft.
Las propiedades se asignadas a los objetos de la siguiente forma:
obj["class"] = 12;
o también como:
obj.class = 12;
El modo estricto (strict) en JavaScript muestra los errores de un fragmento de código que anteriormente no mostraba ningún error. Pero que puede ser problemático e inseguro. En este modo también, se resuelven varios errores que dificultan la función eficiente de los motores de JavaScript.
El modo estricto puede ser activado agregando la cadena "use strict" sobre el archivo. Esto se puede mostrar con el siguiente ejemplo:
function myfunction() { "use strict"; var v = "Esta es una función de modo estricto"; }
El status se puede adquirir de la siguiente forma.
alert(document.getElementById('checkbox1').checked);
Si la casilla de verificación está marcada, esta alerta devolverá 'True'.
El evento onload no se ejecuta hasta después que se cargue toda la información de la página. Esto produce un retraso sustancial antes de que se ejecute cualquier código.
Por otro lado, el evento onDocumentReady permite cargar el código justo después de cargar el DOM. Esto permite manipular el código tempranamente.
El closure es una variable declarada localmente y que está relacionada con una función que sigue en memoria cuando la función ha regresado.
Ejemplo:
function saludo(mensaje) { console.log(mensaje); } function saludar(nombre, edad) { return nombre +" dice Hola! tengo" + edad + " años"; } // Generar el mensaje var mensaje= saludar("Rafael", 32); // Explícitamente para saludar saludo(mensaje);
Esta función se puede representar mejor usando cierres:
function saludar(nombre, edad) { var mensaje= nombre + "dice Hola! tengo" + edad + " años"; return function saludo() { console.log(mensaje); }; } // Generar el closure var Rafael= saludar("Rafael", 32); // Usa el cierre Rafael();
Un valor puede ser agregado a un array de la siguiente manera:.
arr[arr.length] = valor;
El bucle for-in, es usado para hacer un ciclo a través de las propiedades que tiene un objeto. La sintaxis del bucle for-in es:
for(nombre-de-la-variable in objeto){ bloque a ejecutar aqui }
En cada repetición, una propiedad del objeto es asociada al nombre de la variable, y el bucle sigue hasta que se terminen todas las propiedades del objeto.
Una función anónima es la que se declara sin ningún identificador nombrado. Es decir, la función anónima es inaccesible después de su declaración.
Declaración de función anónima:
var anon = function() { alert('Soy anónimo'); }; anon();
Las funciones .call() y .apply() son similares en cuanto a su uso, pero tienen una pequeña diferencia. Esto se debe a que, .call() se utiliza cuando el programador conoce el número de argumentos de la función, porque se deben mencionar como argumentos en la sentencia/declaración de llamada. Por otra parte, .apply() se usa cuando no se conoce el número. Entonces, apply() espera que el argumento sea un array.
Así pues, la diferencia básica entre ambas .call() y .apply(), está basada, en la forma en que pasan los argumentos a la función. Su uso se puede ilustrar con el siguiente ejemplo:
var unObjeto = { miPropiedad : 'Foo', miMetodo : function(prefijo, sufijo) { alert(prefijo + this.miPropiedad +sufijo); } }; unObjeto.miMetodo('<', '>'); // alerts <Foo>''. var otroObjeto = { miPropiedad : 'Bar' }; otroObjeto.miMetodo.call(otroObjeto, '<', '>'); // alerta '<Bar>'. otroObjeto.miMetodo.apply(otroObjeto, ['<', '>']); // alerta '<Bar>')
JavaScript permite que los elementos DOM estén anidados uno dentro del otro. Es decir, si se hace clic en el controlador del hijo (child handler), el controlador del parent (parent handler) va a funcionar como si también se hubiera hecho clic en el de él.
Sí, JavaScript diferencia entre las mayúsculas y las minúsculas.
Un ejemplo es, una función parseInt, no es la misma que la función Parseint.
Pueden utilizarse el operador 'And' (&&), el operador'Or' (||) y el operador 'Not' (!). Los operadores no llevan los paréntesis.
Se puede hacer introduciendo el nombre del frame requerido en el hipervínculo y usando el atributo 'target'.
<a href="/nueva.htm" target="newframe">>Nueva Página </a>
La declaración Break se usa para salir del bucle actual, mientras que la sentencia continue continúa el bucle actual pero con nueva recurrencia.
web-garden y web-farm son sistemas de alojamiento web. La única diferencia es que web-garden es una configuración que tiene muchos procesadores en un solo servidor, mientras que web-farm es una configuración más grande, por lo tanto, utiliza más de un servidor.
La asignación de propiedades a objetos se hace de la misma forma que se asigna un valor a una variable.
Ejemplo: Document.form.action="submit"
Se puede hacer utilizando extensiones JavaScript (se ejecuta desde el editor JavaScript).
Ejemplo, para abrir un archivo.
fh = fopen(getScriptPath(), 0);
DOM (Modelo de objeto de documento) es responsable de la manera en que varios objetos de un documento interactúan entre sí. DOM es necesario para el desarrollo o creación de páginas web que poseen objetos como: enlaces, párrafos, entre otros.
Estos objetos pueden ser operados para incluir acciones como agregar o eliminar. DOM, es necesario también para agregar capacidades adicionales a una página web. Asimismo, el uso de API proporciona una ventaja sobre otros modelos existentes.
Los eventos son acciones que resultan de las actividades, como: hacer clic en un enlace o rellenar un formulario por parte del usuario. Es necesario un gestor de eventos para gestionar la ejecución de forma correcta de todos los eventos. El manejador de eventos son un atributo extra del objeto. Este atributo tiene el nombre del evento y la acción tomada, si el evento ocurre.
Por defecto, el análisis del código HTML, mientras se carga la página se pausa hasta que el script no se haya dejado de ejecutar. Es decir, si el servidor es lento o el script es pesado, la página web se muestra con un retraso. Si se usa un script diferido (Deferred), se retarda la ejecución del script hasta el momento en que se ejecuta el analizador de HTML. Esto disminuye el tiempo de carga de las páginas web y se muestran más rápido al usuario.
Los distintos componentes funcionales de JavaScript son:
Funciones de primera clase: Las funciones de JavaScript se usan como objetos de primera clase. Esto significa que las funciones, se pueden pasar como argumentos a otras funciones, devueltas como valores de otras funciones, asignadas a variables o pueden ser guardadas en estructuradas de datos.
Funciones anidadas: Son las funciones, que se definen dentro de otras funciones. Se llaman `cada vez que' se nombra la función principal.
JavaScript emite un mensaje si se encuentra un error. Los errores reconocidos son:
Errores en el tiempo de carga: Estos errores se encuentran al usar la sintaxis de forma incorrecta, y por tanto, se detectan mientras la página se está cargando. Por ejemplo: los errores en el momento de la carga de la página, se cuentan como errores de tiempo de carga
Errores en tiempo de ejecución: Este error aparece mientras el programa está en ejecución. Es causado por operaciones como por ejemplo, división de un número por cero, o por intentar entrar a un área inexistente de la memoria.
Errores de lógica: son causados por el uso de un código correcto sintácticamente pero que no cumple con la tarea requerida, ejemplo, un bucle infinito.
Los objetos de pantalla sirven para leer la información de la pantalla del cliente. Sus propiedades son:
-AvailHeight: Da la altura de la pantalla del cliente
-AvailWidth: Da el ancho de la pantalla del cliente.
-ColorDepth: suministra la profundidad de bits de las imágenes en la pantalla del cliente
-Altura: Proporciona la altura general de la pantalla del cliente, incluye la barra de tareas.
-Ancho: muestra el ancho total de la pantalla del cliente, incluye la barra de tareas.
El método unshift(), es funcional al iniciar un array, a diferencia de push(). Este agrega el número deseado de elementos a la parte superior de un array.
Ejemplo:
var nombre = [ "jose" ]; name.unshift ("eduardo"); name.unshift ("pedro", "juana"); console.log(nombre);
La salida se muestra a continuación:
[" pedro"," juana", " eduardo", " juan"]-La función escape() es la responsable de codificar un string para hacer el pase de información de un ordenador hacia el otro, a través de una red.
Ejemplo:
<script> document.write(escape ("Hola? Como estas tu?")); </script>>
Salida: Hola%3F%20Como%20estas%20tu%21
-La función unescape() es importante porque es la que decodifica la cadena codificada.
Ejemplo:
<script> document.write(unescape("Hola%3F%20Como%20estas%20tu%21")); </script>>
Salida: Hola? Como estas tu?
EncodeURl(): es utilizado para convertir URL a su codificación hexadecimal. DecodeURI() se utiliza para convertir la URL codificada de vuelta a normal.
<script> var uri="my test.asp?name=ståle&car=saab"; document.write(encodeURI(uri)+ "<br>"); document.write(decodeURI(uri)); </script>
Salida:
my%20test.asp?name=st%C3%A5le&car=saab
my test.asp?name=ståle&car=saab
No se recomienda su uso porque es muy lento dado que refresca el contenido cada vez. Es más fácil insertar un código errado en el documento y hacer que la página web sea inestable.
var myArray = [[[]]];
Declara un array tridimensional.
ECMA Script son como reglas y directrices, mientras que Javascript es un lenguaje de scripting usado para el desarrollo web.
Namespacing se utiliza para agrupar funciones, variables, etc con un nombre único. Esto mejora la modularidad en codificación y permite la reutilización del código.
Para ocultar códigos JavaScript de navegadores antiguos con este código:
Añada "<!--" sin las comillas en el código justo después de la etiqueta <script>. Añada "//-->>" sin las comillas en el código justo antes de la etiqueta <script>.
Ahora los navegadores antiguos verán este código JavaScript como un comentario HTML. Mientras que, un navegador que soporte JavaScript, tomará los "<!--" y "//---->" como comentarios de una línea.
muy buena guía de repaso cosas que no tenia conocimiento para que se usan pero si es bueno saberlas
un mono borracho habría escrito mejores preguntas.
he visto 10 y las 10 tenían errores.
Hola Nacho, gracias por tu sinceridad, trabajaremos en ello y siempre intentamos mejorar. ¿En que preguntas ves errores? saludos
Son fáciles, pensaba que pondrian katas complicadas y cosas así.
Muy buena guía!
Me ayudo para incrementar conocimientos en js
No le hagas caso a Nacho.. debe escribir para irritar a personas.
Sl2!
Cuando vi la nsegunda pregunta “diferencias entre java y javascrit” me marco lo buena q es esta guia.
Alch esta bien vergas esta guia , fuck nacho .l.
El Nacho es un programador egocéntrico y creeme que nunca vas a llegar a ningún lado con esa actitud es un examen diagnóstico