Testing Engineer Interview Questions | Glassdoor

# Testing Engineer Interview Questions

3,246

Testing engineer interview questions shared by candidates

## Top Interview Questions

Sort: RelevancePopular Date

Jun 4, 2013
 Given a 2D rectangular matrix of boolean values, write a function which returns whether or not the matrix is the same when rotated 180 degrees. Additionally verify that every boolean true is accessible from every other boolean true if a traversal can be made to an adjacent cell in the matrix, excluding diagonal cells. That is , (x , y ) can access the set [ ( x + 1 , y ) , ( x - 1 , y ) , (x , y - 1 ) , (x , y + 1 ) ] For example, the matrix { { true , false } , { false , true } } should not pass this test.4 Answersif the matrix A is a11, a12 a21, a22 after 180 rotation a22, a21 a12, a11 so a11 == a22 and a12 == a21 function is BOOL isSame = (a11==a22) && (a12==a21) done.public static boolean isMatrixEqualToFlip(boolean[][] matrix) { if (matrix==null || matrix.length == 0 || matrix[0].length == 0) { return true; } int rowlen = matrix[0].length; int highInd = matrix.length/2; int lowInd = highInd - 1 + (matrix.length % 2); System.out.println("rowlen: " + rowlen + " high: "+ highInd + " low: " + lowInd); while (lowInd >= 0) { System.out.println("high: " + highInd + " lowInd: " + lowInd); for(int i=0; i < rowlen; i++) { System.out.println("Compare " + matrix[highInd][i] + " to " + matrix[lowInd][rowlen - 1 - i]); if (matrix[highInd][i] != matrix[lowInd][rowlen - 1-i]) { return false; } } lowInd--; highInd++; } return true; }def rotate180(mtx): col=mtx col.reverse() for row in col: row.reverse() print colShow More ResponsesIf the matrix is: true, false false, true 90 degree rotation would be: false, true true, false 180 degree rotation would be: true, false false, true If we define the matrix as: a11, a12 a21, a22 Then the solution would be: boolean isMatch = !(a11 && a12) && !(a11 && a21) && !(a12 && a22) && !(a21 && a22);

### Software Development Engineer In Test (SDET) at Microsoft was asked...

Jun 18, 2011
 In a BST write a program to find 2 nodes x and y such that X+y=k4 AnswersI think we need to do traversals and check for every node.For a given x traverse nodes upto x + y <= k.This problem requires the use of a map aka dictionary aka hashtable. Visit a node If the node data isn't in the map; add the data to the map. Solve for what the other number should be; check if it's in the map. if it is you're done... otherwise keep searching.Show More ResponsesYou can solve the problem in O(n) time. First you find the smallest number in the tree then you find the highest number (worst-case linear time, logarithmic time if the BST is balanced). If their sum is larger than K, you find the largest number in the tree that is lower than y (you can do it in amortized constant time) If their sum is lower than K, you find the smallest number in the tree that is higher than x (amortized constant time). And you continue this algorithm until you reach the correct X and Y :)

Sep 3, 2010

### Software Development Engineer In Test (SDET) at Microsoft was asked...

