Вопросы для собеседования по программированию


Такие крупные фирмы, как Amazon, Google и Microsoft, всегда стремятся добавить в свои ряды специалистов по программированию и разработке программного обеспечения. Итак, чтобы получить прибыльную возможность у таких громких имен, как вышеупомянутые, нужно накопить как можно больше знаний.

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

Самые популярные вопросы и ответы на собеседовании по программированию

Итак, без лишних слов, начнем:

Вопрос: Объясните, пожалуйста, что вы понимаете под компьютерным программированием.

Ответ: Также известное как кодирование или программирование, компьютерное программирование — это процесс кодирования алгоритма в нотацию, обычно компьютерную программу, с помощью некоторого языка программирования, чтобы он мог быть выполнен компьютером.

Каждый язык программирования содержит набор инструкций для компьютера для выполнения набора задач. Программирование — это сложный процесс, который включает в себя разработку алгоритма, его кодирование на языке программирования, отладку программы, поддержку и обновление кода.

Вопрос: Можете ли вы перечислить и объяснить различные типы ошибок, которые могут возникнуть во время выполнения компьютерной программы?

Ответ: Во время выполнения компьютерной программы могут возникать ошибки трех типов. Это:

  • Логические ошибки — это происходит в сценарии компьютерной программы, реализующей неправильную логику. Поскольку для этих типов ошибок программирования не создается отчета, с ними труднее всего справиться.
  • Ошибки времени выполнения — возникают, когда программа содержит недопустимую операцию. Например, деление числа на 0. Это единственные ошибки, которые отображаются мгновенно во время выполнения программы. При возникновении ошибки времени выполнения выполнение программы останавливается и отображается диагностическое сообщение.
  • Синтаксические ошибки — возникают при нарушении одного или нескольких грамматических правил используемого языка программирования. Такие ошибки обнаруживаются во время компиляции.

Вопрос: Объясните, пожалуйста, алгоритм. Каковы некоторые из его важных особенностей?

Ответ: Алгоритм можно определить как набор конечных шагов, выполнение которых помогает в выполнении конкретной задачи. Важными особенностями алгоритма являются ясность, эффективность и конечность.

Вопрос: Что вы понимаете под обслуживанием и обновлением компьютерной программы?

Ответ: После успешной установки начинается процесс обслуживания и обновления компьютерной программы. В то время как обслуживание программы — это непрерывный процесс мониторинга компьютерной программы на предмет ошибок и ошибок, обновление компьютерной программы означает улучшение ее за счет незначительных и серьезных изменений с течением времени.

Вопрос: Пожалуйста, дайте краткое объяснение переменных.

Ответ: Переменные используются для хранения ввода программы, а также результатов вычислений во время выполнения программы. На самом деле это названные ячейки памяти. Значение, хранящееся в переменной, может изменяться во время выполнения программы.

Вопрос: В каждом языке программирования есть зарезервированные слова. Кто они такие? Приведите несколько примеров.

Ответ: Зарезервированные слова, также известные как ключевые слова, — это слова, которые имеют предопределенное значение в определенном языке программирования. Эти зарезервированные слова нельзя использовать или переопределять для других целей. Ниже приведены некоторые примеры зарезервированных слов:

  • C — break, case, char, default, else, float, if и int
  • Java — абстрактный, логический, catch, class, const, double, enum, наконец, реализует, instanceof, throws, transient и volatile
  • Python — и, assert, continue, def, del, global, not, lambda, raise и yield

Вопрос: Что вы понимаете под петлями? Кратко объясните различные типы петель.

Ответ: Цикл — это структура в программировании, которая может повторять определенный набор операторов определенное количество раз или до тех пор, пока не будет выполнено определенное условие. Есть три важных типа петель:

  • Цикл FOR… NEXT — это наиболее эффективный цикл, если вы заранее знаете, сколько раз цикл должен быть повторен.
  • WHILE… WEND Loop — он продолжает повторять определенное действие, пока соответствующее условие не станет ложным. Этот цикл особенно полезен, когда общее количество повторений неизвестно.
  • Вложенный цикл — когда цикл используется внутри цикла, он называется вложенным циклом.

Вопрос: Объясните, пожалуйста, программную документацию. Почему это важно?

Ответ: Программная документация — это письменное описание алгоритма (ов), метода кодирования, дизайна, тестирования и правильного использования конкретной компьютерной программы. Это полезно для тех, кто использует программу изо дня в день, а также для программистов, которые должны исправлять, изменять и обновлять компьютерную программу.

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

