Experiencia de entrevista Smartprix | Conjunto 4 (en el campus)

Recientemente, Smartprix realizó una campaña de colocación de grupos.
Hubo dos rondas:
1. Prueba de habilidad lógica/técnica
2. Ronda de codificación

Primera Ronda: La
primera ronda se dividió en dos pruebas,
1. Prueba de Habilidad Lógica: La prueba consta de 20 preguntas en 30 minutos, hubo calificación negativa 3 puntos recompensados ​​por cada respuesta correcta y 1 punto deducido por cada respuesta incorrecta. La mayoría de las preguntas se basaron en la coincidencia de patrones. Aparte de eso, también estaban allí las preguntas de la serie, el término faltante y las relaciones de sangre. Por todas partes había preguntas de nivel intermedio.

2. Prueba Técnica MCQ: Esta prueba constaba de 10 preguntas en 30 minutos. Las preguntas eran de c++ y java. Algunos se basaron en resultados, mientras que otros se basaron en pruebas lógicas. Las preguntas eran de nivel medio.
De alrededor de 650 estudiantes, 63 estudiantes fueron seleccionados para la siguiente ronda: la ronda de codificación.

Segunda ronda:
esta ronda tenía 2 preguntas de codificación que deberían hacerse en 3 horas. El nivel de las preguntas fue bastante decente. Básicamente, las preguntas se basaron en problemas prácticos a los que es más probable que te enfrentes en el trabajo.
Pregunta 1. Key Stroke: Escriba un programa para simular un teclado con teclas dadas y su funcionamiento. Los tipos de teclas a simular fueron: Espacio alfanumérico: imprímalo tal como está y mueva el cursor.
@ = activa el bloqueo de mayúsculas si está desactivado y viceversa, inicialmente está desactivado.
# = inserta una nueva línea en la posición del cursor y desplaza el cursor.
/ = elimina un carácter a la izquierda y apunta el cursor a esa posición.
? = funciona como flecha hacia abajo si el cursor está en la última línea, nada cambia.
^ = funciona como flecha hacia arriba si el cursor está en la primera línea, nada cambia.
Esta pregunta fue de 210 puntos.

Ejemplos:

Input :  asdf#q#pqr^^23
Output :asdf23f
           q 
           pqr
