Société Générale Software Engineer OA Experience — On-Campus Placement
Summary
I completed the Société Générale Software Engineer Online Assessment, which included aptitude, technical, and two coding problems, and I am now waiting for the results.
Full Experience
Société Générale Software Engineer OA Experience — On-Campus Placement
I recently attended the Société Générale Software Engineer Online Assessment through an on-campus placement process.
Sharing my experience here so that anyone who encounters a similar OA in the future has an idea of what to expect.
OA Structure
The total duration was 80 minutes:
| Section | Time | Questions |
|---|---|---|
| Aptitude | 20 minutes | 16 MCQs |
| Technical | 20 minutes | 14 MCQs |
| Coding | 40 minutes | 2 Questions |
1. Aptitude — 16 MCQs | 20 Minutes
The aptitude section had a mixture of Quantitative Aptitude and Logical Reasoning.
The questions I encountered included:
- Syllogisms
- Seating Arrangement
- Statement & Conclusion
- Blood Relations
- Speed/Distance
- Venn Diagrams
- Profit & Loss
- Percentages
- Ratios
- Other mixed logical/quantitative questions
I wasn't specifically prepared for aptitude, so I solved the questions using the tricks I knew and made guesses on some of them.
2. Technical — 14 MCQs | 20 Minutes
The technical section was quite different from what I initially expected.
I was expecting mostly Core CS subjects, but the questions had significant coverage of modern AI/ML and Software Engineering topics.
Some of the topics I encountered were:
- Transformers
- LLMs
- LLM switching
- AI/ML algorithms and their applications
- UML-based questions
- Software architecture
- Software design
- Software development models
- Advanced AI/ML software concepts
- Other software engineering concepts
3. Coding — 2 Questions | 40 Minutes
The coding section had 2 questions with 40 minutes total.
One thing I found different from the usual LeetCode‑style environment was the requirement to write the program using STDIN and STDOUT.
We had to read the input exactly in the given format and print the output in the exact required format.
For the first question, there wasn't an option for Java, so I used Python.
For the second question, Java was available, but I continued with Python because I was more comfortable with Python's input handling.
Coding Question 1 — Mystic Stones
The first problem had a fictional scenario involving a competition on another planet.
There are Y players, and you are the X‑th player.
There are several mystic stones scattered around the planet, and each stone has an effectiveness value.
The effectiveness values are given as an unsorted array.
In every turn, the players pick the most effective remaining stone one by one.
So the picking order is:
Player 1
Player 2
...
Player Y
Player 1
Player 2
...
until all stones are picked.
The task was to find the sum of the effectiveness values of the stones picked by player X.
Example
Suppose:
Y = 3
X = 2
Effectiveness:
[10, 4, 8, 2, 15, 7]
There are 3 players, and we are Player 2.
First, arrange the stones according to their effectiveness from highest to lowest:
15, 10, 8, 7, 4, 2
Now the players pick the stones one by one.
Round 1
Player 1 → 15
Player 2 → 10
Player 3 → 8
Since we are Player 2:
Our sum = 10
Round 2
There are still three stones:
7, 4, 2
The players continue in the same order:
Player 1 → 7
Player 2 → 4
Player 3 → 2
Again, Player 2 gets:
4
Therefore:
Answer = 10 + 4 = 14
My Approach
I sorted the effectiveness values and processed them in decreasing order.
I maintained:
count = current player
sum = answer
Then while traversing the sorted stones:
If count == X:
add current stone's effectiveness to sum
Move to the next player
If count reaches Y:
start again from Player 1
For the above example:
Sorted stones:
15 10 8 7 4 2
Player:
1 2 3 1 2 3
↓
Player 2 gets:
10 4
Answer = 10 + 4 = 14
The problem felt easy/medium to me.
There was only one publicly visible testcase, and my solution passed it.
Coding Question 2 — Beautiful Numbers
The second problem was to find the number of Beautiful Numbers between low and high.
The inputs were:
low
high
k
A number was considered beautiful when both of the following conditions were satisfied:
Condition 1
The number of even digits must be equal to the number of odd digits.
Condition 2
The number must be divisible by k.
Example
Suppose:
Number = 1234
Look at each digit:
1 → Odd
2 → Even
3 → Odd
4 → Even
Therefore:
Odd digits = 2
Even digits = 2
So the first condition is satisfied.
Now suppose:
k = 2
Then:
1234 % 2 = 0
So the second condition is also satisfied.
Therefore:
1234 is a Beautiful Number
Complete Example
Suppose:
low = 10
high = 30
k = 2
We check every number from 10 to 30.
10
1 → Odd
0 → Even
Odd = 1
Even = 1
First condition satisfied.
10 % 2 = 0
Second condition satisfied.
Therefore:
10 → Beautiful
11
1 → Odd
1 → Odd
Odd = 2
Even = 0
Not beautiful.
12
1 → Odd
2 → Even
Odd = 1
Even = 1
First condition satisfied.
12 % 2 = 0
So:
12 → Beautiful
... (similar analysis for numbers up to 30) ...
The beautiful numbers are:
10, 12, 14, 16, 18,
20, 24, 26, 28, 30
So the answer is:
10
My Approach
I simply iterated through every number from low to high.
For each number:
1. Extract its digits
2. Count even digits
3. Count odd digits
4. Check even_count == odd_count
5. Check number % k == 0
6. If both are true, increment answer
The basic logic was:
answer = 0
for number from low to high:
even = 0
odd = 0
check every digit of number
if even == odd AND number % k == 0:
answer += 1
print(answer)
This problem also felt easy/medium to me.
The publicly available testcase passed with my solution.
Overall Experience
The OA was quite different from what I initially expected.
The aptitude section had a mixture of quantitative and logical reasoning questions.
The technical section had a noticeable focus on AI/ML, LLMs, Transformers, UML, Software Architecture and Software Engineering concepts, rather than being purely Core CS.
The coding section had two problems and required complete STDIN/STDOUT‑based programs, which was another difference from the usual LeetCode function‑based format.
Personally, I found both coding problems relatively straightforward compared to some of the problems my friends received.
Now waiting for the results.
Sharing this mainly so that anyone who gets a similar Société Générale OA in the future knows what the experience can look like.
Interview Questions (2)
Mystic Stones
Given Y players and you are the X‑th player, each stone has an effectiveness value provided as an unsorted array. In each turn players pick the most effective remaining stone in order from Player 1 to Player Y, repeating until all stones are taken. Compute the sum of effectiveness values of the stones picked by player X.
Input: Y, X, and an array of effectiveness values. Output: Sum of values collected by player X. Example: Y = 3, X = 2, effectiveness = [10, 4, 8, 2, 15, 7] → sorted descending = [15,10,8,7,4,2]. Player 2 gets 10 and 4, sum = 14.
Beautiful Numbers
Count the numbers between low and high (inclusive) that satisfy two conditions:
- The number of even digits equals the number of odd digits.
- The number is divisible by
k.
Input: three integers low, high, k.
Output: The count of "Beautiful Numbers" in the range.
Example: low=10, high=30, k=2 → Beautiful numbers are 10,12,14,16,18,20,24,26,28,30, so the answer is 10.
Preparation Tips
I was not specifically prepared for the aptitude section and relied on tricks I knew; for the coding problems I used Python and implemented straightforward solutions—sorting for the Mystic Stones problem and a brute‑force enumeration for the Beautiful Numbers problem.