- # 1 Escriba un programa en C eficiente para contar el número de bits establecidos en un entero sin signo.
i / p o / p
==== ===
0 (00) 0
1 (01) 1
2 (10) 1
3 (11) 2
… .. …
- # 2 Dada una cadena s1 y una cadena s2, ¿escribe un fragmento para decir si s2 es una rotación de s1 usando solo una llamada a la rutina strstr?
(por ejemplo, dado s1 = ABCD y s2 = CDAB, devuelve verdadero,
dado s1 = ABCD, y s2 = ACBD, devuelve falso)
- # 3 ¿Cuál es la para que el siguiente fragmento de código imprima tanto HelloWorld
if()
printf ("Hello");
else
printf("World");
- # 4. Cambie / agregue solo un carácter para que el siguiente programa imprima * exactamente 20 veces. (Hay al menos 3 soluciones a este problema).
int main()
{
int i, n = 20;
for (i = 0; i < n; i--)
printf("*");
return 0;
}
- Cómo resolver este problema en Java, dado un árbol binario, determinar si está equilibrado en altura
- ¿Por qué las entrevistas de programación no consideran la capacidad de aprendizaje y el potencial para hacer grandes cosas en lugar de un conjunto predefinido de preguntas?
- ¿Qué tipo de preguntas se hacen en las pruebas escritas de las compañías de software / TI en India?
- ¿Cuáles son algunas preguntas típicas de la base de datos para una entrevista con un ingeniero de software?
- Hay algunos problemas en Cracking the Coding Interview (sexta edición) que tienen una solución de más de 1 o 2 páginas. ¿Cuál es la posibilidad de que se pregunte durante una entrevista de pizarra?
- # 5. Describa un algoritmo para invertir las palabras en una cadena; por ejemplo “Mi
se llama Amit Agarwal “se convierte en” Agarwal Amit se llama My “.
- # 6. Hay un edificio de 100 pisos y te dan dos huevos. Los huevos tienen una propiedad interesante que si arroja el huevo desde un número de piso <x, no se romperá, y siempre se romperá si el número de piso es ≥ x. Suponiendo que puede reutilizar los huevos que no se rompieron, proporcione un algoritmo para encontrar x en un número mínimo de lanzamientos.
- # 7. En C, no es posible copiar la matriz de la siguiente manera:
int a[10],b[10];
a = b;
a = GetAnArrayOfTenElements();
¿Se te ocurre un truco simple que te permita obtener este efecto?
- # 8. La distancia entre las ciudades A y B es de 1000 km. Tenemos 3000 plátanos en la ciudad A, y un elefante que puede transportar como máximo 1000 plátanos a la vez. El elefante debe comer una banana cada 1 km; no puede ir más lejos si se queda sin el suministro de banano. ¿Cuál es el número máximo de bananas que se pueden transferir a la ciudad B?
- # 9. Dado un tablero de ajedrez 8 × 8, calcule:
• El número de subcuadrados en el tablero.
• El número de subrectangles en el tablero.
Tenga en cuenta que los rectángulos están restringidos a tener diferentes anchuras y alturas.
- # 10. Un hombre tiene dos cubos en su escritorio. Todos los días organiza ambos cubos para que las caras frontales muestren el día actual del mes. ¿Qué números hay en las caras de los cubos para permitir esto?
- # 11. Dado 6 fósforos de igual longitud, se le pide que forme 4 triángulos equiláteros. No está permitido romper, partir o doblar los palos.
- # 12. Dadas 13 bolas, ¿cómo las organizarías en 9 líneas, de modo que haya 4 bolas en cada línea? Puede suponer que las líneas están dispuestas en un espacio 2D y que una bola no se puede colocar encima de otra bola.
Bonificación: si te parece demasiado fácil y tienes mucho tiempo para matar, ¿qué tal si organizas 22 bolas en 21 líneas de 4?
- # 13. Un esquiador debe decidir cada día que va a esquiar si alquilar o comprar esquís, a menos o hasta que decida comprarlos. El esquiador no sabe cuántos días irá a esquiar antes de cansarse de este pasatiempo. Sugiera una estrategia para el esquiador minimizando su costo, dado que el costo del alquiler es de 1 unidad, y el costo para comprar los esquís es B unidades donde B >> 1.
- # 14. Si dos de las siguientes afirmaciones son falsas, ¿qué posibilidades hay de que el huevo haya sido el primero?
1. El pollo vino primero.
2. El huevo vino primero.
3. La declaración I es falsa y la declaración II es verdadera.
- #15. Estás viajando en las selvas de África, cuando eres atrapado por una tribu de bárbaros. Te permiten elegir entre la muerte o resolver su gran desafío:
Le vendan los ojos y lo llevan a una habitación, donde le piden que se arrodille. Sientes cientos de discos circulares frente a ti. Le dicen que un lado de cada disco está pintado de rojo y el otro de verde. Hay exactamente 129 discos que actualmente tienen el lado rojo hacia arriba. Debe dividir los discos en dos grupos, de modo que cada grupo tenga la misma cantidad de discos que muestren el color rojo. Obviamente, no se permite mirar a escondidas.
- #dieciséis. El resultado esperado del siguiente programa en C es imprimir los elementos en la matriz. Pero cuando realmente se ejecuta, no lo hace.
#include
#define TOTAL_ELEMENTS (sizeof(array) / sizeof(array[0]))
int array[] = {23,34,12,17,204,99,16};
int main()
{
int d;
for(d=-1;d <= (TOTAL_ELEMENTS-2);d++)
printf("%d\n",array[d+1]);
return 0;
}
Averigua qué está pasando mal.
- # 17. Pensé que el siguiente programa era un programa C perfecto. Pero al compilar, encontré un error tonto. ¿Puedes averiguarlo (sin compilar el programa 🙂?
#include
void OS_Solaris_print()
{
printf("Solaris - Sun Microsystems\n");
}
void OS_Windows_print()
{
printf("Windows - Microsoft\n");
}
void OS_HP-UX_print()
{
printf("HP-UX - Hewlett Packard\n");
}
int main()
{
int num;
printf("Enter the number (1-3):\n");
scanf("%d",&num);
switch(num)
{
case 1:
OS_Solaris_print();
break;
case 2:
OS_Windows_print();
break;
case 3:
OS_HP-UX_print();
break;
default:
printf("Hmm! only 1-3 :-)\n");
break;
}
return 0;
}
——————————————————————————————————————-
ACTUALIZACIÓN-PARTE 2
——————————————————————————————————————-
- # 18. Hay 4 cubos de 9 monedas cada uno. Las monedas reales pesan un gramo cada una, y las monedas falsas pesan 2 gramos cada una. Cada cubo es falso (contiene solo monedas falsas) o real (contiene solo monedas reales). Dada una máquina de pesaje, ¿cómo puede determinar todos los cubos que son falsos con un solo pesaje?
- # 19. ¿Cómo encuentra eficientemente la cadena repetitiva más grande y la cantidad de veces que se repite en una cadena dada? Por ejemplo, dada la cadena “abc fghi bc kl abcd lkm abcdefg”, la función debe devolver la cadena “abcd” y el recuento de 2.
- # 20. Escriba un programa que muestre una “espiral” de nxn números, utilizando un espacio constante (no se permiten matrices). Por ejemplo, así es como se ve la espiral para n = 10:
99 98 97 96 95 94 93 92 91 90
64 63 62 61 60 59 58 57 56 89
65 36 35 34 33 32 31 30 55 88
66 37 16 15 14 13 12 29 54 87
67 38 17 4 3 2 11 28 53 86
68 39 18 5 0 1 10 27 52 85
69 40 19 6 7 8 9 26 51 84
70 41 20 21 22 23 24 25 50 83
71 42 43 44 45 46 47 48 49 82
72 73 74 75 76 77 78 79 80 81
- # 21. El siguiente programa, cuando se ejecuta,
#include
vacío principal()
{
int a, b, c;
para (b = c = 10; a = “- FIGURA ?, UMKC, XYZHola, \
TFy! QJu ROo TNn (ROo) SLq SLq ULo + \
UHs UJq TNn * RPn / QPbEWS_JSWQAIJO ^ \
NBELPeHBFHT} TnALVlBLOFAkHFOuFETp \
HCStHAUFAgcEAelclcn ^ r ^ r \\ tZvYxXy \
T | S ~ Pn SPm SOn TNn ULo0ULo # ULo-W \
Hq! WFs XDt! “[B +++ 21];)
{
para (; a–> 64;)
{
putchar (++ c == ‘Z’? c = c / 9: 33 ^ b & 1);
}
}
}
Da como salida,
¿Cuál es la lógica utilizada aquí?
- # 22. Escriba una función recursiva que genere el conjunto de potencia de un conjunto dado. El conjunto se pasa a la función como una cadena, y la función debe imprimir los subconjuntos como cadenas.
Ejemplo: dado “abc”, la función debería imprimir (la cadena vacía, codificarla de alguna manera), a, b, ab, c, ac, bc, abc.
- # 23. ¿Cuál es el resultado esperado para el siguiente programa y por qué?
enum {false,true};
int main()
{
int i=1;
do
{
printf("%d\n",i);
i++;
if(i < 15)
continue;
}while(false);
return 0;
}
- # 24. El siguiente programa no “parece” imprimir “hola”. (Intenta ejecutarlo)
#include
#include
int main()
{
while(1)
{
fprintf(stdout,"hello-out");
fprintf(stderr,"hello-err");
sleep(1);
}
return 0;
}¿Cuál podría ser la razón?
- # 25. El siguiente programa C segfaults de IA-64, pero funciona bien en IA-32.
int main()
{
int* p;
p = (int*)malloc(sizeof(int));
*p = 10;
return 0;
}¿Por qué sucede así?
- # 26. Aquí hay una pequeña pieza de programa (nuevamente solo 14 líneas de programa) que cuenta el número de bits establecidos en un número.
De entrada y salida
0 0 (0000000)
5 2 (0000101)
7 3 (0000111)int CountBits (unsigned int x )
{
static unsigned int mask[] = { 0x55555555,
0x33333333,
0x0F0F0F0F,
0x00FF00FF,
0x0000FFFF
} ;
int i ;
int shift ; /* Number of positions to shift to right*/
for ( i =0, shift =1; i < 5; i ++, shift *= 2)
x = (x & mask[i ])+ ( ( x >> shift) & mask[i]);
return x;
}Descubra la lógica utilizada en el programa anterior.
————————————————————————————————————–
Actualización-Parte 3
————————————————————————————————————–
# 27 Escriba un programa para contar el número de 1 que se producen en el número de página de un libro de n páginas.
Bonificación: generalice esto para números que no sean 1.