Problema diario de codificaci贸n: Programaci贸n de acertijos en su bandeja de entrada

    Como casi cualquier otra profesi贸n, la clave para convertirse en un gran programador es practicar. Practicar a menudo y de manera constante es una manera asombrosa, y posiblemente la mejor, de desafiarse a s铆 mismo y mejorar sus habilidades de programaci贸n.

    Muchos de nosotros tenemos el deseo de trabajar en empresas tecnol贸gicas de primer nivel, como Microsoft, Google, Facebook, etc. Aunque mucha gente tiene miedo de intentar postularse para trabajos de tan alto calibre, se siente demasiado intimidada o infravalorada. calificado para un puesto en una de esas empresas.

    Ir a una entrevista con una de las principales empresas, o cualquier entrevista, con la mente clara y preparada es importante, ya que verse confiado y competente en una entrevista puede significar la diferencia entre conseguir el trabajo de sus sue帽os o ser rechazado.

    Hay tantas cosas que una persona puede hacer para tener confianza en esa entrevista y, en mi opini贸n, la mejor manera es simplemente practicar. Ser capaz de resolver un problema en el momento le dice al entrevistador m谩s sobre sus habilidades que cualquier cosa que pueda decir verbalmente.

    Hay muchas formas en que una persona puede practicar, ya sea sobre problemas y proyectos personales, otros recursos como libros o utilizando otros servicios en l铆nea. Problema de codificaci贸n diario es uno de esos servicios.

    驴Qu茅 es el problema de codificaci贸n diario?

    Daily Coding Problem es una plataforma simple y muy 煤til que le env铆a un correo electr贸nico con un problema de codificaci贸n para que lo resuelva cada ma帽ana. Esto asegura que practique de manera constante y con la frecuencia suficiente para mantenerse en forma durante un largo per铆odo de tiempo.

    Practicar un solo problema al d铆a es suficiente para tener un gran impacto en su conjunto de habilidades y confianza, especialmente cuando se enfrenta a una tarea que podr铆a enfrentar en una empresa de tecnolog铆a de primer nivel en un futuro cercano.

    Lo mejor de sus problemas es que utilizan problemas reales y preguntas de las principales empresas que otros candidatos se han enfrentado en sus sesiones de entrevistas all铆. Y personalmente, estoy de acuerdo con su filosof铆a: siempre es mejor estar demasiado preparado que mal preparado.

    Cualquiera puede utilizar su servicio, ya sea un aspirante a desarrollador autodidacta, un reci茅n graduado de la universidad o un desarrollador profesional experimentado que busca perfeccionar sus habilidades. Lo que m谩s importa es su comprensi贸n de los conceptos, estructuras de datos y algoritmos que tiene a su disposici贸n para resolver un problema determinado.

    Y una de las mejores cosas de DCP es que recibe estos problemas de codificaci贸n en su bandeja de entrada de forma gratuita. Por una peque帽a tarifa, tambi茅n te enviar谩n las soluciones y explicaciones detalladas de cada problema que te env铆en por correo electr贸nico a tu bandeja de entrada, que recibir谩s el d铆a despu茅s del problema, d谩ndote tiempo para resolverlo por tu cuenta. .

    Un problema de ejemplo

    Con cada problema que se le env铆e por correo electr贸nico, obtendr谩 la empresa de origen, la formulaci贸n del problema y un ejemplo de c贸digo. En esta secci贸n, veremos uno de los problemas de codificaci贸n de DCP y la soluci贸n detallada correspondiente:

    Given two singly linked lists that intersect at some point, find the intersecting node. The lists are non-cyclical.
    
    For example, given A = 3 -> 7 -> 8 -> 10 and B = 99 -> 1 -> 8 -> 10, return the node with value 8.
    
    In this example, assume nodes with the same value are the exact same node objects.
    
    Do this in O(M + N) time (where M and N are the lengths of the lists) and constant space.
    

    Este problema fue planteado por Google en una entrevista real.

    T贸mese su tiempo para leer atentamente este problema y pensar un poco en c贸mo resolverlo antes de continuar. De acuerdo con la Preguntas frecuentes de DCP, debe tener alrededor de una hora para resolver estos problemas en las entrevistas, por lo que ese tambi茅n debe ser el per铆odo de tiempo que se permita para resolverlos en casa.

    Una vez que crea que lo ha descubierto, o cuando se queda atascado, puede echar un vistazo a la soluci贸n detallada proporcionada por Daily Coding Problem:

    We might start this problem by first ignoring the time and space constraints, in order to get a better grasp of the problem.
    
    Naively, we could iterate through one of the lists and add each node to a set or dictionary, then we could iterate over the other list and check each node we're looking at to see if it's in the set. Then we'd return the first node that is present in the set. This takes O(M + N) time but also O(max(M, N)) space (since we don't know initially which list is longer). How can we reduce the amount of space we need?
    
    We can get around the space constraint with the following trick: first, get the length of both lists. Find the difference between the two, and then keep two pointers at the head of each list. Move the pointer of the larger list up by the difference, and then move the pointers forward in conjunction and check if they match.
    
    def length(head):
        if not head:
            return 0
        return 1 + length(head.next)
    
    def intersection(a, b):
        m, n = length(a), length(b)
        cur_a, cur_b = a, b
    
        if m > n:
            for _ in range(m - n):
                cur_a = cur_a.next
        else:
            for _ in range(n - m):
                cur_b = cur_b.next
    
        while cur_a != cur_b:
            cur_a = cur_a.next
            cur_b = cur_b.next
        return cur_a
    

    DCP ofrece explicaciones detalladas y en profundidad como esta para ayudarlo a resolver cada problema y comprender realmente la soluci贸n, adem谩s de reforzar la l贸gica que utiliz贸 si pudiera resolverlo por su cuenta.

    Como puede ver, estos problemas dependen en gran medida tanto de la l贸gica como de la creatividad, que es lo que los hace muy dif铆ciles de resolver. Pero una vez que haya practicado lo suficiente y haya aprendido los trucos detr谩s de estos problemas, como c贸mo pensar en el problema y la soluci贸n, y qu茅 herramientas tiene a su disposici贸n, se volver谩n mucho m谩s f谩ciles.

    驴Qu茅 lenguajes de programaci贸n?

    Actualmente, DCP proporciona soluciones en Python, ya que es muy conocido y similar al pseudoc贸digo, adem谩s de f谩cil de aprender. Esta parece ser una buena opci贸n para las soluciones, ya que el c贸digo Python es bastante f谩cil de traducir a otros lenguajes, dada su sintaxis simple y su estilo de programaci贸n sencillo.

    Adem谩s, DCP tambi茅n est谩 buscando expandir su grupo de soluciones a otros lenguajes, como Java, JavaScript, C ++ y Ruby.

    Precios

    La mejor parte de todo esto es que es absolutamente gratis suscribirse a su servicio y recibir problemas para resolver cada ma帽ana.

    Para recibir las soluciones por correo electr贸nico, por otro lado, requiere que pague una peque帽a tarifa:

    El plan anual le cobra solo $ 7.50 / mes (facturado anualmente) por sus servicios, eso es un poco m谩s que una taza de caf茅 Starbucks en Alemania, o alrededor del precio de dos tazas de caf茅 promedio en los EE. UU.

    Por el precio de un par de tazas de caf茅, cada mes recibir谩 alrededor de 30 problemas de entrevistas de la vida real para resolver y mejorar enormemente sus habilidades y confianza. Es dif铆cil encontrar otra inversi贸n que valga la pena.

    Otros recursos para el aprendizaje

    Suerte para ti, Problema de codificaci贸n diario 隆no es el 煤nico lugar para practicar y aprender en l铆nea!

    Si los libros son m谩s lo tuyo, aseg煤rate de echarle un vistazo a estos:

    • Rompiendo la entrevista de codificaci贸n
    • Los mejores libros de Java para todos los niveles
    • Los mejores libros de Python para todos los niveles
    • Los mejores libros de Machine Learning para todos los niveles

    Si se est谩 preparando para una gran entrevista, tambi茅n le sugiero que lea algunos consejos que lo ayudar谩n a mejorar sus posibilidades de conseguir el trabajo:

    • Preparaci贸n para una entrevista de desarrollador de Python

    O si est谩 interesado en leer art铆culos sobre algunos de los lenguajes de programaci贸n m谩s solicitados y populares en el mundo actual, consulte nuestros art铆culos de Node, Python o Java.

    隆Feliz codificaci贸n!

    Etiquetas:

    Deja una respuesta

    Tu direcci贸n de correo electr贸nico no ser谩 publicada. Los campos obligatorios est谩n marcados con *