# Python code
string=input()
caps=0
result=[]
j=0
i=0
pos=0
while (i<len(string)):
    if string[i]=='@':
        if caps==1:
            caps=0
        else :
            caps=1
        i=i+1
    elif string[i]=='#':
    #    print (result)
        result.insert(j,'\n')
    #    print(result)
        j=j+1
        i=i+1
    elif string[i]=='':
        i=i+1
        j=j+1
    elif string[i]=='/':
        j=j-1
        result=result[:j]+result[j+1:]
        i=i+1
    elif string[i]=='^':
        count=0
        p_j=j
        pos=0
        while (string[i]=='^'):
            count=count+1
            i=i+1
        j=j-1
        count=count+1
        check=1000000
        while(count and j>=0):
            if(result[j]=='\n'):
                if(p_j-j-1=check :
            while(check):
                  
                j=j+1;
                check=check-1
            j=j+1
        else :
            while(result[j]!='\n'):
                j=j+1;
            j=j-1
                  
    elif string[i]=='?':
        count=0
        p_j=j
        while (string[i]=='?'):
            count=count+1
            i=i+1
        j=j-1
          
        if count==1 :
              
            while(count>0):
                  
                if result[j]=='\n':
                    count=count-1
                      
                j=j+1
              
        elif count>1 :
          
            while(check):
                j=j+1;
                check=check-1
            j=j+1
          
    else:
        if (caps==1) and  string[i].islower():
            result.insert( j,string[i].upper())
        else :
            result.insert( j,string[i])
        j=j+1
        i=i+1
print (''.join(result))

Esta pregunta era de 250 puntos.
Pregunta 2. Este programa era algo así como ejecutar comandos de lenguaje ensamblador en su programa. El conjunto de comandos dados fueron:
1. ECHO 1: imprime el número. P.ej. ECHO 1 imprime 1
2. Salir: sale del programa.
3. SET a 0: asigna a la variable un valor 0.
4. ADD 2 3 z: esto significa que z = 2+3 asigna la suma de los dos primeros valores al tercero.
5. GOTO y LABEL: funciona como etiqueta y Goto definidos en lenguaje c, pero la etiqueta puede estar antes o después de goto
6. IF y END: si la condición IF es verdadera, las declaraciones entre los comandos IF y END se ejecutan; de lo contrario, no. P.ej. IF a 10 sentencia1 sentencia2 FIN, es decir, si a=10.
7. CONTINUAR: funciona como se define en lenguaje c.
Los nombres de las variables solo serán alfabéticos [az] y los valores predeterminados de las variables son 0, no es necesario definirlos ni establecerlos antes de usarlos.
Ejemplos:

Input        Output
   SET a 0       1
   LABEL 100     2
   ADD a 1 a     3
   ECHO a        4
   IF a 5        5
   EXIT
   END    
   GOTO 100 
#Python code 
from sys import stdin
newdict = {}
dict={}
i=0
for line in stdin:
    list1=line.split(" ")
    list1[-1] = list1[-1].strip()
    newdict[i]=list1
    i=i+1
key=0
j=0
key_if=[]
label={}
while (key in newdict):
#    print (key)
    if newdict[key][0]=="SET":
        if not newdict[key][2].isalpha():
            dict[newdict[key][1]]= int(newdict[key][2])
        else:
            dict[newdict[key][1]]= int(dict[newdict[key][2]])
        key=key+1
    elif newdict[key][0]=="ADD":
        #print(key)
        if not newdict[key][1].isalpha() and not newdict[key][2].isalpha():
            dict[newdict[key][3]]=int(newdict[key][1])+int(newdict[key][2])
        elif not newdict[key][1].isalpha():
            dict[newdict[key][3]]=int(newdict[key][1])+int(dict[newdict[key][2]])
        elif not newdict[key][2].isalpha():
            dict[newdict[key][3]]=int(dict[newdict[key][1]])+int(newdict[key][2])
        elif newdict[key][1] in dict and newdict[key][2] in dict :
            dict[newdict[key][3]]=dict[newdict[key][1]]+dict[newdict[key][2]]
        key=key+1
    elif newdict[key][0]=="ECHO":
        if newdict[key][1].isalpha():
            print (dict[newdict[key][1]])
        else :
             print (int(newdict[key][1]))
        key=key+1
    elif newdict[key][0]=="EXIT":
        break;
    elif newdict[key][0]=="IF" :
        key_if=key_if+[key+1]
        if newdict[key][1] in dict and newdict[key][2] in dict :
            if(dict[newdict[key][1]]==int(dict[newdict[key][2]])):
                key=key+1
        elif(dict[newdict[key][1]]==int(newdict[key][2])):
             key=key+1;
        elif  dict[newdict[key][1]]!=int(newdict[key][2])  :
                while (newdict[key][0]!="END"):
                    key=key+1
                key=key+1
                key_if.pop()
        elif newdict[key][2].isalpha() and dict[newdict[key][1]]!=dict[newdict[key][2]]:
                while (newdict[key][0]!="END"):
                    key=key+1
                key=key+1
                key_if.pop()
    elif newdict[key][0]=="CONTINUE" :
        key=key_if[-1]
    elif newdict[key][0]=="LABEL" :
        label[newdict[key][1]]=key
        key=key+1
    #    print (key)
    elif newdict[key][0]=="GOTO":
        #print(label[newdict[key][1]])
        key=label[newdict[key][1]]

Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo usando contribuya.geeksforgeeks.org o envíe su artículo por correo a contribuya@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.

Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

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