Resuelvo un EJERCICIO REAL de ENTREVISTA TÉCNICA para posición de Ingeniero de Software

preview_player
Показать описание

Si alguna vez has tenido dudas sobre cómo son realmente los problemas de las entrevistas de trabajo para posiciones de desarrollo, en éste vídeo resuelvo un problema real que me encontré en una entrevista técnica.

👾 Redes sociales 👾

👨🏼‍🏫 MIS CURSOS 👨🏼‍🏫
👽 Curso de iniciación a la programación con JavaScript:

👕 MERCHANDISING DEL CANAL:

⭐️ AFILIADOS ⭐️

🎁 7% Descuento en HOSTINGER (Código BETTATECH)

🧠 Autocompletado con IA (Kite)

🐾 MacPaw (CleanMyMacX):

🎵 TODA la música es de EpidemicSound:

✉️ CONTACTO PROFESIONAL:
► Respuesta no garantizada:

📚 LIBROS 📚
Design Patterns
Head First Design Patterns
Refactoring
Clean Architecture
Clean Code
Introduction to Algorithms
Cracking the Coding Interview

⏱ ÍNDICE:
• 0:00 - Introducción
• 1:39 - El problema
• 2:15 - Solución poco eficiente
• 3:59 - Programando la solución final
• 10:27 - Conclusión
Рекомендации по теме
Комментарии
Автор

Has un mini curso sobre estructura de datos estaría genial, buen video 👌

franciscomesias
Автор

Deberías subir + vídeos de este estilo, se aprende muy bien a programar viendo a un profesional experimentado haciéndolo.

Un saludo Betta

fran
Автор

Podrías usar la función de normalize() sobre TODO el texto antes del for y evitar aún mas consumo innecesario (ya que lo usas 3 veces por cada ciclo) suponiendo que JS guarde en memoría la primera vez que usas normalize() sobre una palabra aún lo estaría haciendo una vez por palabra en vez de una vez en total.

jorgeandresbravomeza
Автор

Codewars y hackerrank sirve mucho para este tipo de ejercicios! DATO

alejandrobravo
Автор

Estaría genial que vieras listas de problemas des icpc

jrerehs
Автор

bro, he aprendido más en un video de 10 mins que en 3 meses de carrera jajajajaja.

pablolanda
Автор

Excelente video!

He notado que no muchas personas lo usan, pero JavaScript trae consigo una implementación de Hash Map (new Map()) y Hash Set (new Set()) para este tipo de casos (a pesar de que es prácticamente igual que el objeto o {}). En mi caso mi solución fue la siguiente:

text = ]/g, "").split(/\s/);

const appearances = text.reduce((acc, val) => {
if (!acc.has(val)) {
acc.set(val, 1);
} else {
acc.set(val, acc.get(val) + 1);
}

return acc;
}, new Map());

gabrielmoreno
Автор

Eso estaba en un ejercicio en la primer materia de la carrera de sistemas. Ni siquiera de examen.

En python era el curso.

Mi solución:
1. Hacer todo minúscula. Es una linea. Todos se rompían la cabeza a falta de esto.
2. Crear un diccionario.
3. Comenzar detectando palabras desde la primera letra a la última usando isalpha (esta otra sí estaba recomendada por el ejercicio mismo) Volcar al diccionario sumando 1.

No veo mayores ineficiencias salvando que es un lenguaje de alto nivel y no tengo la más pálida de idea de como hace todo...

Lo mismo sucede en casi todo lenguaje. Lowercase+isalpha+sumar en un contenedor str:int. Debería bastar y el único trabajo es tener cuidado para construir el control de palabras, que donde comienza, termina y el final de la cadena para evitar fallos.

Alexis-kgsm
Автор

Me siento muy orgulloso de haber pensado en las tablas hash para hacer eso. 😭 No fueron al carajo las trasnochadas con estructuras de datos intentando que salieran las estructuras.

marcopablomazariegosmacari
Автор

