top 30 programming coding interview questions answers
У цьому підручнику ми надали найпоширеніші запитання та відповіді на інтерв’ю з кодуванням із логікою програм та прикладами коду, щоб ви могли практикувати програмування:
Ми всі усвідомлюємо, що відповідь на найосновніші питання кодування чи програмування визначає, як ми будемо співбесіду. Інтерв’ю може бути для Java, C ++ або вимоги Javascript, але основа залишається незмінною, тобто наскільки ми міцні в основі логіки програмування.
Крім того, якщо наш підхід швидкий і тонкий на співбесіді, ймовірність відбору є вищою. Тож читайте далі, щоб зламати запитання про співбесіду з кодуванням.
Не забувайте вивчати та практикувати ці питання співбесіди з програмуванням перед тим, як брати участь в співбесіді. Це не тільки підвищить вашу переконаність, але й допоможе швидко відповісти на них. Питання в основному охоплюватимуть такі теми, як масиви, рядок, зв’язаний список тощо.
Підтягуйте шкарпетки, хлопці !!
Часті запитання щодо основних питань програмування / кодування
Q # 1) Як можна змінити рядок?
Відповідь: Рядок обернено за допомогою наступного алгоритму:
- Ініціювати
- Оголошується рядок, який слід змінити.
- Отримати довжину рядка.
- Почніть цикл, а потім поміняйте місцями елементи масиву.
- Зберігайте обмінені позиції.
- Роздрукувати зворотний рядок.
Q # 2) Що таке паліндромний рядок?
Відповідь: Після того, як рядок зміниться, як обговорювалося в Q # 1, нам потрібно поставити таку умову:
Фрагмент коду:
if(actualtxt.equals(reversetxt)){ return “Palindrome”; else return “Not Palindrome”; }
Таким чином, паліндромна струна є тією, яка на реверсі залишається незмінною наприклад, - ‘мадам’ - паліндромна струна.
Q # 3) Як отримати відповідні символи в рядку?
Відповідь: Щоб отримати відповідні символи в рядку, виконайте такі дії:
- Береться структура даних хеш-карти, яка працює з парою ключ-значення.
- Зациклюйте рядки, символ за символом, і переконайтеся, що цей символ рядка існує на хеш-карті чи ні.
- Якщо результат відповідає істині, лічильник символу на хеш-карті збільшується, інакше поставити рахунок як 1.
- Після того, як цикл закінчиться, обернеться карта Хеша і надрукуйте символи з більш ніж 1 рахунком.
Фрагмент коду:
HashMap mp = new HashMap (); for (int j = 0; j1){ System.out.println(ch+ ' - ' + c); } }
Q # 4) Як отримати невідповідні символи в рядку?
Відповідь: Щоб отримати невідповідні символи в рядку, виконайте такі дії:
- Береться структура даних хеш-карти, яка працює з парою ключ-значення.
- Повторіть рядок, символ за символом, і перевірте, чи існує цей символ рядка на хеш-карті чи ні.
- Якщо результат відповідає істині, лічильник символу на хеш-карті збільшується, інакше поставити рахунок як 1.
- Після того, як цикл закінчиться, переходить карта Хеша і друкує символи з рахунком, рівним 1.
Фрагмент коду:
HashMap mp = new HashMap (); for (int j = 0; j Q # 5) Як обчислити кількість голосних і приголосних у рядку?
Відповідь: Щоб обчислити кількість голосних та приголосних у рядку, виконайте такі кроки:
- Отримайте рядок, на якому необхідно виконати відлік.
- Запустіть цикл від 0 до довжини рядка.
- Візьміть по одному символу за раз і перевірте, чи входять вони до групи голосних.
- Якщо результат правдивий, збільште кількість голосних або збільште кількість приголосних.
Фрагмент коду:
for (int k = 0; k Q # 6) Як довести, що ці два рядки є анаграмами?
Відповідь: Два рядки називаються анаграмами, якщо вони містять подібну групу символів у різноманітній послідовності.
Щоб перевірити, чи є два рядки анаграмами, виконайте такі дії:
- Ініціалізуйте два рядки у двох змінних.
- Перевірте, чи довжина двох рядків однакова, якщо ні, тоді рядки не є анаграмою.
- Якщо результат правдивий, візьміть дві рядки та збережіть їх у масиві символів.
- Відсортуйте два масиви символів, а потім перевірте, чи однакові два відсортовані масиви.
- Якщо результат відповідає дійсності, ці два рядки є анаграмою інакше, а не анаграмою.
Фрагмент коду:
if (str1.length() != str2.length()) { System.out.println(str1 + ' and ' +str2 + ' not anagrams string'); }else{ char() anagram1 = str1.toCharArray(); char() anagram2 = str2.toCharArray(); Arrays.sort(anagram1); Arrays.sort(anagram2); anagrmstat = Arrays.equals(anagram1, anagram2); } if (anagrmstat == true) { System.out.println(str1 + ' and ' +str2 + ' anagrams string'); }else{ System.out.println(str1 + ' and ' +str2 + ' not anagrams string'); } }
Q # 7) Знайдіть кількість випадків появи певного символу в рядку.
Відповідь: Щоб підрахувати входження певного символу в рядок, виконайте такі дії:
де ключ безпеки мережі на маршрутизаторі
- Почніть із рядка та певного символу, поява якого буде врахована.
- Почніть цикл від 0 до довжини рядка.
- Порівняйте, якщо конкретний символ рядка дорівнює символу, який шукається.
- Якщо результат правдивий, то збільште значення лічильника.
Фрагмент коду:
for (int l=0; l Q # 8) Як перевірити, чи два рядки є обертанням взаємно?
Відповідь: Щоб перевірити, чи є два рядки взаємним обертанням, виконайте такі дії:
- Ініціалізуйте два рядки двома змінними.
- Перевірте, чи довжина двох рядків однакова, якщо не повернути false.
- Приєднайте рядок до себе.
- Переконайтеся, що рядок, який обертається, присутній у об’єднаному рядку.
- Якщо результат істинний, другий рядок - це обертання першого рядка.
Фрагмент коду:
String concat = org_string + org_string; if (concat.indexOf (rotat) ! = -1) { return true; }
Q # 9) Як обчислити кількість числових цифр у рядку?
Відповідь: Щоб обчислити кількість цифр у рядку, виконайте такі дії:
- Отримайте рядок, на якому необхідно виконати відлік
- Використовуйте функцію replaceAll, яка замінює всі цифрові цифри на “”.
- Отримайте довжину рядка без цифр.
Фрагмент коду:
package introduction; public class GG { public static void main(String() args) { // TODO Auto-generated method stub String str = 'TESTu45'; str=str.replaceAll('\d', ''); int l = str.length(); System.out.println('The length of the string without digit is:' + l); } }
У цьому рішенні використовується регулярний вираз.
Q # 10) Як обчислити перший символ рядка, який не повторюється?
Відповідь: Для обчислення першого символу рядка, який не повторюється, виконуються наступні кроки:
- Береться установка структури даних для повторюваних символів та списку для неповторюваних символів.
- Після виділення повторного та неповторного, в кінці ітерації, перший елемент списку друкується в консолі.
Фрагмент коду:
Set repeated = new HashSet(); List nonRepeated = new ArrayList(); for (int m = 0; m Q # 11) Як шукати відсутнє число в масиві, що містить цілі числа від 1 до 100?
Відповідь: Для пошуку відсутнього числа в масиві, який містить цілі числа від 1 до 100, виконуються наступні кроки:
- Візьмемо цілочисельний масив із числами від 1 до 100.
- Обчисліть суму чисел, підсумовування має бути = l * (l + 1) / 2, де l - кількість цілих чисел.
- Виконайте віднімання відсутнього елемента від загального додавання чисел.
Q # 12) Як отримати відповідні елементи в цілочисельному масиві?
Відповідь: Щоб отримати відповідні елементи у цілочисельному масиві, виконайте такі дії:
- Побудуйте дві петлі.
- У першому циклі збирайте елементи по одному і складайте кількість екземплярів вибраного елемента.
Фрагмент коду:
for (m = 0; m Q # 13) Як видалити повторювані елементи у цілочисельному масиві?
Відповідь: Щоб видалити повторювані елементи у цілочисельному масиві, виконайте такі дії:
- Створіть хеш-карту, яка буде обирати всі елементи, що були раніше.
- Прокрутіть масив і перевірте, чи елемент вже існує на карті хешу
- Якщо результат правдивий, обхід масиву продовжується, інакше елемент роздруковується в консолі.
Фрагмент коду:
HashMap m = new HashMap(); for (int j = 0; j Q # 14) Визначте найбільший і найменший елемент масиву, який не сортується.
Відповідь: Щоб визначити найбільший та найменший елемент масиву, потрібно виконати наступні кроки:
- Обходьте масив і контролюйте максимальний знайдений на сьогодні елемент, поки ми не опинимось на межі масиву, досягнуто найбільшого елемента.
- Пройдіть обхід масиву та відстежуйте мінімальний знайдений на сьогодні елемент, поки ми не знаходимось на межі масиву, досягається найменший елемент.
Q # 15) Поясніть алгоритм сортування міхурів.
Відповідь: Алгоритм сортування бульбашок включає такі кроки:
- Почніть з першого елемента, а потім виконайте порівняння з наступним елементом у масиві
- Якщо даний елемент більший за наступний елемент масиву, поміняйте місцями їх місця.
- Якщо даний елемент менше, ніж наступний елемент масиву, перейдіть до наступного елемента і знову повторіть крок 1.
Фрагмент коду:
for(k = 0; k Q # 16) Впровадити алгоритм сортування вставки.
Відповідь: Реалізація сортування вставки.
Фрагмент коду:
for (m = 1; m 0 && arry(n - 1) > arry(n)) { k = arry(n); arry(n) = arry(n - 1); arry(n - 1) = k; n--; } }
Q # 17) Визначте другий за величиною елемент масиву.
Відповідь: Другий за величиною елемент масиву можна обчислити наступними кроками:
- Вкажіть найбільший елемент як перший елемент масиву, а другий за величиною елемент - як другий елемент масиву.
- Пройдіть цикл для обходу масиву.
- ЯКЩО arry (i) перевищує найбільший елемент THEN
Другий елемент? найбільший елемент
Найбільший елемент - arry (i)
ЯКЩО другий елемент менше arry (i) THEN
Другий елемент - arry (i)
Фрагмент коду:
if(arry(0) > arry(1)) { l = arry(0); s = arry(1); } else { l = arry(1); s = arry(0); } for(i = 2; i Q # 18) Поясніть розворот масиву.
Відповідь: Зміна масиву виконується наступними способами:
- Візьмемо масив з елементами.
- Тепер обміняйте позицію першого елемента з кінцевим елементом, і так само другого елемента з передостаннім елементом.
- Це триватиме доти, доки весь масив не буде змінено.
Фрагмент коду:
for (t = 0; t Q # 19) Як видалити спеціальні символи з рядка, який знаходиться в нижньому регістрі?
Відповідь: Спеціальні символи з рядка можна видалити за допомогою функції replaceAll у Java.
Фрагмент коду:
string str = “Testing@” str.replaceAll(“(^a-z0-9)”,””)
У цьому рішенні використовується регулярний вираз.
Q # 20) Як виконати обмін двох рядків, не використовуючи третю змінну?
Відповідь: Два рядки замінюються без допомоги третьої змінної наступними кроками:
(i) Візьміть два рядки i, j і додайте їх, після чого збережіть у першому рядку.
(ii) За допомогою методу substring витягніть рядок:
j = substring(0,i.length()-j.length())
(iii) Збережіть рядок j у рядку i
i= subsrtirng(j.length)
Фрагмент коду:
string i = “abc”, j =”def”; i = i+j; j = i. substring(0,i.length()-j.length()); i = i.substring(j.length()) System.out.println(i +””+j);
Q # 21) Як перейти до середини пов'язаного списку?
Відповідь: Щоб перейти до середини зв’язаного списку, виконайте такі дії:
- Оголосіть два вказівники перший і другий, які ініціалізуються до пов'язаної голови списку.
- Збільште перший зв'язаний список на два вузли, а другий - на один вузол у кожному циклі.
- Поки перший вузол досягає кінця списку, другий вузол вказуватиме на середину.
Фрагмент коду:
first = second = head; while(first !=null) { first = first.next; if(first != null && first.next != null) { second = second.next; first = first.next; } } return second; }
Q # 22) Впровадити процес скасування пов'язаного списку.
Відповідь: Зв’язаний список можна змінити за допомогою наступних кроків:
- Оголосіть три вузли, що передують, присутні та наступні.
- Перебуваючи в поточному вузлі, попередній буде нульовим.
- Нехай даний. Next є попереднім, щоб змінити список.
- У кожному циклі присутні та попередні збільшуються на 1.
Фрагмент коду:
Node preceding=null; Node following while(present!=null) { following=present.next; present.next=preceding; preceding=present; present=following; } return preceding; }
Q # 23) Який процес видалення відповідних елементів зі зв’язаного списку, який не сортується.
Відповідь: Щоб видалити відповідні елементи зі зв’язаного списку, який не сортується, виконайте такі дії:
- Подорож від голови до хвоста пов'язаного списку.
- Для кожного значення у зв’язаному списку перевірте, чи воно вже є у хеш-таблиці.
- Якщо результат істинний, елемент не додається до хеш-таблиці.
Фрагмент коду:
HashSet h = new HashSet(); node present = head; node preceding = null; while (present != null) { int presentval = present.value; if (h.contains(presentval)) { preceding.next = present.next; } else { h.add(presentval); preceding = present; } present = present.next; } }
Q # 24) Як отримати довжину пов'язаного списку?
Відповідь: Щоб отримати довжину зв’язаного списку, виконайте такі дії:
- Запустіть лічильник зі значенням 0 і представіть вузол як головку.
- Поки поточний вузол не є нульовим, виконайте такі дії:
- присутній = присутній -> наступний
- лічильник = лічильник + 1
- Повертається значення лічильника.
Фрагмент коду:
{ Node present = head; int c = 0; while (present != null) { c = c + 1; present = present.next; } return c; }
Q # 25) Як шукати певне значення у зв’язаному списку?
Відповідь: Для пошуку певного значення у зв’язаному списку виконуються такі дії:
- Оголосіть даний вузол як головний.
- Поки поточний вузол не є нульовим, виконайте такі дії:
- present -> value дорівнює значенню, яке шукається для повернення true.
- присутній = присутній -> наступний.
- Якщо не знайдено, повертається false.
Фрагмент коду:
Node present = head; while (present != null) { if (present.value == value) return true; present = present.next; } return false; }
Q # 26) Як перевірити, чи є число простим чи ні?
Відповідь: Щоб перевірити, чи є число простим чи ні, виконайте такі дії:
- Почніть цикл від значення 2 (k) до (число / 2)
- Якщо число ідеально ділиться на k, тоді число не є простим.
- Якщо число не цілком ділиться, крім 1 і само по собі, тоді число є простим.
Фрагмент коду:
for(k = 2; k <= number / 2; k++) { if(number % k == 0) { stat = false; break; } } if (stat) System.out.println('Prime'; else System.out.println('Not prime');
Q # 27) Як отримати третій вузол пов'язаного списку?
Відповідь: Щоб дістатися до третього вузла зв’язаного списку, виконайте такі дії:
- Запустіть лічильник зі значенням 0.
- Перегляньте зв’язаний список і виконайте такі дії:
- Якщо значення лічильника дорівнює 3, тоді повертається поточний вузол.
- Лічильник збільшено на 1.
- Модифікуйте сьогодення таким чином, щоб воно означало наступне із сьогодення.
Фрагмент коду:
Node present = head; int c = 0; while (c != null) { if (c == 3) return present.val; c = c+1; present = present.next; }
Q # 28) Обчисліть перші п’ять чисел Фібоначчі.
Відповідь: 0 і 1 - це перші два числа Фібоначчі, а всі числа після 0 і 1 - додавання двох попередніх чисел.
Фрагмент коду:
int num1=0, num2=1,t; for ( int k = 0; k<5,k++) { System.out.println(num1); t = num1 + num2; num1 = num2; num2 = t; }
Q # 29) Як змінити число назад?
Відповідь: Зміна числа досягається наступними кроками:
- Вийміть крайню праву цифру числа.
- Підсумуйте цифру з новим зворотним числом.
- Виконайте множення на 10.
- Поділіть число на 10.
Q # 30) Визначте множники числа.
Відповідь: множники числа виражаються наступним фрагментом коду:
int no = 75; for(int j = 1; j <= no; j++) { if (no % j == 0) { System.out.print(j); }
Висновок
Ми сподіваємось, що багато відповідей на ваші запитання щодо основних питань співбесіди з кодування були уточнені.
Більша частина реалізації кодування, яку ми обговорювали, виконується на Java, однак, навіть якщо ви не знаєте мови, кроки або деталі алгоритму, наведені тут для більшості питань, допоможуть вам підготуватися до співбесіди.
Наполегливо працюйте над своїми основами програмування, логікою, структурами даних, зберігайте спокій і практикуйте ці запитання для співбесіди з програмування.
Все найкраще для вашого майбутнього інтерв’ю !!
Рекомендована література
- Запитання та відповіді на інтерв’ю
- Запитання та відповіді на інтерв’ю для тестування ETL
- Деякі хитрі ручні тестування Питання та відповіді
- 30 найпопулярніших запитань та відповідей на інтерв’ю в HTML (СПИСОК 2021)
- 30 найкращих запитань та відповідей на інтерв’ю з огірками
- 30 найкращих запитань та відповідей на інтерв’ю SAS
- 30 найкращих запитань та відповідей на інтерв’ю СУБД
- 30 найкращих запитань та відповідей на тестування безпеки