Oct 7, 2010
 Write a function to turn a string into an integer and test it3 AnswersCString csNum; int nNum = 2; csNum.format("%d", nNum);oops wrong one CString csNum = "1"; int nNum = atoi(csNum);public int AtoI(string str) { bool isNeg = false; int index = 0; if (str[0] == '-') { isNeg = true; index++; } int result = 0; // "123" 123 // 1 * 10 + 2 12 * 10 + 3 int multiple = 1; int number = 0; for (int i = index; i < str.Length; i++) { number = str[i] - '0'; result = result * multiple + number; multiple = 10; } if (isNeg) { result = result * -1; } return result; }

Mar 18, 2009
 Design a function which returns the number of set bits in a given number, when expressed in binary4 Answersint numBits(int num) { int numBits = 0; while(num > 0) { if(num % 2) numBits++; num /= 2; } return numBits; }The question stipulates "a number", but the code assumes "a positive integer". (It also assumes the number expressed in binary has a C compiler's default number of bits for type int (e.g. 32); that's probably acceptable since a real-world case would likely specify that type. ) Consider: /* return n of set bits in a signed int */ int numBits(int num) { int numBits = 0; while (num != 0) { if (num < 0) ++numBits; num <<= 1; } return numBits ; }You may get faster results with some precomputing... /* lookup table with number of bits set per byte */ const short lookupTable[256] = { 0, 1, 1, 2, 1, 2, 2, 3, 1, ... }; int numBits(int num) { unsigned char *p = (unsigned char *)# // not necessarily required, but makes for easier reading return lookupTable[p[0]] + lookupTable[p[1]] + lookupTable[p[2]] + lookupTable[p[3]]; // assumes 32 bit integer }Show More ResponsesUse a logarithm, base-2. def num_bits(n): return int(math.log(n, 2) + 1)

### Software Development Engineer In Test (SDET) at Microsoft was asked...

Nov 29, 2009
 Write a function to find the maximum sum of sub array where the array can have negative and positive numbers.4 AnswersDon't jump to the answer. As some of you noticed, the question has ambiguties. Ask questions to clarify the question. They would like you to solve the problem after understanding all the details so that you won't miss any edge cases in your solution. Hint: The answer is recursive.answer in java: int array[] ={1,2,3,-6,5,6,9}; table = new int[7][7]; int i, j; int localMax = -999999999; for(i = 6 ; i >= 0 ; i--) for(j = i ; j < 7 ; j++) { if(i == j) table[i][j] = array[i]; else table[i][j] = array[i] + table[i+1][j]; localMax = Math.max(localMax, table[i][j]); } System.out.println(localMax);In Python: def largest_segment(s): y = 0 z = 0 for i in range(0, len(s)): y = max(y + s[i], 0) z = max(z, y) return z Algorithm is O(n). Only works if the max value for an array containing all negatives is 0.Show More Responsesdef maxSumSubArray(inputArray): currentSum = 0 grandSum = 0 for i in range(len(inputArray)): if (currentSum + inputArray[i]) < currentSum: currentSum = 0 continue else: currentSum = currentSum + inputArray[i] if (grandSum < currentSum): grandSum = currentSum return grandSum

### Software/Test Engineer at Amazon was asked...

Apr 18, 2012
 how to get the most significant bit from a byte?3 AnswersI couldnt understand what he ment by byte. I thought eight bits in binary format. But what he was asking about converting a decimal number into binary and getting the most significant bit out of it.right shift the number by 7 positions and you get the most significant bit printf("%d",n>>7);If he was asking about converting a decimal integer number into binary and getting the most significant bit out of it, then the answer is just: divide by 2, again and again until you get the last '1'; Or using programming code: while(x) { x >>= 1; ++n; }

### Software Development Engineer In Test (SDET) at Microsoft was asked...

Jan 13, 2012
 Check if tic-tac-toe has a winner5 AnswersTic-Tac-Toe is game like soduku or checkers that is represented as having columns and rows which translates as a 2 Dimensional array. In this case a 3x3 array. Represented as [0][0] [1][0] [2][0] You would therefore permutate each possibility. .... ..... ...... ...... ..... ..... [2][2]It's all about state. You can only win on the placement of a token so check the possible ways to win from this position. So say the user places a value in the bottom left corner. Then you need only check the vertical, horizontal and the diagonal from this position. From the center position you will need to check 4 different positions (+ and x). This retains a O(1) solution but then again this only works if you can keep count of how many moves have already occurred.@Matt: I like your approach, but still question in doubtful. We have final state of game or we have to write decision function after every move?Show More Responses@VIctor.. It does not matter that we have final state or not we need to check with every input from users..and probably the check function gonna check on 8 places ...I just got this question and it occurs to me this is a simple iteration of flood fill. X being one color, O being another. Visit each node, get its neighbors, put them on the neighbor stack. Go DFS and arbitrarily id go left to right...each time throwing neighbors into a stack. Put each node with its resultant x or o as data in a visited array. Go to the stack and pop off the first, get its data and check for neighbors, if they aren't on the stack put them on the stack. This will operate roughly Log(n) run time, as you won't iterate through the entire stack to find a win condition..

Oct 3, 2012