Вопрос: что такое константы? Объясните их типы.

Ответ: Константа — это программный объект, значение которого не может быть изменено или изменено во время выполнения программы. Константы бывают двух основных типов:

  • Числовые константы — включают целые числа, числа с одинарной и двойной точностью. Например, 22, 24, -898, 4,5 и 73,45.
  • Строковые константы — включает последовательность буквенно-цифровых символов, заключенных в двойные кавычки. Максимальная длина строковой константы составляет 255 символов. Например, «Шимла», «Я люблю тебя» и «Оранжевый — новый черный».

Вопрос: Разъясните, пожалуйста, операторам.

Ответ: Операторы используются для выполнения определенных операций с данными в компьютерной программе. Они представлены символами. Например, / представляет математическое деление, а * — умножение. Есть 4 основных типа операторов:

  • Арифметика — используется для выполнения математических операций.
  • Назначение — используется для хранения результатов вычислений, строк и значений в переменных.
  • Логический — используется для того, чтобы компьютерная программа могла принимать решение на основе нескольких условий. Другими словами, логические операторы позволяют комбинировать простые условия для образования более сложных условий.
  • Реляционный — используется для определения или тестирования какой-либо связи между двумя объектами. Эти операторы принимают значение true или false и дают ненулевое значение.

Вопрос: Не могли бы вы объяснить массивы?

Ответ: Массив — это программная структура, представляющая собой набор нескольких значений данных одного типа. С точки зрения памяти, массив — это группа смежных ячеек памяти, в которых хранятся данные одного типа.

Вопрос: Что вы понимаете под подпрограммой?

Ответ: Автономный набор операторов, который можно использовать из любого места в компьютерной программе, известен как подпрограмма. Как только подпрограмма успешно выполняет намеченную задачу, она возвращает управление в раздел программы, называемый подпрограммой.

Вопрос: Объясните языки программирования низкого и высокого уровня. Также приведите несколько примеров.

Ответ: Любой язык программирования, который не предлагает обобщения из архитектуры набора команд компьютера, является языком программирования низкого уровня. Язык ассемблера и машинный язык — два типичных примера языков программирования низкого уровня.

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

Другое определение языка программирования высокого уровня — это определение, не зависящее от базового процессора системы, в которой он работает. C ++, Java и Python — одни из самых популярных языков программирования высокого уровня.

Вопрос: Что вы понимаете под машинным кодом?

Ответ: Машинный код — это язык программирования низкого уровня. В отличие от языков программирования высокого уровня, которые поставляются с компилятором для преобразования кода высокого уровня в машинный код для выполнения, микропроцессор напрямую обрабатывает машинный код, не выполняя такого преобразования.

Вопрос: Вы знаете о языках моделирования? Приведите несколько примеров.

Ответ: Любой искусственный язык, используемый для выражения информации, знаний или систем в порядке, определяемом надежным набором правил, называется языком моделирования.

Тот же набор правил также используется для интерпретации значений компонентов структуры языка моделирования. Ниже приведены несколько примеров языков моделирования:

  • Обозначение моделирования бизнес-процессов
  • Расширенный язык корпоративного моделирования
  • Схема
  • Структурированное программирование Джексона
  • Язык моделирования систем
  • Единый язык моделирования

Вопрос: Объясните, пожалуйста, тестирование программного обеспечения. Зачем нам это нужно?

Ответ: Как и программирование, тестирование программного обеспечения является важным аспектом любой модели жизненного цикла разработки программного обеспечения, будь то традиционная модель водопада или современная модель быстрой разработки приложений (RAD) .

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

  • Проверка на улучшения
  • Обеспечьте правильную / предполагаемую работу
  • Соответствие требованиям пользователей

Вопрос: Что вы подразумеваете под «бета-версией» компьютерной программы?

Ответ: Лучшая версия компьютерной программы или программного обеспечения — это их выпуск, который еще не готов к общедоступному выпуску и должен быть изменен после получения отзывов пользователей от бета-тестирования.

Вопрос: Можете ли вы объяснить подход к дизайну сверху вниз?

Ответ: Нисходящий подход к проектированию — это методология, принятая для анализа программного обеспечения. Вместо того, чтобы заниматься проблемой в целом, она сначала делится на несколько подзадач. Затем каждая из них решается индивидуально. Затем решения объединяются, чтобы получить лучшее решение.

