Si quiero trabajar en Microsoft, ¿qué nivel de conocimiento necesito tener sobre computadoras e Internet?
Tengo algunas preguntas de prueba escrita de Microsoft, échales un vistazo
Pregunta de prueba escrita de Microsoft: escribe un programa para encontrar la profundidad de un árbol binario
El La profundidad de un árbol es igual a max (profundidad del subárbol izquierdo, profundidad del subárbol derecho) 1. Se puede implementar mediante recursividad.
Supongamos que el nodo está definido como
struct Node { Node* left; Node* right }; int GetDepth(Node* root) { if (NULL == root) { return 0 } int profundidad_izquierda = GetDepth(root-gt; left); int profundidad_derecha = GetDepth(root-gt; right); return profundidad_izquierda gt; profundidad_derecha 1; utilizar operación de punto flotante, dibujar un círculo en la pantalla (x**2 y**2 = r**2, donde r es un entero positivo).
Considerando la simetría del círculo, sólo necesitamos considerar el primer cuadrante.
Es equivalente a encontrar una curva que conecte el punto (0, r) con el punto (r, 0). El punto de la curva está más cerca de r desde el centro del círculo (0, 0).
Podemos partir del punto (0, r) y buscar tres puntos desde la derecha (1, r), inferior (0, r-1), inferior derecha (1, r-1) hasta el distancia del centro del círculo, seleccione el punto más cercano a r desde el centro del círculo como el siguiente punto. Esta operación se repite hasta llegar al punto (r, 0).
Dado que no se pueden utilizar operaciones de punto flotante, las comparaciones de distancia solo se pueden realizar sobre la base de la distancia al cuadrado. Es decir, compare la diferencia entre x**2 y**2 y r**2.
Escribe un programa para encontrar la suma de números primos, por ejemplo, F(7) = 2 3 5 7 11 13 17=58.
Método 1:
Para aumentar números enteros n a partir de 2, realice las siguientes operaciones:
Utilice los números en [2, n-1] para dividir n en secuencia, si el resto es 0, significa que n no es un número primo; si todos los restos no son 0, significa que n es un número primo, súmelos.
La complejidad espacial es O(1) y la complejidad temporal es O(n^2), donde n es el valor primo más grande que se debe encontrar (el valor correspondiente en el ejemplo es 17).
Método 2:
Puedes mantener una secuencia de números primos, de modo que cuando necesites determinar si un número es primo, solo necesites determinar si se puede dividir. por un número primo menor que tú.
Para aumentar enteros n a partir de 2, haz lo siguiente:
Usa los números primos en [2, n-1] (2, 3, 5, 7, comienza esta secuencia está vacío) elimine n a su vez. Si el resto es 0, significa que n no es un número primo; si todos los restos no son 0, significa que n es un número primo. él.
La complejidad espacial es O(m) y la complejidad temporal es O(mn), donde m es el número de números primos (el valor correspondiente en el ejemplo es 7) y n es el número primo máximo. valor que se debe encontrar (el valor correspondiente para el ejemplo es 17).
Método 3:
También puedes usar la suma en lugar de la división.
Solicite un espacio lo suficientemente grande, cada bit corresponde a un número entero y comience a inicializar todos los bits a 0.
Para un número primo conocido (sólo 2 al principio), cambie los bits correspondientes a todos los múltiplos de este número primo a 1, entonces el número correspondiente al bit con el valor más pequeño de 0 es un número primo número. También etiqueta los múltiplos de los números primos recién obtenidos.
La suma de números primos se puede obtener acumulando la secuencia de números primos obtenida de esta forma.
La complejidad del espacio es O(n) y la responsabilidad del tiempo es O(n), donde n es el valor primo más grande que debe encontrarse (el valor correspondiente en el ejemplo es 17).