Ronda de codificación:
La prueba en línea estaba en HackerRank. Había 3 preguntas.
- Tienes que preparar una pizza. Hay algunas cortezas y coberturas dadas. Se da el precio de cada corteza y cada topping. Para hacer una pizza, puede usar exactamente una base y la cobertura se puede usar como máximo 3 veces. Se da un precio objetivo. Debe devolver una combinación de corteza y coberturas cuyo precio total sea el más cercano al precio objetivo. El precio total también podría ser mayor que el precio objetivo. Pero si hay empate teníamos que devolver la pizza a un precio más bajo.
- Se dio una array color [] donde el color [i] representaba el color con el que se tenía que colorear un lápiz. Había un pincel correspondiente a cada color y tuvimos que esperar b segundos antes de volver a usar el mismo pincel (el tiempo para rellenar es b segundos). En cada segundo, puede pintar un lápiz o esperar a que se recargue el pincel. Para una b y un color dados [], encuentre el tiempo mínimo que toma colorear todos los lápices.
- Se proporcionó una cuadrícula n*m de bombillas. Algunos estaban encendidos (indicados por ‘O’) y otros estaban apagados (indicados por ‘X’). Cuando cambia el estado de una bombilla, también cambia el estado de las bombillas adyacentes. Devuelve el número mínimo de alternancias necesarias para apagar todas las bombillas o -1 si no es posible.
Los estudiantes que pudieron resolver los 3 problemas fueron preseleccionados para las entrevistas. 7 estudiantes fueron llamados para la entrevista.
Ronda 1: Entrevista 1
- El entrevistador me pidió que me presentara. Luego me pidió que explicara brevemente los proyectos que había mencionado en mi currículum. Había mencionado 6 proyectos en mi currículum. Uno estaba basado en blockchain, otros estaban relacionados con el desarrollo web. Le expliqué todos mis proyectos. Hizo preguntas intermedias relacionadas con mis proyectos, como qué enunciado del problema resuelve mi proyecto, por qué usé una pila de tecnología en particular, qué desafíos enfrenté para construirlo. Esto tomó alrededor de 20 minutos. Quedó satisfecho con mi descripción de los proyectos. Asegúrese de ser minucioso con todo lo que menciona en su currículum. Puede ser cuestionado sobre cualquier cosa en su currículum.
- Después de esto, me hizo preguntas generales basadas en DSA. Pidió mencionar varias estructuras de datos y decir cuál es la complejidad del tiempo para cada operación. Dio algunos escenarios y preguntó qué estructura de datos usaría y por qué. Después de esto, hizo una pregunta relacionada con el sistema operativo. Le dije que aún no se ha enseñado, me dijo que estaba bien y pasamos al par de códigos HackerRank.
- Me pidió que implementara una cola usando stack, inmediatamente codifiqué la solución y le expliqué la lógica. Ejecutó algunos casos de prueba y todos pasaron. Estaba satisfecho.
- Después de esto, me preguntó por qué quería unirme a Salesforce, qué hace Salesforce y cuáles son los valores fundamentales de Salesforce. Respondí a todas las preguntas y quedó satisfecho. Luego me preguntó si tenía alguna pregunta para él. Le pregunté en qué proyectos estaré trabajando si recibo una oferta, luego le pregunté si debería aprender algo el próximo año que me ayude en la pasantía. Respondió a ambas preguntas y dio por finalizada la entrevista.
Después de una hora más tarde, recibí una llamada para la segunda entrevista.
Ronda 2: Entrevista 2
Esto fue realmente diferente en comparación con cualquier otra entrevista que había dado.
- Como mencioné que uno de mis proyectos se basaba en Blockchain, había construido un sistema de votación basado en Blockchain para elecciones. El entrevistador también era un entusiasta de blockchain. Me pidió que le explicara todo lo que sabía sobre blockchain. Empecé desde cero, le dije por qué necesitamos un sistema descentralizado en primer lugar y cómo no podíamos depender de autoridades centrales como los bancos. Se lo expliqué en un lenguaje sencillo dando un ejemplo de la vida real de un libro público distribuido. Le expliqué cómo se almacenan los datos en forma de bloques interconectados (lista de enlaces únicos) y por qué la string de bloques es segura, inmutable, transparente y anónima. Expliqué las matemáticas detrás de esto, cómo se usa la criptografía para encriptar las transacciones usando la clave privada y la clave pública, cómo los mineros extraen criptomonedas resolviendo un rompecabezas criptográfico (encontrando el nonce usando fuerza bruta) usando su poder computacional, cómo funciona el consenso de prueba de trabajo (PoW), cómo es prácticamente imposible piratear una string de bloques pública, le conté sobre el 51 % ataque. Luego le dije cómo podemos hacer contratos inteligentes usando solidez y desplegarlos en la string de bloques de ethereum. Quedó muy impresionado con mi explicación. Me preguntó cómo aprendí todo esto. Estaba feliz de saber que exploro cosas fuera del plan de estudios y trato de aprender cosas nuevas por mi cuenta. Tuvimos una gran conversación y casi no me sentí como si estuviera en una entrevista. Finalmente llegamos a la conclusión de que blockchain tiene un potencial real para hacer que Internet sea realmente democrático. Esto fue durante 35-40 minutos. cómo funciona el consenso de prueba de trabajo (PoW), cómo es prácticamente imposible piratear una string de bloques pública, le conté sobre el ataque del 51%. Luego le dije cómo podemos hacer contratos inteligentes usando solidez y desplegarlos en la string de bloques de ethereum. Quedó muy impresionado con mi explicación. Me preguntó cómo aprendí todo esto. Estaba feliz de saber que exploro cosas fuera del plan de estudios y trato de aprender cosas nuevas por mi cuenta. Tuvimos una gran conversación y casi no me sentí como si estuviera en una entrevista. Finalmente llegamos a la conclusión de que blockchain tiene un potencial real para hacer que Internet sea realmente democrático. Esto fue durante 35-40 minutos. cómo funciona el consenso de prueba de trabajo (PoW), cómo es prácticamente imposible piratear una string de bloques pública, le conté sobre el ataque del 51%. Luego le dije cómo podemos hacer contratos inteligentes usando solidez y desplegarlos en la string de bloques de ethereum. Quedó muy impresionado con mi explicación. Me preguntó cómo aprendí todo esto. Estaba feliz de saber que exploro cosas fuera del plan de estudios y trato de aprender cosas nuevas por mi cuenta. Tuvimos una gran conversación y casi no me sentí como si estuviera en una entrevista. Finalmente llegamos a la conclusión de que blockchain tiene un potencial real para hacer que Internet sea realmente democrático. Esto fue durante 35-40 minutos. Quedó muy impresionado con mi explicación. Me preguntó cómo aprendí todo esto. Estaba feliz de saber que exploro cosas fuera del plan de estudios y trato de aprender cosas nuevas por mi cuenta. Tuvimos una gran conversación y casi no me sentí como si estuviera en una entrevista. Finalmente llegamos a la conclusión de que blockchain tiene un potencial real para hacer que Internet sea realmente democrático. Esto fue durante 35-40 minutos. Quedó muy impresionado con mi explicación. Me preguntó cómo aprendí todo esto. Estaba feliz de saber que exploro cosas fuera del plan de estudios y trato de aprender cosas nuevas por mi cuenta. Tuvimos una gran conversación y casi no me sentí como si estuviera en una entrevista. Finalmente llegamos a la conclusión de que blockchain tiene un potencial real para hacer que Internet sea realmente democrático. Esto fue durante 35-40 minutos.
- Después de esto, me hizo preguntas basadas en programación orientada a objetos. Me pidió que explicara qué es la herencia y el polimorfismo, por qué los usamos, sus diferentes tipos. Me preguntó qué es una clase abstracta, cuándo usarías una clase abstracta y cuándo usarías una interfaz. ¿Qué es una función virtual? Respondí todas las preguntas.
- Luego me preguntó si sabía sobre patrones de diseño, le dije que aún no se había enseñado y le dije que lo aprendería en el próximo semestre. No dijo ningún problema y pasamos al par de códigos HackerRank. Me pidió que escribiera el código para imprimir todos los subconjuntos (subsecuencias) de una string. Usé recursividad simple (elegir/no elegir) y codifiqué la respuesta. Lo probó en algunos casos de prueba y pasaron. Estaba muy contento con mi actuación y me dijo que estaba deseando trabajar conmigo.
15 minutos después, recibí la llamada para la entrevista final.
Ronda 3: Entrevista Ronda 3
Esta entrevista fue corta y bastante relajada. El entrevistador se presentó y me pidió que me presentara.
- Me pidió que le explicara los proyectos que había mencionado en mi currículum. Él también era un entusiasta de blockchain y tenía una buena comprensión de cómo funciona, me hizo preguntas sobre varios fundamentos relacionados con blockchain y la criptografía y las respondí todas.
- Mi segundo proyecto fue una aplicación de chat en tiempo real que usaba react y web sockets (socket.io). Le expliqué cómo funcionan los WebSockets y proporcionan un canal bidireccional para la comunicación entre el servidor y el cliente. Hizo algunas preguntas de seguimiento como cuál es la diferencia entre angular y reaccionar, por qué usé socket.io y cuáles son los otros WebSockets disponibles. Las respondí todas.
- Otros proyectos fueron: una versión simple de google-maps usando el algoritmo de Dijkstra, un clon de la aplicación splitwise, un clon del juego de serpientes y un compresor de archivos usando la codificación Huffman. Estaba muy feliz de que en 2 años había explorado tanto, también estaba impresionado con mi clasificación en Google Kickstart.
- Luego me preguntó sobre mis pasatiempos, clubes/departamentos de los que formé parte en la universidad y me preguntó quién es mi motivación.
- Al final, me preguntó si tenía alguna pregunta para él. Le dije que nuestra universidad usa superconjunto (aplicación de CRM) para administrar las contrataciones en el campus, ¿se puede hacer usando Salesforce? Quedó realmente impresionado con la pregunta y me explicó cómo podemos usar Salesforce. Entonces la ronda había terminado.
Los resultados se declararon el mismo día, 5 de 7 habían llegado a la ronda final y 2 estudiantes, incluyéndome a mí, fueron seleccionados para la pasantía.
Consejos de preparación:
La práctica es imprescindible para aprobar las pruebas de codificación, ya que las empresas pueden preseleccionar solo a aquellos que resuelven todas las preguntas. Estaba en la programación competitiva y dar concursos en codeforces y codechef regularmente me ayudó mucho. Ordene las preguntas según la dificultad / según el tema y siga resolviendo regularmente. Lea el editorial si no puede resolver una pregunta después de intentarlo lo mejor posible. Lee blogs para aprender cosas/algoritmos nuevos. Resuelva preguntas de GFG/Leetcode para practicar preguntas específicas de la entrevista.
Aparte de esto, explore cosas nuevas como desarrollo web, desarrollo de aplicaciones, blockchain, aprendizaje automático. Aprenda uno de estos correctamente y construya proyectos. Tuve suerte de que mi segundo entrevistador también estuviera interesado en blockchain, pero es posible que este no sea el caso todo el tiempo. Prepara bien las materias centrales de CS como OOP, DBMS/OS (no me preguntaron nada sobre DBMS). Asegúrese de agregar solo aquellas cosas en su currículum que conoce a fondo.
Fui rechazado por 5 empresas antes de recibir una oferta de Salesforce. Así que no pierdas la esperanza. Ten fe en ti mismo, confía en el proceso y sigue trabajando duro. Eventualmente obtendrá lo que es mejor para usted.