Вопрос: Что вы понимаете под реализацией программы?

Ответ: Опубликуйте сообщение об успешном завершении тестирования программного обеспечения компьютерной программы, ее необходимо установить и ввести в эксплуатацию на целевом компьютере (ах). Этот процесс установки и настройки компьютерной программы для использования конечными пользователями называется реализацией программы.

Вопрос: Объясните, пожалуйста, выполнение программы.

Ответ: Выполнение программы — это процесс выполнения компьютером инструкций, присущих программе. Перед выполнением компьютерная программа должна быть загружена в память (RAM) компьютера.

Вопрос: что такое компилятор?

Ответ: Компилятор — это компьютерная программа, которая переводит написанный код на одном языке программирования на другой язык. Обычно компилятор относится к программе, которая переводит исходный код, относящийся к языку программирования высокого уровня, на язык программирования более низкого уровня для создания исполняемой программы.

Ответ: При тестировании компьютерной программы обнаруживается ряд проблем. Они называются ошибками и ошибками. Отладка — это процесс их исправления. Другими словами, отладка — это процесс исправления ошибок, обнаруженных в реализованном коде.

Ответ: Любая типичная компьютерная программа содержит от сотен до тысяч LOC. Добавление комментариев — это способ упростить для других изучение или поиск чего-либо в коде.

Вопрос: Можете ли вы перечислить некоторые лучшие практики кодирования?

Ответ: Ниже приведены некоторые рекомендации по программированию, которые помогут сделать программирование эффективным:

  • Соблюдайте принцип DRY
  • Следуйте некоторым легко запоминающимся соглашениям об именах
  • Код должен быть как можно более простым
  • Ограничьте длину строки кода
  • Часто используйте комментарии
  • Используйте последовательный отступ
  • По возможности избегайте глубокого вложения

Вопрос: Не могли бы вы объяснить принцип DRY?

Ответ: DRY означает «Не повторяйся». Это принцип разработки программного обеспечения, направленный на сокращение повторения шаблонов программного обеспечения. Для этого необходимо либо заменить повторяющиеся программные шаблоны абстракциями, либо использовать нормализацию данных.

Вопрос: Как называются нарушения принципа DRY? Где они обычно встречаются?

Ответ: Они называются ВЛАЖНЫМИ растворами. Хотя WET обычно означает «Пишите все дважды», в некоторых случаях это также может означать, что нам нравится печатать или тратить время впустую. Решения WET обычно используются в многоуровневых архитектурах.

Вопрос: Объясните, пожалуйста, пузырьковую сортировку?

Ответ: Пузырьковая сортировка — это простой алгоритм сортировки, в котором смежные элементы в структуре данных, такой как массив, постоянно сравниваются, пока мы не получим правильный порядок. Сравниваемые элементы меняются местами только в том случае, если они находятся в неправильном порядке.

Пузырьковая сортировка позволяет меньшим значениям «пузыриться» вверх по списку и, следовательно, к названию. Его также называют тонущим, потому что более крупные значения «опускаются» на дно. Посмотрите , как делает Bubble сортировки в C работает.

Вопрос: Объясните, пожалуйста, структуры данных.

Ответ: Структура данных — это особый способ организации и управления данными. Это обеспечивает эффективный доступ, а также изменение данных.

Структура данных также может быть определена как набор данных, применимые к ним функции и отношения между ними. Массивы, связанные списки, кучи, графики и стеки — вот некоторые примеры структур данных.

Вопрос: В каких областях используются структуры данных?

Ответ: Структуры данных требуются везде, где задействованы данные. Тем не менее, некоторые примечательные примеры:

  • Искусственный интеллект
  • Дизайн компилятора
  • Управление базами данных
  • Графика
  • Числовой анализ
  • Операционные системы
  • статистический анализ

Ответ: Сортировка — это процесс упорядочивания элементов массива в возрастающем или убывающем порядке. Вот некоторые из популярных методов сортировки:

Ответ: Бинарный поиск лучше всего применять к списку, в котором все элементы уже отсортированы. Бинарный поиск начинается с поиска в середине списка.

Если средний элемент не является целевым элементом, он переходит к поиску либо в нижней, либо в верхней половине списка. Процесс повторяется до тех пор, пока не будет найден желаемый элемент.

Вопрос: как вы будете ссылаться на все элементы одномерного массива?

