Si su jefe le dice: “Hoy, necesito que use esta biblioteca de árbol rojo-negro para implementar este almacén de datos”, probablemente no necesite saber la complejidad temporal de la inserción, solo necesita hacerlo. Si por alguna razón necesitaras saberlo, puedes buscarlo en Google.
Si, en cambio, su jefe le dice: “Tenemos que implementar un almacén de datos con estas características. Escribe un correo electrónico describiendo cómo debemos hacerlo “, entonces puedes usar Google todo lo que quieras pero debes saber qué vale la pena buscar en Google y qué no.
Pero si en su 1: 1 su jefe le pregunta: “Aquí hay algunas propiedades que nuestro sistema necesita tener. ¿Cuáles son las categorías de diseños para hacer esto? Usted y Jackie pueden esbozar los diseños la próxima semana, pero quiero saber cuáles serán los enfoques de nivel superior ”, entonces tiene un problema. Tu jefe hace una pregunta razonable. Ella quiere saber la “disposición de la tierra” para el espacio de diseño. Deberías saberlo. Si no puede describirlo al menos aproximadamente, ¿cómo puede estar segura de que cubrirá el espacio? Pero no tienes tiempo para buscarlo en Google. Tienes que hablar de eso ahora.
Acabo de describir tres escenarios del mundo real. El primero es para un programador sin mucha experiencia, el segundo escenario es para un entorno de trabajo bastante estructurado y un ingeniero de carrera temprana, y el tercero es habitual para un ingeniero con potencial de liderazgo (o actualidad) en una empresa en rápido movimiento.
- Empecé a disparar recientemente y no tengo una buena precisión al disparar con rifle, entonces, ¿cómo puedo mejorarlo?
- Mi compañía me ofreció una visa H1 el año pasado pero la rechacé. ¿Fue una decisión equivocada?
- Estoy obteniendo CSE en KIIT y todas las transmisiones en SRM excepto CSE en el campus de KTR. ¿Cuál debería elegir?
- Estoy perdido. ¿Cómo me encuentro?
- Quiero que la Reserva Federal me salve a mí y a mis miles de millones en acciones en caso de futuros colapsos en el mercado, ¿cuál es la mejor manera de hacerlo?
Todo esto es un trasfondo para su pregunta. Su primera responsabilidad cuando lo entrevistan es hacer que la entrevista sea la mejor entrevista posible. Parte de eso es responder las preguntas cuando puede, a fondo pero no demasiado.
Pero para algunas preguntas, “la respuesta” no es el punto. Si no hubiera trabajado recientemente con árboles rojo-negros, probablemente diría esto: “Para ser honesto, la última vez que trabajé con árboles rojo-negros fue hace diez años, y no recuerdo exactamente la complejidad de su tiempo . Son árboles, y lo que está buscando con un árbol es lograr la complejidad logarítmica para las búsquedas, y la inserción y eliminación, que generalmente comienzan con algo que parece una búsqueda. Pero solo obtienes la complejidad logarítmica si el árbol se mantiene equilibrado, es decir, si la mayoría de los nodos en el árbol tienen ‘subárboles izquierdos’ y ‘subárboles derechos’. Un árbol desequilibrado es solo una lista vinculada ineficiente. Por lo tanto, se han encontrado varias formas inteligentes de mantener los árboles equilibrados de forma incremental. Un árbol rojo-negro es uno de estos. Por lo general, estas formas tienen pequeños costos en espacio o tiempo o ambos, y cuando se trata de diseño detallado, usaría Google para recordarme las propiedades de los algoritmos conocidos. Pero puedo decirle que el costo amortizado de una inserción es aproximadamente O (log n). Ciertamente no puede ser menos.
¡Una respuesta como esta le da mucho trabajo al entrevistador! Al entrevistador no le importó lo que había memorizado. El entrevistador se preocupó si usted “obtiene” árboles rojo-negros. Y esta respuesta le mostró al entrevistador que no solo obtienes árboles rojo-negros, también obtienes árboles. Eres un verdadero arbolista. Incluso si el entrevistador estaba aburrido, o acababa de pasar la noche entera, o estaba distraído por la mancha en su camisa, ahora tiene su atención, y se ha preparado para una pregunta de seguimiento como, “Está bien, entonces, ¿Cómo elegirías entre los diferentes tipos de algoritmos de árbol equilibrado?
Un seguimiento como ese es entrevistar a gold, porque te permite mostrar tus cosas. Es una pregunta de alto nivel. Tiene muchas buenas respuestas y ni siquiera tiene que haber memorizado nada, solo puede usar estudios de casos. “Bueno, si las inserciones nunca suceden, entonces no tenemos que preocuparnos por el equilibrio incremental, porque podemos usar un método basado en la ordenación para construir un árbol equilibrado previamente. Lo mismo si las inserciones casi nunca ocurren. Si podemos agregar por lotes las inserciones y hacer una inserción masiva, eso puede requerir una estructura de datos diferente que si las inserciones siempre suceden una por una. Si necesitamos el límite más estricto en el peor tiempo de inserción, entonces tendremos que ser más listos que si realmente solo nos importara el tiempo amortizado ”.
Incluso los mejores entrevistadores tienen días libres. A veces las preguntas perspicaces simplemente no vienen a la mente. Pero la entrevista ha sido programada y debe continuar. Puedes ayudar a enviarlo en direcciones que sean más divertidas y más esclarecedoras sobre tus habilidades reales. Su entrevistador también se alegrará de haberlo hecho.