¡Excelente explicación! gracias.

me gustaria agregar que tambien se podrian normalizar los simbolos (como punto, coma, y demás) con una expresión regular que elimine todo lo que no sea letra o número. Por ejemplo, está: [^a-zA-Z0-9] ...de esta manera nos asegurariamos que si o si se eliminaran todos.

Y tomar en cuenta también los acentos y demas cositas raras que pueden ir sobre las letras 😆
Hay muchas formas de hacer esto, y muchos ejemplos en internet. No estoy segura de cual sea la mas rapida.

También, no estoy completamente segura, pero, ¿normalizar todo el string al comienzo no es más eficiente que llamar a la función por cada palabra?

andreinariera
Автор

Una manera simple de bajar el costo computacional junto con la complejidad, perfecto para un ambiente de entrevista.
Otras ideas que se me ocurre para reducir la constante aledañas al algoritmo, en términos de tiempos son:
* DefiniR un máquina de estado, dónde se hay un estado que es la culminación de una palabra, dónde agregamos la palabra al hash.
*Usar un trie con la particularidad que las hojas del mismo tienen una referencia una lista enlazada y la cantidad. Cuando encontramos una palabra, si no existe la agregamos al trie por ende adicionamos a la lista enlazada, y empezamos de nuevo por la raíz.

pedrocarlosmartinez
Автор

Buen video! Yo hubiese normalizado la cadena y luego del split ordenado alfabéticamente, entonces comparaba con la palabra anterior: si matchea incremento contador, sino, agrego entrada al diccionario con contador en 1 y avanzo a la próxima.

diegorossi
Автор

Amigo muchas gracias por compartir éste vídeo, me pareció divertido e interesante, para mi estos son Mini Challengers ó Mini desafíos. Te quería comentar que éste código tiene una debilidad, tendrías que ingresar todos los caracteres extraños posibles para normalizar, creo que sería mejor normalizar considerando que las letras mayúsculas de la "A" a la "Z" van desde el carácter 65 hasta el 90. (esto es devolviendo el valor del caracter) y las letras minúsculas de la "a" a la "z" van desde el 97 hasta el 122. Cualquier carácter que esté fuera de ese rango lo sustituyo por un espacio en blanco, de esa forma elimino todos los caracteres extraños (sin tomar en cuenta los acentos). Espero haberme explicado amigo y sería interesante ver que lo implementaras. Yo lo que pasa es que no programo en éste lenguaje, pero tengo conocimientos de otros lenguajes.

gindCode
Автор

Mee encanta porque siempre estoy inseguro de lo que puedo hacer o lograr con los conocimientos adquiridos que tengo por la presión o demanda

EdenAlbertoSilvestre-bscw
Автор

Soluciona el problema, sí. Es por si misma una solución ocupando estructuras de datos, no tanto. Es como ordenar un arreglo usando un método Sort.

La explicación es clara y precisa, eso sin duda. Saludos!

sergioalva
Автор

El conocimiento dado por un experto como tú es muy valioso!

kievandres
Автор

Con la conclusión que me quedo (dentro de mi vulgaridad) es que es mejor pensar en una solución en la que solo sea necesario recorrer el array objetivo una vez. Gran Primer vídeo que veo tuyo, suscripción obligada

NeoAres
Автор

Bro, no se absolutamente nada de programacion, pero me entretuve tanto que vi todo el video, y entendi poco, pero dan ganas de aprender. Gracias Crack.

williamd.garcia
Автор

Apenas tuve una entrevista técnica en cual el problema fue el siguiente: recibir una cadena string y evaluar cuántas vocales y consonantes existían en esa cadena y después retornar las vocales y consonantes de forma ascendente y descendente. Me gustaría poder ver cómo lo implementarias por favor.

erickeduardoreyessalgado
Автор

Muy interesante los videos de este tipo, a mi me pidieron implementar un juego de poker, y ni siquiera se jugarlo, jajaja

MarceloAmigo_eu