Ответ: Нам нужно использовать индексированный цикл для ссылки на все элементы в одномерном массиве. Счетчик начинается с 0 до числа на 1 меньше размера массива. Следовательно, на все элементы обращаются последовательно, используя счетчик цикла в качестве индекса массива.

Вопрос: Что вы понимаете под LIFO и FIFO?

Ответ: LIFO и FIFO — две из самых популярных форм доступа, извлечения и хранения данных. LIFO расшифровывается как Last In First Out. Это означает, что в этом подходе самые последние сохраненные данные извлекаются первыми. Этот подход применяется в стеке.

FIFO расшифровывается как First In First Out и является противоположностью LIFO. Здесь самые старые данные извлекаются первыми. Подход FIFO выполняется в очереди.

Вопрос: Вы можете объяснить многомерный массив?

Ответ: Обычный массив имеет только один индекс. Многомерный массив — это массив с несколькими индексами. Он используется там, где одномерного индексирования недостаточно.

Вопрос: Поясните, пожалуйста, график.

Ответ: Тип структуры данных, который имеет набор упорядоченных пар, называется графом. Эти упорядоченные пары также называются дугами или ребрами. Они используются для соединения узлов, где данные хранятся и извлекаются из них.

Вопрос: В чем разница между линейной и нелинейной структурой данных?

Ответ: В линейной структуре данных элементы данных размещаются рядом друг с другом. Массивы, связанные списки, очереди и стеки — вот некоторые примеры линейной структуры данных.

В нелинейной структуре данных элементы данных могут быть связаны более чем с двумя элементами данных. Примерами нелинейной структуры данных являются графы и деревья.

Вопрос: Объясните, пожалуйста, дерево AVL.

Ответ: Дерево двоичного поиска, которое всегда частично сбалансировано, называется деревом AVL. Это первая структура данных, разработанная таким образом. Баланс — это разница высот поддеревьев от корня.

Вопрос: Почему мы используем алгоритм Хаффмана?

Ответ: Для расширения двоичных деревьев, которые имеют минимальную взвешенную длину пути из заданных весов, мы используем алгоритм Хаффмана. Он использует таблицу, содержащую общее количество раз для каждого элемента данных.

Ответ: Поиск Фибоначчи — это тип алгоритма поиска, который применяется к отсортированному массиву. Он использует подход «разделяй и властвуй» для значительного сокращения времени, необходимого для достижения целевого элемента.

Вопрос: Как работает рекурсивный алгоритм?

Ответ: Рекурсивный алгоритм делит проблему на более мелкие, простые в управлении подзадачи. Выходные данные, полученные от одной рекурсии после обработки одной подзадачи, становятся входными данными для последующего рекурсивного процесса.

Вопрос: что такое рекурсивная функция?

Ответ: Функция, которая вызывает сама себя, называется рекурсивной функцией. Он основан на условии завершения и использует стек. Это явление называется рекурсией.

Вопрос: Объясните, пожалуйста, как динамическое распределение памяти помогает в управлении данными?

Ответ: Динамическое выделение памяти помогает хранить простые структурированные типы данных. Более того, это помогает комбинировать отдельно выделенные структурные блоки для формирования составных структур, которые можно расширять или сжимать по мере необходимости.

Вопрос: В чем разница между NULL и VOID?

Ответ: В то время как NULL представляет собой значение, VOID представляет собой идентификатор типа данных. Переменная со значением NULL представляет собой пустое значение. Указатели, не имеющие начального размера, идентифицируются с помощью VOID.

Вопрос: Объясните, пожалуйста, как объявление переменной влияет на распределение памяти.

Ответ: Конкретный тип данных определяется с помощью объявления переменной. Общий объем выделяемой памяти зависит от типа данных, к которому принадлежит объявленная переменная.

Вопрос: Объясните, пожалуйста, абстракцию данных.

Ответ: Абстракция данных помогает разбить сложную проблему данных на легко управляемые подзадачи. После абстракции данных указываются первые объекты данных и операции, которые должны выполняться над ними. Как объекты данных будут храниться в памяти, становится второстепенной задачей.

Вопрос: какой код для проверки String является палиндромом или нет? 

Отвечать:

# include <string.h> 
int main ()
{
   char a [1000];  
   int i, n, b = 0; printf ( "Введите строку:" );    получает (а);    n = strlen (а); for (i = 0; i <n / 2; i ++)      { if (s [i] == a [ni-1])   b ++;   } if (b == i) printf ( «строка - палиндром» ); else printf ( "строка не палиндром" ); возврат 0; }
   


   

 


 
     
   
       
   

