Итак, все началось утром 14 сентября 2019 года в 9:00. Немыслимое программное обеспечение, то есть дочерняя компания Daffodil Softwares, приехала в наш колледж. Я прохожу MCA в Технологическом и исследовательском институте Акрополя.

Ну, это не по теме. Было бы здорово, если бы вы подписались на мой канал YouTube. Это определенно поможет мне расти, и я обязательно буду размещать на своем канале потрясающий технический контент. Так что да, пожалуйста, подпишитесь здесь - Не совсем технический

Раунд 1 (Онлайн-тест - Hackerearth)

Первый раунд был проведен в Hackerearth и длился 60 минут. Было 3 довольно простых вопроса по программированию.

  1. Удвоение гласных

Задача заключалась в том, чтобы удвоить гласные символы в строке

Input : Sequoia
Output : Seequuooiiaa
#Python3
string = input()
out = str()
vowels = [’a’,’e’,’i’,’o’,’u’,’A’,’E’,’I’,’O’,’U,]
for i in range(len(string)):
    if(string[i] in vowels):
        out += string[i]*2
    else:
        out += string[i]
print(out)

2. Найдите ближайший номер

Будет дан массив размера N и целое число x, и задача состояла в том, чтобы найти ближайший к x элемент в массиве. В случае ничьей выведите большее число.

Input : 8 4 1 3 6
        5
Output : 6
#Python3
arr = list(map(int,input().split()))
x = int(input())
temp = []
for i in range(len(arr)):
    temp[i] = abs(arr[i] - x)
mn = min(temp)
rslt = []
for i in range(len(temp)):
    if(temp[i] == mn):
        rslt.append(arr[i])
print(max(rslt))

3. Расчет минимального количества заметок

Валютная система состоит из банкнот следующих номиналов - 2000, 500, 200, 100, 50, 20, 10, 5, 2, 1. Задача состоит в том, чтобы найти минимальное количество банкнот, необходимое для удовлетворения введенной суммы.

Input : 153
Output : 4
#Python3
n = int(input())
c=0
while(n>0):
    if(n in range(1,2)):
        n-=1
        c+=1
    elif(n in range(2,5)):
        n-=2
        c+=1
    elif(n in range(5,10)):
        n-=5
        c+=1
    elif(n in range(10,20)):
        n-=10
        c+=1
    elif(n in range(20,50)):
        n-=20
        c+=1
    elif(n in range(50,100)):
        n-=50
        c+=1
    elif(n in range(100,200)):
        n-=100
        c+=1
    elif(n in range(200,500)):
        n-=200
        c+=1
    elif(n in range(500,2000)):
        n-=500
        c+=1
    elif(n>=2000):
        n-=2000
        c+=1
print(c)

Итак, это были три вопроса по программированию и мой подход. Любой лучший подход и / или предложения приветствуются :)

Раунд 2 (Кодирование на бумаге)

В этом раунде были даны два вопроса по программированию, которые нужно было решить на бумаге.

  1. Вопрос на основе шаблонов

Учитывая массив размера N, вы должны напечатать определенный узор.

Input : -3 4 3 1 -4
Output :  ****
             *****
             ****
             **
         *****
#Python3
arr = list(map(int,input().split()))
mn = min(arr)
space = 0
if(mn<0):
    space = abs(mn)
for i in range(len(arr)):
    if(arr[i]<0):
        print((space - abs(arr[i]))* " " + (abs(arr[i])+1)* "*")
    elif(arr[i]>=0):
        print(space * " " + (arr[i]+1)* "*")

2. Сбалансированная струна

Задача в этих вопросах заключалась в том, чтобы выяснить, состоит ли строка из скобок сбалансирована или нет.

Input : {[()]}
Output : True
Input : {[}()]
Output : False
#Python3
string = input()
l = len(string)
r = l-1
flag = True
for i in range(l/2):
    if(string[i] == "{"):
        if(string[r] == "}"):
            r -=1
            continue
        else:
            flag = False
            break
    if(string[i] == "["):
        if(string[r] == "]"):
            r -=1
            continue
        else:
            flag = False
            break
    if(string[i] == "("):
        if(string[r] == ")"):
            r -=1
            continue
        else:
            flag = False
            break
if(flag):
    print("True")
else:
    print("False")

Я знаю, что это не лучшие подходы к решению вышеуказанного вопроса, поэтому буду благодарен, если кто-нибудь даст мне советы по улучшению моего решения.

Раунд 3 (техническое интервью)

Из более чем 350 кандидатов до Первого тура было отобрано 15 кандидатов для личного технического собеседования (включая меня 😻).

Итак, Interviewer был молод, рассудителен и очень крут. Он знал, как сделать свежее удобнее. Поэтому он начал спрашивать: «Расскажи мне о себе?» после чего следует ряд технических вопросов.

Итак, он увидел, что я упомянул Git в своем резюме, поэтому он начал с вопроса, что такое «Checkout» в Git? В то время я не знал ответа, поэтому сказал ему, что знаю только основы Git. Затем он спросил о «Клоне», и я сказал ему, что мы используем Клон в Git для клонирования репозитория на нашу Машину. Между тем, в кабину из ниоткуда вошла девушка (еще один кандидат), показав интервьюеру свой код проблемы, который он ей передал ранее. Интервьюер посоветовал мне провести пробный запуск ее кода, который был в бесконечном цикле, и состоит из непонятной логики. Он твердо попросил ее исправить это.

Итак, возвращаясь к интервью, он затем спросил меня о различных сценариях, в которых я мог бы использовать связанный список и массив, а также очередь и ее приложения.

Он также спросил меня о некоторых концепциях OOPS, таких как наследование, абстракция данных и сокрытие данных.

Затем он просмотрел мое резюме и спросил меня, комфортно ли я отношусь к Java (потому что у меня есть сертификат NPTEL). Я твердо сказал, что нет, тогда он спросил о блокчейне (еще одна сертификация в резюме: p). Вот здесь я чувствую, что все пошло не так, потому что никогда не следует упоминать в своем резюме вещи, на которые ему / ей неудобно или на которые он / она не готов ответить в интервью. Наконец, он спросил меня о malloc и calloc в C, на что я ответил частично.

Затем он дал мне формулировку проблемы и попросил написать ее код на бумаге.

Input : aaabsbbbeer
Output : 3a4b1s2e1r
Task was to find no. of characters in a string and output them in the this format : Total no. of characters in the string followed by that character

Сначала я подошел к проблеме с неэффективным пространством решения (точно не помню код), для которого Interviewer попросил меня исправить код.

Тогда я придумал это решение.

s = input()
l = [s[i] for i in range(len(s))]
l = set(l)
out = str()
for i in l:
    t = s.count(i)
    out += str(t) + i
print(out)

Я объяснил приведенный выше код интервьюеру, и он частично согласился с кодом и сказал: «Спасибо, Аншул». Так что это был сигнал к отъезду. :п

Итак, окончательный вердикт был отклонен, и я думаю, что это причины, которые привели меня к отказу:

  1. Я не был полностью готов к тому, что упомянул в своем резюме.
  2. Я не мог объяснить свой код интервьюеру.
  3. Я никогда не был готов зайти так далеко в процессе найма, поэтому мне не хватило подготовки.

Кстати, эту девушку выбрали: p

Удачи мне в следующий раз.

Спасибо за чтение.
Пусть это кому-то поможет.
Любые предложения / советы приветствуются.

LinkedIn: https://www.linkedin.com/in/anshoool/
Instagram: Аншул Шарма