Ser un experto en JavaScript Aunque JavaScript ha estado en el negocio durante más de 25 años, todavía se considera uno de los lenguajes de programación más complicados a nivel experto. Hay tantos conceptos en este lenguaje. A lo largo de los años, JavaScript ha cambiado mucho. Las funciones antiguas se eliminan o actualizan. Se agregan nuevas características con frecuencia. Por estas (y muchas otras) razones, no es fácil convertirse en desarrollador de JavaScript. Resolver los desafíos de codificación de JavaScript de nivel experto es aún más difícil. Entonces, en este artículo, enumeraremos los 3 principales desafíos de codificación de nivel experto para los desarrolladores de JavaScript. Desafío n.º 1: encontrar la longitud de la subcadena más larga sin repetir caracteres Las cadenas se usan comúnmente para verificar la experiencia y el nivel de un programador. En JavaScript, las cadenas se usan mucho. Entonces, el entrevistador siempre se enfoca en las cadenas. En este desafío de codificación, tienes una cadena en la que cada carácter es un alfabeto como el siguiente. str = let "abbbcabcdefef" Debe encontrar la longitud de la subcadena más larga de la cadena sin repetir ningún carácter. En otras palabras, encuentre la longitud de la subcadena más larga con caracteres únicos. En la cadena anterior, la subcadena más larga sin caracteres repetidos es "abcdef". Entonces la salida será 6. La primera forma de resolver este desafío es usando loops y Set. getLength = { finalLength = ; ( i = ; i < str.length; i++) { currentString = (); ( j = i; j < str.length; j++) { (currentString.has(str[j])) { ; } { currentString.add(str[j]); } } finalLength = .max(finalLength, currentString.size); } finalLength; }; str = ; .log(getLength(str)); let ( ) function str let 0 for let 0 let new Set for let if break else Math return const "abbbcabcdefef" console En este enfoque, primero, se realiza un bucle a través de cada carácter y luego, para cada carácter, se realiza un bucle para los caracteres restantes. Cada uno de los personajes se agrega al Conjunto hasta que se encuentra un personaje repetido. En este punto, cuando se encuentra el carácter repetido, su longitud se almacena en una variable. El enfoque anterior funciona bien, pero no es eficiente. En su lugar, utilice el siguiente enfoque con matrices. getLength = { currentString = []; finalLength = ; ( i = ; i < str.length; i++) { currentCharacterIndex = currentString.indexOf(str[i]); (currentCharacterIndex !== ) { currentString.splice( , currentCharacterIndex + ); } currentString.push(str[i]); finalLength = .max(finalLength, currentString.length); } finalLength; }; str = ; .log(getLength(str)); let ( ) function str let let 0 for let 0 const if -1 0 1 Math return const "abbbcabcdefef" console Este enfoque es similar al anterior, pero en lugar de Set, utiliza una matriz para almacenar la cadena actual. Desafío n.º 2: reestructurar una matriz: primer número, segundo número En este desafío de codificación, se le proporcionará una matriz que contiene números y letras. Tienes que reestructurar la matriz de manera que los números estén primero y las letras en segundo lugar. Por ejemplo, la siguiente es la matriz. arr = [ , , , , , , , , , ]; let 2 "b" 4 "d" 3 "a" "c" "e" 5 1 La salida debe ser; [2, 4, 3, 5, 1, "b", "d", "a", "c", "e"]; La solución básica es mediante el uso de matrices y bucles for. Pero, como este desafío es para desarrolladores expertos de JavaScript, use funciones de matriz modernas como filter(). numbersFirstAlphabetsSecond = { numbers = []; alphabets = []; finalArr = []; numbers = arr.filter( val === ); alphabets = arr.filter( val === ); finalArr = [...numbers, ...alphabets]; finalArr; }; arr = [ , , , , , , , , , ]; .log(numbersFirstAlphabetsSecond(arr)); let ( ) => arr let let let ( ) => val typeof "number" ( ) => val typeof "string" return let 2 "b" 4 "d" 3 "a" "c" "e" 5 1 console En este enfoque, los números y los alfabetos se almacenan en matrices separadas. Luego, se fusionan en una sola matriz de acuerdo con la estructura. Este desafío puede tener un giro. El entrevistador puede pedir ordenar los números y alfabetos en la matriz final. Si conoce la función correcta que debe usar, será muy fácil. numbersFirstAlphabetsSecond = { numbers = []; alphabets = []; finalArr = []; numbers = arr.filter( val === ); alphabets = arr.filter( val === ); finalArr = [...numbers.sort(), ...alphabets.sort()]; finalArr; }; arr = [ , , , , , , , , , ]; .log(numbersFirstAlphabetsSecond(arr)); let ( ) => arr let let let ( ) => val typeof "number" ( ) => val typeof "string" return let 2 "b" 4 "d" 3 "a" "c" "e" 5 1 console En este desafío, el motivo principal es comprobar cómo los desarrolladores trabajan con arreglos. Además, el entrevistador quiere verificar el conocimiento de la función incorporada del desarrollador. Desafío n.º 3: girar la matriz 2D en el sentido de las agujas del reloj Los desafíos de codificación relacionados con Matrix están reservados para desarrolladores experimentados. Por lo tanto, existe una gran posibilidad de que encuentre un desafío de codificación relacionado con la matriz en una entrevista de JavaScript de nivel experto. En este desafío de codificación, se le proporcionará una matriz 2d con la misma cantidad de filas y columnas. Tienes que rotar esa matriz en el sentido de las agujas del reloj. Lo siguiente es una entrada con una matriz de 3 x 3. m = [ [ , , ], [ , , ], [ , , ], ]; let 0 1 2 3 4 5 6 7 8 La salida debe ser; [ [ , , ], [ , , ], [ , , ], ]; 6 3 0 7 4 1 8 5 2 Para resolver este desafío, primero transponga (volteando las coordenadas x e y) la matriz y luego inviértala. clockWise = { ( r = ; r < mat.length; r++) { ( c = ; c < r; c++) { temp = mat[r][c]; mat[r][c] = mat[c][r]; mat[c][r] = temp; } } finalMat = mat.map( r.reverse()); finalMat; }; m = [ [ , , ], [ , , ], [ , , ], ]; .log(clockWise(m)); const ( ) => mat for let 0 for let 0 let let ( ) => r return let 0 1 2 3 4 5 6 7 8 console En el enfoque anterior, primero, la matriz se transpone y luego, usando las funciones reverse() en la función map(), la matriz transpuesta se invierte. Este desafío es difícil y requiere un conocimiento suficiente de la resolución de problemas matriciales. El desarrollador debe saber transponer la matriz porque es la clave de este problema. Envolviendolo Los desafíos de codificación para los desarrolladores expertos de JavaScript no serán fáciles. El desafío puede ser sobre cualquier tema, pero los más enfocados son los arreglos, las cadenas y las matrices, que discutimos en este artículo. Otros temas importantes son objetos, expresiones regulares, números, bucles, funciones y fechas.