Выход:

Введите строку : мадам 
Строка - палиндром

Вопрос: написать метод, который удалит любой заданный символ из строки?

Отвечать: 

открытый  класс  RemoveChar
   public static void main ( String [] args ) {  
             String str = "How are you" ;
             Система. out .println (charRemoveAt (str, 7 ));  
          }  
          общедоступная статическая строка charRemoveAt ( String str, int p ) {  
             return str.substring ( 0 , p) + str.substring (p + 1 );  
          }  

Результат:

Как ты

Вопрос: Распечатать все перестановки String Recursive way?

Отвечать: 

Рекурсивный способ:

public class ABC { 
   // Функция для печати всех перестановок str
   static void printPerm (String str, String ans)
   {
       // Если строка пуста
       if (str.length () == 0 ) {
           System.out. печать (ANS + "" );
           возврат ;
       }
       for ( int i = 0 ; i <str.length (); i ++) {
           // i-й символ str
           char ch = str.charAt (i);
           // Остальная часть строки после исключения 
           // i-го символа
           Строка ros = str.substring ( 0 , i) + 
                        str.substring (i + 1 );
           // Рекурсивный вызов
           printPerm (ros, ans + ch);
       }
   }
   // Код драйвера
   public static void main (String [] args)
   {
       String s = "abb" ;
       printPermutn ( s , "" );
   }
}

Выход:

abb abb bab bba bab bba

Вопрос: Написать функцию для определения самого длинного палиндрома в заданной строке?

Отвечать: 

публичный класс Demo { 
public static void main (String [] args) {
    Demo lp = new Demo ();
    String pal = lp.LongPalindrome ( «бананы» );
       System.out.println ( "" + приятель);    
    pal = lp.LongPalindrome ( "abaradab121" );
       System.out.println ( "" + приятель);
}
Общественности Строка LongPalindrome (String s ) {
    // Validations
    если (s.isEmpty ()) {
        возвращение "Пожалуйста , введите строку" ;
    }
    если (s.length () == 1 ) {
        return s ;
    }
    // Завершение проверки
    // Начинаем с одного символа (начального) как самого длинного палиндрома
    String longest = s.substring ( 0 , 1 );
    for ( int i = 0 ; i <s.length (); i = i + 1 ) {
        // получаем самый длинный палиндром для нечетной длины (центр - i)
        String tmp = checkForEquality ( s , i, i);
        если (tmp.length ()> longest.length ()) {
            longest = tmp;
        }
        // получить длинный палиндром для даже длины (центр я, я + 1)
        tmp = checkForEquality ( s , i, i + 1 );
        если (tmp.length ()> longest.length ()) {
            longest = tmp;
        }
    } самый длинный
    возврат ;
}
public String checkForEquality (String s , int begin, int end) {
    while (begin> = 0 && end <= s.length () - 1 && s.charAt (begin) == s.charAt (end)) {
        begin -;
        конец ++;
    }
return s.substring (начало + 1 , конец);
}
}

Вопрос: как преобразовать числовую строку в int в Java?

Отвечать: 

открытый  класс  StringToInteger { public  static  void  main ( String args [] )
{
String integer = "237" ;
int number = новое целое число (целое число);
Система. out .println ( "Целое число, созданное из String в Java:" + число); число = Integer.parseInt (целое число);
Система. out .println ( " Преобразование строки в int с помощью parseInt ():" + число); число = Integer.valueOf (целое число);
Система. out .println ( "Пример преобразования строки в int с использованием valueOf:" + число);
Строка отрицательная = "-237" ;
Система. out .println ( "Преобразование отрицательной строки в int в Java" );
Система. out .println ( «Пример конструктора строки в целое число:» + новое целое число (отрицательное));
Система. out .println ( " Преобразование строки в целое число, пример parseInt:" + Integer.parseInt (отрицательный));
Система. out .println ( "String Целочисленное значение Пример:" + Integer.valueOf (отрицательное));
}
 }

Результат вывода:

Целое число, созданное из  String  в Java: 237  
String в int с использованием parseInt (): 237
String в int Пример преобразования с использованием valueOf: 237
Преобразование отрицательной String в int в Java
String в Integer Пример конструктора: -237
String в Integer Пример parseInt : -237
String Целочисленное значение Пример: -237

Вопрос: почему String является окончательным в Java?

