C# Coding Questions For Technical Interviews
Introduction
In this article, we will learn about some of the frequently asked C# programming questions in
technical interviews.
Note: We won’t be using any inbuilt functions such as Reverse, Substring etc. for string
manipulation, also we will avoid using LINQ as these are generally restricted to be used in
coding interviews.
Source Code
Download the source code for all the questions from GitHub
Q.1: How to reverse a string?
Ans.: The user will input a string and the method should return the reverse of that string
input: hello, output: olleh
input: hello world, output: dlrow olleh
internal static void ReverseString(string str)
{
char[] charArray = [Link]();
for (int i = 0, j = [Link] - 1; i < j; i++, j--)
{
charArray[i] = str[j];
charArray[j] = str[i];
}
string reversedstring = new string(charArray);
[Link](reversedstring);
}
Q.2: How to find if the given string is a palindrome or not?
Ans.: The user will input a string and we need to print “Palindrome” or “Not Palindrome” based
on whether the input string is a palindrome or not.
input: madam, output: Palindrome
input: step on no pets, output: Palindrome
input: book, output: Not Palindrome
if we pass an integer as a string parameter then also this method will give the correct output
input: 1221, output: Palindrome
internal static void chkPalindrome(string str)
{
bool flag = false;
for (int i = 0, j = [Link] - 1; i < [Link] / 2; i++, j--)
{
if (str[i] != str[j])
{
flag = false;
break;
}
else
flag = true;
}
if (flag)
{
[Link]("Palindrome");
}
else
[Link]("Not Palindrome");
}
Q.3: How to reverse the order of words in a given string?
Ans.: The user will input a sentence and we need to reverse the sequence of words in the
sentence.
input: Welcome to Csharp corner, output: corner Csharp to Welcome
internal static void ReverseWordOrder(string str)
{
int i;
StringBuilder reverseSentence = new StringBuilder();
int Start = [Link] - 1;
int End = [Link] - 1;
while (Start > 0)
{
if (str[Start] == ' ')
{
i = Start + 1;
while (i <= End)
{
[Link](str[i]);
i++;
}
[Link](' ');
End = Start - 1;
}
Start--;
}
for (i = 0; i <= End; i++)
{
[Link](str[i]);
}
[Link]([Link]());
}
Q.4: How to reverse each word in a given string?
Ans.: The user will input a sentence and we need to reverse each word individually without
changing its position in the sentence.
input: Welcome to Csharp corner, output: emocleW ot prahsC renroc
internal static void ReverseWords(string str)
{
StringBuilder output = new StringBuilder();
List<char> charlist = new List<char>();
for (int i = 0; i < [Link]; i++)
{
if (str[i] == ' ' || i == [Link] - 1)
{
if (i == [Link] - 1)
[Link](str[i]);
for (int j = [Link] - 1; j >= 0; j--)
[Link](charlist[j]);
[Link](' ');
charlist = new List<char>();
}
else
[Link](str[i]);
}
[Link]([Link]());
}
Q.5: How to count the occurrence of each character in a string?
Ans.: The user will input a string and we need to find the count of each character of the
string and display it on console. We won’t be counting space character.
input: hello world;
output:
h–1
e–1
l–3
o–2
w–1
r–1
d–1
internal static void Countcharacter(string str)
Dictionary<char, int> characterCount = new Dictionary<char, int>();
foreach (var character in str)
if (character != ' ')
if ()
[Link](character, 1);
else
characterCount[character]++;
foreach (var character in characterCount)
[Link]("{0} - {1}", [Link], [Link]);
}
Q.6: How to remove duplicate characters from a string?
Ans.: The user will input a string and the method should remove multiple occurrences of
characters in the string
input: csharpcorner, output: csharpone
internal static void removeduplicate(string str)
{
string result = [Link];
for (int i = 0; i < [Link]; i++)
{
if ()
{
result += str[i];
}
}
[Link](result);
}
Q.7: How to find all possible substring of a given string?
Ans.: This is a very frequent interview question. Here we need to form all the possible
substrings from input string, varying from length 1 to the input string length. The output will
include the input string also.
input: abcd , output : a ab abc abcd b bc bcd c cd d
internal static void removeduplicate(string str)
{
string result = [Link];
for (int i = 0; i < [Link]; i++)
{
if ()
{
result += str[i];
}
}
[Link](result);
}
Q.8: How to perform Left circular rotation of an array?
Ans.: The user will input an integer array and the method should shift each element of input
array to its Left by one position in circular fashion. The logic is to iterate loop from Length-1 to 0
and swap each element with last element.
input: 1 2 3 4 5, output: 2 3 4 5 1
internal static void RotateLeft(int[] array)
{
int size = [Link];
int temp;
for (int j = size - 1; j > 0; j--)
{
temp = array[size - 1];
array[[Link] - 1] = array[j - 1];
array[j - 1] = temp;
}
foreach (int num in array)
{
[Link](num + " ");
}
}
Q.9: How to perform Right circular rotation of an array?
Ans: The user will input an integer array and the method should shift each element of input
array to its Right by one position in circular fashion. The logic is to iterate loop from 0 to Length-
1 and swap each element with first element
input: 1 2 3 4 5, output: 5 1 2 3 4
internal static void RotateRight(int[] array)
{
int size = [Link];
int temp;
for (int j = 0; j < size - 1; j++)
{
temp = array[0];
array[0] = array[j + 1];
array[j + 1] = temp;
}
foreach (int num in array)
{
[Link](num + " ");
}
}
Q.10: How to find if a positive integer is a prime number or not?
Ans.: The user will input a positive integer and the method should output “Prime” or “Not
Prime” based on whether the input integer is a prime number or not.
The logic is to find a positive integer less than or equal to the square root of input integer. If
there is a divisor of number that is less than the square root of number, then there will be a
divisor of number that is greater than square root of number. Hence, we have to traverse till the
square root of number.
The time complexity of this function is O(√N) because we traverse from 1 to √N.
input: 20, output: Not Prime
input: 17, output: Prime
static void Main(string[] args)
if (FindPrime(47))
[Link]("Prime");
}
else
[Link]("Not Prime");
[Link]();
internal static bool FindPrime(int number)
if (number == 1) return false;
if (number == 2) return true;
if (number % 2 == 0) return false;
var squareRoot = (int)[Link]([Link](number));
for (int i = 3; i <= squareRoot; i += 2)
if (number % i == 0) return false;
return true;
Q.11: How to find the sum of digits of a positive integer?
Ans.: The user will input a positive integer and the method should return the sum of all the
digits in that integer.
input: 168, output: 15
internal static void SumOfDigits(int num)
{
int sum = 0;
while (num > 0)
{
sum += num % 10;
num /= 10;
}
[Link](sum);
}
Q.12: How to find second largest integer in an array using only one loop?
Ans.: The user will input an unsorted integer array and the method should find the second
largest integer in the array.
input: 3 2 1 5 4, output: 4
internal static void FindSecondLargeInArray(int[] arr)
{
int max1 = [Link];
int max2 = [Link];
foreach (int i in arr)
{
if (i > max1)
{
max2 = max1;
max1 = i;
}
else if (i >= max2 && i != max1)
{
max2 = i;
}
}
[Link](max2); ;
}
Q.13: How to find third largest integer in an array using only one loop?
Ans.: The user will input an unsorted integer array and the method should find the third largest
integer in the array.
input: 3 2 1 5 4, output: 3
internal static void FindthirdLargeInArray(int[] arr)
{
int max1 = [Link];
int max2 = [Link];
int max3 = [Link];
foreach (int i in arr)
{
if (i > max1)
{
max3 = max2;
max2 = max1;
max1 = i;
}
else if (i > max2 && i != max1)
{
max3 = max2;
max2 = i;
}
else if (i > max3 && i != max2 && i != max1)
{
max3 = i;
}
}
[Link](max3); ;
}
Q.14: How to convert a two-dimensional array to a one-dimensional array?
Ans.: The user will input a 2-D array (matrix) and we need to convert it to a 1-D array. We will
create a 1-D array column-wise.
input: { { 1, 2, 3 }, { 4, 5, 6 } }, output: 1 4 2 5 3 6
internal static void MultiToSingle(int[,] array)
int index = 0;
int width = [Link](0);
int height = [Link](1);
int[] single = new int[width * height];
for (int y = 0; y < height; y++)
for (int x = 0; x < width; x++)
single[index] = array[x, y];
[Link](single[index] + " ");
index++;
This question can also be asked to form a 1-D array row-wise. In this case, just swap the
sequence of the for loops as shown below. The output will be 1 2 3 4 5 6 for the input matrix
mentioned above.
for (int x = 0; x < width; x++ )
for ( int y = 0; y < height; y++)
single[index] = array[x, y];
[Link](single[index] + " ");
index++;
This question can also be asked to form a 1-D array row-wise. In this case, just swap the
sequence of the for loops as shown below. The output will be 1 2 3 4 5 6 for the input matrix
mentioned above.
for (int x = 0; x < width; x++ )
for ( int y = 0; y < height; y++)
single[index] = array[x, y];
[Link](single[index] + " ");
index++;
Q.15: How to convert a one-dimensional array to a two-dimensional array?
Ans.: The user will input a 1-D array along with the number of rows and columns. The method
should convert this 1-D array to a 2-D array(matrix) of a given row and column. We will create a
matrix row-wise.
input: {1, 2, 3, 4, 5, 6} ,2 ,3
output:
123
456
internal static void SingleToMulti(int[] array, int row, int column)
int index = 0;
int[,] multi = new int[row, column];
for (int y = 0; y < row; y++)
{
for (int x = 0; x < column; x++)
multi[y, x] = array[index];
index++;
[Link](multi[y, x] + " ");
[Link]();