# FactSet On-Campus Interview Experience

FactSet visited our campus in the first week of august. I got job offer from FactSet. So, I think I am eligible to write interview experience.

Profile : Software Engineer

type : only Job

Total rounds : 3/4

There was presentation given by FactSet officials. It followed by first round – written technical test.

Technical Test :

First Test was written coding test. It had 3 questions and 75 min. We were supposed to write the main logic function in each question.

• Question 1 [20 marks] : You are given 2 column, first is transaction number and second has the list of items purchased in that transaction. You are supposed to find all the pairs of item which were purchased together with maximum frequency. Write time and space complexity of your solution.
```Input :
Transactions  | Items Purchased
--------------------------------
1                A, B, C, D
2                A, B, D
3                A, B
4                B, C, D
5                B, D
6                A, B, C
7                A, B, D
Output : (A, B), (B, D)

Explanation:
Pairs               Frequency
-----------------------------------------
{A,B}    5 {Transaction : 1, 2, 3, 6, 7}
{B,D}    5 {Transaction : 1, 2, 4, 5, 7}
{A,C}    2 {Transaction : 1, 6}
{B,C}    3 {Transaction : 1, 4, 6}
{A,D}    3 {Transaction : 1, 2, 7}
{C,D}    2 {Transaction : 1, 4}
```

[solution approach : use HashMap and don’t forget to check “AB” and “BA” will be the same key.]

Example:

```Input : [2, 3, -5, 6, -2, -1, 0, 8, -3, -5, -9, -4, -3, 1], k=4
Output : [ 2, 3, 6, 6, 8, 8, 8, 8, 0, 0, 1 ]
```
• Question 3 [10 marks] : You are supposed to find if given two path will lead to same directory in unix command or not?  You are given current directory path and 2 other paths. As you may know ‘.’ indicates current directory, ‘..’ indicates parent directory.
```Current Directory       | Path1             | Path2         | Result
-------------------------------------------------------------------
/usr/java/codes/ /codes/abc/../prg1/...    ../prg2/..         true
/usr/java/codes/ /codes/abc/../prg1/       ../prg2/../prg1/   true
/usr/java/codes/ /codes/abc/..             ../prg2/../loop/   false
```

[solution approach – 1 : Use String builder and append/trim string accordingly and compare strings]

[solution approach – 2 : Use 2 stack one for each path, First push current directory in both the stack. Now iterate for each path and do the following: if ‘.’ – do nothing, If ‘..’ then pop, else push. Then compare both the paths.]

[solution approach – 3 : Use doubly linked list. First create two doubly linked list for each path with the nodes of current directory. Then iterate through each path and add/traverse nodes accordingly and at last compare.]

-> Total 29 students were selected after first test.

Technical Interview – 1 :

There where 5-6 interviews going on simultaneously. Some had only one interviewer and some had 2. Interview questions were totally based on data structure and algorithm skills. They were looking at how you approach towards solution and how efficient you can make it. Each candidate was asked 2-3 questions and it lasted almost an hour for all.

My interview lasted almost 1hr and 15min. It started with some simple questions on resumes like I mentioned react.js and node.js, So he asked where did you use these technologies, how much knowledge I have of these technologies, what do you like more backend or frontend? He also asked about the test. Then he asked me the following 2 questions.

• Question 1 : It was same for all candidates. Create stack using BST [binary Search Tree].  I gave an approach of creating node with field ‘rank’, rank is kind of index, integer I where given element is Ith element to get pushed. Create BST rankwise. So, He asked me the complexity of push, pop, top and print operations. Again he asked if I can make it better. So, I gave approach using balanced binary search tree. Then he asked me to write the code for push and pop. Some other candidate gave approach of keep pointer to the previously added node.
•  Question 2 : You are given a log file. Log file usually have fix format. In which there are two fields, ERROR CODE : ERROR TEXT. File contains 1 million lines. You are supposed to find the line number which has first occurrence of the error code same as the error code of the last line of the file. Idea here is to use seek() and then simple search. Then he asked me to write the code for the same. But I wasn’t aware of syntax of seek(). So, I gave the remaining code. Interviewer told me how to use seek() and also asked the time and space complexity of the code. The main intention behind asking this question was that if I am aware of Linux/Unix commands, File input/Output, splitting string and primitive data types.

-> Other questions asked in the same round :

1. Question 1 : You are given source string( let’s call it S ), two other string( let’s call it T & W) and integer K. You are supposed to replace T’s Kth occurrence in S with W. If K<0, count Kth occurrence from the end. If K is greater than total occurrence of T, then K= (K % total Occurrence of T). One catch here was, You were supposed to develop solution for string W which may not have same length as T.
2. Question 2 : You are given three strings s1, s2 and s3. s3 is made from the characters of s1 and s2. You have to check if order of character of s1 and s2 occurs in the same order they are in original string.  Here is an example to make question more clear:
```Input : s1 - abc, s2 : def
Output : [s3 is input, output is only true/false]
s3: abcdef - TRUE
s3: abdefc - TRUE
s3: abdcef - TRUE
s3: acdebf - FALSE
s3: deabfc - TRUE
```

-> 16 students were selected for second round.

Technical Interview – 2 :

My second technical round was divided in 2 parts, technical and HR. It lasted almost 1 hr and 45 min. But most candidates had only technical and lasted almost 1hr. Technical questions were asked to check knowledge of data structures. Only 2-3 interviewer asked the candidate asked about projects mentioned in resume. Some candidate were asked questions on pointers.

Technical questions:

Input : [king, gear, rat, tap, pot, talk]
Output : true

Input : [king, gear, rat, tap, talk]
Output : false

Then Interviewer went through my resume again and asked general questions as mentioned above, then asked questions about my achievements.

Then he started HR Interview.

HR Interview Questions:

2. JEE Rank and discussion about why this college
3. What if you won’t get this job? What if you don’t get any job/internship from this college?
5. Do you want to go for post graduation? why?
6. What 5 things you look for before joining any organization/company?
7. Which location will you prefer?
8. Is it exciting for you to live away from home town and move to new place? why?

Then asked me if I have any query.

Some of the candidates who were asked only technical questions in second round had one more round which was purely HR round and lasted minimum 30 mins.

Then 8 candidates were offered job.

Tips: Work on your data structure and algorithm skills more. Be confidant and honest.

Hope it helps!

All the best for interview 🙂

Write your Interview Experience or mail it to contribute@geeksforgeeks.org

My Personal Notes arrow_drop_up

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.

Article Tags :
Practice Tags :

Be the First to upvote.

Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.