Ответ: Есть две основные причины, по которым строка является окончательной в Java для обеспечения производительности и безопасности. Если строки изменяемы, их можно легко атаковать, поскольку строки используются в URL-адресах базы данных и сетевых соединениях. Если строки неизменяемы, то проблем с синхронизацией нет, так как это сделает строку потокобезопасной.

Вопрос: Как удалить повторяющиеся элементы из массива в Java?

Отвечать: 

import java.io. *; 
import java.util. *;  
class DupElements
{
   static int duplicate ( int [] arr, int n)
    {
       // Найти сумму массива и вычесть
       из нее сумму  // первые n-1 натуральные числа 
       // чтобы найти результат.
       int sum = 0;
       для (int я = 0; я <п; я ++)
           сумма + = arr [я];
       сумма возврата - (((n - 1) * n) / 2); 
   }
   // Код драйвера
   public static void main (String args []) 
   {
       int [] arr = {9, 8, 2, 6, 11, 8, 18, 3, 4, 5};
       int n = длина обр.
       System.out.println (дубликат (arr, n));
   }
}

Выход:

8

Вопрос: Как в Java проверить, сбалансировано дерево или нет? 

Отвечать: 

class  NodeTree { 
   int data;
   Узел слева, справа;
   Узел ( int d)
   {
       данные = d;
       слева = справа = ноль ;
   }
}
class BinaryTree {
   корень NodeTree;
   / * Возвращает истину, если двоичное дерево с корнем в качестве корня сбалансировано по высоте * /
   boolean isBalanced ( узел NodeTree )
   {
       int lh; / * для высоты левого поддерева * /
       int rh; / * для высоты правого поддерева * /
       / * Если дерево пусто, возвращается истина * /
       if (node ​​==null )
           вернуть истину ;
       / * Получить высоту левого и правого поддеревьев * /
       lh = height (node.left);
       rh = высота (узел. справа);  
       if (Math.abs (lh - rh) <= 1
           && isBalanced (node.left)
           && isBalanced (node.right))
           return true ;
       / * Если мы дойдем сюда, то дерево не сбалансировано по высоте * /
       return false ;
   }    
   int height ( Node node )
   {
       / * дерево базовых случаев пусто * /
       if (node ​​== null )
           return 0 ; 
       / * Если дерево не пусто, то высота = 1 + максимальная
        высота слева и высота справа * /
       return 1 + Math.max (height (node.left), height (node.right));
   }  
   public static void main ( String args [] )
   {
       BinaryTree tree = new BinaryTree ();
       tree.root = новый узел ( 1 );
       tree.root.left = новый узел ( 2 );
       tree.root.right = новый узел ( 3 );
       tree.root.left.left = новый узел ( 4);
       tree.root.left.right = новый узел ( 5 );
       tree.root.left.left.left = новый узел ( 8 );
       if (tree.isBalanced (tree.root))
           Система. out .println ( «Дерево сбалансировано» );
       else
           System. out .println ( «Дерево не сбалансировано» );
   }
}

Выход:

Дерево является  не balanaced

Вопрос: Написать программу для поиска всех простых чисел до заданного числа?

Отвечать: 

публичный  класс  ABC { 
   публичный статический void main ( String [] args )
   {
       Scanner sc = new Scanner (System. in );
       // Объявление переменных
       int a, b, i, j, flag;
       System.out.printf ("Введите нижнюю границу интервала:");
       а = sc.nextInt (); //
       Принимаем input System.out.printf ("\ nВведите верхнюю границу интервала:");
       б = sc.nextInt (); //        Принимаем входные данные 
       //
Выводим сообщение на экран System.out.printf ("\ nПростые числа между% d и% d:", a, b); 
       for (i = a; i <= b; i ++) {
           if (i == 1 || i == 0)
               continue;
           flag = 1;
           for (j = 2; j <= i / 2; ++ j) {
               if (i% j == 0) {
                   flag = 0;
                   перемена;
               }
           }
           if (flag == 1)
               System.out.println (i);
       }
   }
}

Выход:

Введите нижнюю границу из интервала: 2
Введите верхнюю границу на отрезке: 10
простых чисел между 2 и 10 , являются:  3 5 7 

Вопрос: Написать программу, чтобы узнать, перекрываются ли два прямоугольника R1 и R2?

Отвечать: 

class OverlapRect {   
  статический класс RectPoint { 
       int x, y;
   } 
// Возвращает истину, если два прямоугольника (a1, b1) и (a2, b2) перекрывают
статическое логическое значение doOverlap (Point a1, Point b1, Point a2, Point b2) {
       // Если один прямоугольник находится слева от другого 
       if ( a1.x> b2.x || a2.x> b1.x) {
           return false ;
       }  
       // Если один прямоугольник выше другого 
       if (a1.y <b2.y || a2.y <b1.y) {
           return false ;
       }
       вернуть истину ;
   }
   public static void main (String [] args) {
       Точка a1 = новая точка (),
   b1 = новая точка (),
       a2 = новая точка (),
b2 = новая точка ();
       a1.x = 0; a1.y = 10; b1.x = 10; b1.y = 0;
       a2.x = 5; a2.y = 5; b2.x = 15; b2.y = 0;
       if (doOverlap (a1, b1, a2, b2)) {
           System.out.println ( "Прямоугольники перекрываются" );
       } else {
           System.out.println ( «Прямоугольники не перекрываются» );
       }
   }
}

Выход:

Прямоугольники перекрываются

Вопрос: Написать программу для переноса слов, которая должна работать на любом размере экрана?

Отвечать:

открытый класс WordWrap 
{
   final int MAX = Integer.MAX_VALUE;      
   //
   Служебная функция для печати решения int printSolution (int p [], int n)
   {
       int k;
       если (p [ n ] == 1)
       k = 1;
       иначе
       k = printSolution (p, p [ n ] -1) + 1;
       System.out.println ("Номер строки" + "" + k + ":" + 
       "От номера слова" + "" + p [ n ] + "" + "к" + "" + n);
       return k;
   }  
   void resolveWordWrap (int l [], int n, int M)
   {
       int extras [] [] = новый int [ n + 1 ] [ n + 1 ];
       int lc [] [] = новый int [ n + 1 ] [ n + 1 ];  
       int c [] = новый int [ n + 1 ];
       int p [] = новый int [ n + 1 ]; 
       для (int i = 1; i < = n ; i ++)
       { extras [ i ] [ i ] = M - l [ i-1 ]; для ( int j = i + 1; j <= n; j ++) extras [ i ] [ j ] = extras [i] [j-1] - l [ j-1 ] - 1 ;        } для ( int
           
           
           

        я = 1; я <= п; i ++)
       { for ( int j = i; j <= n; j ++)            { if ( extras [ i ] [ j ] < 0 ) lc [ i ] [ j ] = MAX; иначе if ( j == n && extras [ i ] [ j ]> = 0)                    lc [
           

               
                   
               
i ] [ j ] = 0;
               else
                   lc [ i ] [ j ] = extras [ i ] [ j ] * extras [ i ] [ j ];
           }
       }      
       c [ 0 ] = 0;
       для (int j = 1; j < = n ; j ++)
       { c [ j ] = MAX; for ( int i = 1; i <= j; i ++)            {
           
           

               if ( c [ i-1 ]! = MAX && lc [ i ] [ j ]! = MAX && 
                  ( c [ i-1 ] + lc [ i ] [ j ] < c [ j ])) »
               { c [ j ] = c [i-1] + lc [ i ] [ j ]; p [ j ] = i;                }            }        }    
                   
                   



       printSolution ( p , n );
   }   public static void main ( String args [])    { WordWrap w = new WordWrap (); int l [] = {3, 2 , 2 , 5 }; int n = l.length; int M = 6; w.solveWordWrap ( l , n , M );    } } Вывод:
   

       
       
       
       
       


Нет линии номер 1 : От слова нет . 1 к 1 
номер строки 2 : От слова нет . 2 до 3
Номер строки 3 : От слова нет . 4 к 4

Вопрос: Написать программу для реализации блокирующей очереди на Java?

Отвечать: 

import java.util.concurrent.ArrayBlockingQueue; 
import java.util.concurrent.BlockingQueue;
открытый класс ProducerConsumer {
общедоступный статический void main (String [] args) {    
    BlockingQueue <Message> queue = new ArrayBlockingQueue <> ( 10 );
    Производитель производитель = новый производитель ( очередь );    
    Потребитель-потребитель = новый Потребитель ( очередь );
    новый поток (производитель) .start ();
   новый поток (потребитель) .start ();
    System.out.println ( «Производитель и потребитель запущены» );
}
}

Выход:

Начало производства и потребителя 
Произведено 0
Произведено 1
Произведено 2
Произведено 3
Произведено 4
Потреблено 0
Произведено 5
Потреблено 1
Произведено 6
Произведено 7
Потреблено 2
Произведено 8

Вопрос: как проверить, являются ли две строки анаграммой?

Отвечать: 

import java.io. *; 
import java.util.Arrays;
import java.util.Collections;
class Anagram {
   static boolean areAnagram (char [] str1, char [] str2)
   {
       // Получить длины обеих строк
       int n1 = str1.length;
       int n2 = str2.length;
       // Если длина обеих строк не одинакова,
       // тогда они не могут быть анаграммой
       if (n1! = N2)
       return false;
       //
       Сортируем обе строки Arrays.sort (str1);
       Arrays.sort (str2);  
       // Сравните отсортированные строки
       для ( intя = 0 ; я <п1; i ++)
           if (str1 [i]! = str2 [i])
               return false;  
        вернуть истину;
   }  
   public static void main (String args [])
   {
       char str1 [] = { 'w' , 'e' , 's' , 't' };
       char str2 [] = { 'т' , 'т' , 'е' , 'ш' };
       if (areAnagram (str1, str2))
           System.out.println ( "Две строки являются"
                              + "анаграммой друг друга" );
       еще
           System.out.println ( "Две строки не являются"
                              + "анаграммой друг друга" );
   }
}

Выход:

Эти две строки не анаграмма от друг друга.

Вопрос: Учитывая два массива, 1,2,3,4,5 и 2,3,1,0,5 найти, какое число отсутствует во втором массиве?

Отвечать: 

class  ABC 
{
   static void findMissing ( int a [], int b [],  int n, int m )    { для ( int i = 0 ; i <n; i ++)        { int j; for (j = 0 ; j <m; j ++) if (a [i] == b [j]) break ; if (j == m)                Система. out .print (a [i] + "" );        }    } // Код драйвера
                           

       

           
           
               
                   
           



   
   public static void main (String [] args)
   {
       int a [] = {1, 2, 3, 4, 5};
       int b [] = {2, 5, 3, 1, 0};
       int n = a.length;
       int m = b.length;          
       findMissing (a, b, n, m);
   }
}

Выход:

4, 0

Вопрос: Как найти наибольшее и наименьшее число в массиве?

Отвечать: 

открытый  класс  FindNumber { 
    public static void main ( String [] args ) {
            int numbers [] = new int [] { 45 , 23 , 87 , 13 , 63 };
            int наименьшее = числа [ 0 ];
            int самое большое = числа [ 0 ];         
            for ( int i = 1 ; i <numbers.length; i ++)
            {
                    if (numbers [i]> самый большой)
                               самый большой = числа [я];
                    иначе, если (числа [i] <наименьшее)
                               наименьшее = числа [i];                 
            }           
            Система. out .println ( "Наибольшее число:" + наибольшее);
            Система. out .println ( "Наименьшее число:" + наименьшее);
    }
}

Выход:

Наибольшее число составляет : 87
Наименьший номер находится : 13

Вопрос: Как найти два верхних максимального числа в массиве?

Отвечать: 

открытый  класс  MaxNumbers { 
   public void TwoMaxNumbers ( int [] числа ) {
       int maxOne = 0 ;
       int maxTwo = 0 ;
       for ( int n: nums) {
           если (maxOne <n) {
               maxTwo = maxOne;
               maxOne = n;
           } иначе, если (maxTwo <n) {
               maxTwo = n;
           }
       }
       Система. out .println ( "Первое максимальное число:" + maxOne);
       Система. out .println ( "Максимальное второе число:" + maxTwo);
   }
   public static void main ( String a [] ) {
       int num [] = { 5 , 34 , 12 , 18 , 50 , 23 };
       TwoMaxNumbers tmn = новый TwoMaxNumbers ();
       tmn.printTwoMaxNumbers (число);
   }
}

Выход:

Первое максимальное количество : 50
Второе максимальное количество : 34

Вывод

Хотите приготовить еще? Этот высоко оцененный курс udemy помог тысячам кандидатов на собеседование, поэтому должен быть полезен и вам: Break Away: Programming And Coding Interviews .

Это завершает наш список вопросов для собеседований по программированию, которые должен знать каждый начинающий программист, и эти вопросы помогут вам пройти технические собеседования. Если во время собеседования вы обнаружите другие проблемы, которых здесь нет, прокомментируйте, и мы добавим их в данный список. Всего наилучшего!


Добавить комментарий