i
Bentley
Systems
Work with us
Filter interviews by
Oops concepts are fundamental principles of object-oriented programming.
Encapsulation: bundling data and methods that operate on the data into a single unit (class)
Inheritance: allows a class to inherit properties and behavior from another class
Polymorphism: ability to present the same interface for different data types
Abstraction: hiding the complex implementation details and showing only the necessary features
No, Function Overloading is not the only example of Compile Time Polymorphism.
Function Templates are another example of Compile Time Polymorphism where a single function can operate on different data types.
Operator Overloading is also an example of Compile Time Polymorphism where operators can be overloaded to work with different data types.
Static Polymorphism achieved through method overloading is another example...
Use recursion to reverse the string without using loops or other data structures.
Create a recursive function that takes the string as input.
In the function, check if the string is empty or has only one character, return the string in that case.
Otherwise, call the function recursively with the substring excluding the first character and concatenate the first character at the end.
Creating test cases involves identifying base cases and edge cases to ensure software reliability and correctness.
Identify base cases: Test with standard inputs, e.g., for a function calculating square, test with 2 (expected output: 4).
Consider edge cases: Test with extreme values, e.g., for an array sorting function, test with an empty array (expected output: []).
Include negative cases: Test with invalid inputs, ...
Designing a carrom board game system
Define game rules and mechanics
Create game board and pieces
Implement player turns and scoring system
Include AI for single player mode
Consider multiplayer options and networking
Test and debug thoroughly
Pre/post increment/decrement operators are used to increase/decrease the value of a variable by 1.
Pre-increment operator (++x) increases the value of x by 1 before using it in an expression.
Post-increment operator (x++) increases the value of x by 1 after using it in an expression.
Pre-decrement operator (--x) decreases the value of x by 1 before using it in an expression.
Post-decrement operator (x--) decreases the...
Program to find middle of a linked list
Traverse the linked list using two pointers, one moving twice as fast as the other
When the faster pointer reaches the end, the slower pointer will be at the middle
Handle even and odd length linked lists separately
Function to swap two variables and possible exceptions
Function should take two variables as input
Use a temporary variable to swap the values
Possible exceptions include null pointer exception or out of bounds exception
I would use a binary format like JPEG or PNG to save images.
JPEG and PNG are common binary formats used to save images.
These formats use compression to reduce file size without losing quality.
Other options include BMP, GIF, and TIFF, but they may not be as efficient.
Images can also be saved as arrays of pixels or as vectors, depending on the type of image.
The choice of data structure depends on the specific use ca...
Multi-Threading in Java allows multiple threads to execute concurrently. Generics in Java enable type-safe collections and classes.
Multi-Threading in Java allows for concurrent execution of multiple threads.
Generics in Java enable type-safe collections and classes by allowing the use of parameterized types.
Example of Multi-Threading: creating a new thread using the Thread class and implementing the run() method.
Ex...
A good, basic understanding will suffice.
I applied via Company Website and was interviewed in Feb 2024. There were 4 interview rounds.
First Round was Coding Test On Codility Platform . 3 Questions were Asked On Medium to Hard Level Arrays and Strings Topics.
Creating test cases involves identifying base cases and edge cases to ensure software reliability and correctness.
Identify base cases: Test with standard inputs, e.g., for a function calculating square, test with 2 (expected output: 4).
Consider edge cases: Test with extreme values, e.g., for an array sorting function, test with an empty array (expected output: []).
Include negative cases: Test with invalid inputs, e.g.,...
Pillars of OOP are Inheritance, Encapsulation, Abstraction, and Polymorphism. Real life example: Vehicles.
Inheritance: Car and Bike classes inheriting from Vehicle class.
Encapsulation: Data hiding in a class to protect it from outside interference.
Abstraction: Using a remote control to operate a TV without knowing its internal workings.
Polymorphism: Overloading a method with different parameters in a class.
No, Function Overloading is not the only example of Compile Time Polymorphism.
Function Templates are another example of Compile Time Polymorphism where a single function can operate on different data types.
Operator Overloading is also an example of Compile Time Polymorphism where operators can be overloaded to work with different data types.
Static Polymorphism achieved through method overloading is another example of C...
Arrays store elements in contiguous memory locations, while LinkedLists store elements in nodes with pointers to the next element.
Arrays have constant time access to elements using index, while LinkedLists have O(n) access time as they need to traverse from the beginning.
Arrays have fixed size, while LinkedLists can dynamically grow and shrink in size.
Arrays are better for random access and search operations, while Lin...
Answering questions related to LinkedList operations and Circular LinkedList.
LinkedList Class: Implement a class with nodes containing data and a reference to the next node.
Insertion: Add a new node at the beginning, end, or at a specific position in the LinkedList.
Deletion: Remove a node by updating references to skip over it.
Reversing: Traverse the LinkedList and reverse the links between nodes.
Sorting: Implement a s...
Use recursion to reverse the string without using loops or other data structures.
Create a recursive function that takes the string as input.
In the function, check if the string is empty or has only one character, return the string in that case.
Otherwise, call the function recursively with the substring excluding the first character and concatenate the first character at the end.
Use a hashmap to store frequency of each number in the array for efficient retrieval of maximum occurring number.
Use a hashmap to store the frequency of each number in the array.
Iterate through the array and update the frequency count in the hashmap.
Find the number with the highest frequency in the hashmap to get the maximum occurring number.
Multi-Threading in Java allows multiple threads to execute concurrently. Generics in Java enable type-safe collections and classes.
Multi-Threading in Java allows for concurrent execution of multiple threads.
Generics in Java enable type-safe collections and classes by allowing the use of parameterized types.
Example of Multi-Threading: creating a new thread using the Thread class and implementing the run() method.
Example...
Bentley Systems is a global leader in infrastructure engineering software, providing innovative solutions for sustainable development.
Bentley Systems offers cutting-edge technology and tools for infrastructure engineering projects.
The company has a strong reputation for innovation and sustainability in the industry.
Bentley Systems has a global presence, providing opportunities to work on diverse projects around the wor...
It was a 75 mins coding round with array strings and matrix problem were there
Round 2 was another coding round with graph and arrays questions were there
I am a recent graduate with a degree in Computer Science and a passion for software development.
Recent graduate with a degree in Computer Science
Passionate about software development
Experience with programming languages like Java and Python
Oops concepts are fundamental principles of object-oriented programming.
Encapsulation: bundling data and methods that operate on the data into a single unit (class)
Inheritance: allows a class to inherit properties and behavior from another class
Polymorphism: ability to present the same interface for different data types
Abstraction: hiding the complex implementation details and showing only the necessary features
I applied via Campus Placement and was interviewed before Jan 2024. There were 4 interview rounds.
I received easy to medium LeetCode questions, which focused on basic math and hash maps.
The company is a leading software development firm specializing in creating innovative solutions for various industries.
Specializes in creating innovative software solutions
Works with various industries such as healthcare, finance, and technology
Known for their strong focus on quality and customer satisfaction
I enjoy playing musical instruments, reading books, and hiking in my free time.
Playing musical instruments like guitar and piano
Reading books on various topics such as technology and fiction
Hiking in nature trails and exploring new places
1 hour for 2 coding questions on Codility Platform
I applied via CoCubes and was interviewed before Dec 2021. There were 5 interview rounds.
There were some basic aptitude questions and OOP questions as MCQs. At the end there was a simple conding question.
Pre/post increment/decrement operators are used to increase/decrease the value of a variable by 1.
Pre-increment operator (++x) increases the value of x by 1 before using it in an expression.
Post-increment operator (x++) increases the value of x by 1 after using it in an expression.
Pre-decrement operator (--x) decreases the value of x by 1 before using it in an expression.
Post-decrement operator (x--) decreases the valu...
I have worked on various projects and internships during my time as a software engineer.
Developed a web application for a retail company to manage inventory and sales.
Collaborated with a team to create a mobile app for a healthcare startup to track patient vitals.
Implemented a machine learning algorithm for a research project in the field of natural language processing.
Optimized database queries and improved performanc...
Program to find middle of a linked list
Traverse the linked list using two pointers, one moving twice as fast as the other
When the faster pointer reaches the end, the slower pointer will be at the middle
Handle even and odd length linked lists separately
I would use a binary format like JPEG or PNG to save images.
JPEG and PNG are common binary formats used to save images.
These formats use compression to reduce file size without losing quality.
Other options include BMP, GIF, and TIFF, but they may not be as efficient.
Images can also be saved as arrays of pixels or as vectors, depending on the type of image.
The choice of data structure depends on the specific use case an...
Function to swap two variables and possible exceptions
Function should take two variables as input
Use a temporary variable to swap the values
Possible exceptions include null pointer exception or out of bounds exception
Designing a carrom board game system
Define game rules and mechanics
Create game board and pieces
Implement player turns and scoring system
Include AI for single player mode
Consider multiplayer options and networking
Test and debug thoroughly
Top trending discussions
Reverse a given string using array of characters.
Create an empty array to store the reversed string.
Loop through the original string from end to start.
Push each character into the empty array.
Join the array to form the reversed string.
Copy constructor creates a new object by copying an existing object, while assignment operator assigns the value of an existing object to another object.
Copy constructor is used to initialize a new object with the values of an existing object.
Assignment operator is used to assign the value of an existing object to another object.
Copy constructor is called when a new object is created from an existing object.
Assignment ...
A copy constructor is used to create a new object with the same values as an existing object. We implement our own to ensure proper copying of data members.
A copy constructor is needed when we want to create a new object with the same values as an existing object.
If we don't implement our own copy constructor, the default copy constructor provided by the compiler may not copy data members properly.
We can implement our ...
QT framework is used for developing cross-platform applications with a single codebase.
QT provides a wide range of libraries and tools for developing GUI applications.
QT supports multiple platforms including Windows, Linux, macOS, Android, and iOS.
QT has a large community and extensive documentation.
QT is written in C++ and supports other programming languages like Python and Java.
QT is used by companies like Autodesk,...
RTTI stands for Run-Time Type Identification.
RTTI is a feature in C++ that allows the type of an object to be determined at runtime.
It is used to implement dynamic_cast, typeid, and exception handling.
RTTI can be used to check if an object is of a certain type before casting it.
It can also be used to determine the type of an object in order to perform specific operations on it.
I have used the Singleton and Factory design patterns in my previous projects.
Singleton pattern was used to ensure only one instance of a class is created and provide a global point of access to it.
Factory pattern was used to create objects without exposing the instantiation logic to the client and provide a way to create objects of a family without specifying their concrete classes.
QT supports multiple operating systems and cross-compilation is possible.
QT supports Windows, macOS, Linux, Android, iOS, and many other operating systems.
Cross-compilation is possible, meaning you can compile for different operating systems on a single machine.
QT also supports embedded systems like Raspberry Pi and BeagleBone.
QT provides pre-built binaries for some operating systems, but for others, you may need to co...
QPointer is a deprecated Qt class used for storing and managing pointers.
QPointer is used to avoid dangling pointers in Qt applications.
It is a template class that can be used with any QObject-derived class.
QPointer is now deprecated and replaced by QWeakPointer.
QPointer can be used to check if a QObject is still valid before accessing it.
dpointer is a Qt framework concept used for efficient memory management.
dpointer is a private implementation pointer.
It is used to hide implementation details from the public API.
dpointer allows for copy-on-write semantics.
It reduces memory usage and improves performance.
Example: QString uses dpointer to store its data.
Example: QSharedDataPointer is used to share data between objects.
I have used Qt version 5.12.3 for my previous project.
Qt version 5.12.3 was used in my previous project
I have experience working with Qt 5.15.2 as well
I am familiar with the features and functionalities of Qt 5.12.3
To check if a linked list is circular, use two pointers, one moving at twice the speed of the other. If they meet, the list is circular.
Use two pointers, one moving at twice the speed of the other
If the faster pointer catches up to the slower pointer, the list is circular
If the faster pointer reaches the end of the list, the list is not circular
Find the merge point of 2 linked lists.
Traverse both lists and find their lengths
Move the pointer of the longer list to the same distance as the shorter list
Move both pointers until they meet at the merge point
If there is no merge point, return null
To find a string in a sorted array of strings.
Use binary search algorithm to search for the string in the array.
Compare the search string with the middle element of the array.
If the search string is less than the middle element, search in the left half of the array.
If the search string is greater than the middle element, search in the right half of the array.
Repeat the process until the string is found or the search sp...
Singleton class is a design pattern that restricts the instantiation of a class to one object.
To create a singleton, we need to make the constructor private and provide a static method to get the instance of the class.
To delete the singleton object, we can simply set the instance to null.
Singletons are useful when we need to ensure that only one instance of a class exists throughout the application.
Example: Logger clas...
The code demonstrates pointer behavior and memory allocation in C++, leading to undefined behavior.
Pointers in C++ can point to memory locations, but passing them by value does not affect the original pointer.
In myfunc, 'a' is a local copy of 'p', so changes to 'a' do not reflect in 'p' in main.
Dereferencing 'p' in main leads to undefined behavior since 'p' was never initialized.
The best search method depends on the context, data structure, and requirements of the task at hand.
Binary Search: Efficient for sorted arrays, with O(log n) time complexity. Example: Finding an element in a sorted list.
Linear Search: Simple and works on unsorted data, with O(n) time complexity. Example: Searching for a name in an unsorted list.
Depth-First Search (DFS): Useful for tree/graph traversal. Example: Finding...
Dynamic memory allocation in C/C++ is done using malloc(), calloc(), realloc() functions. C++ also has new and delete operators.
malloc() allocates memory block of specified size
calloc() allocates memory block and initializes it to zero
realloc() changes the size of previously allocated memory block
new operator in C++ allocates memory and calls constructor
delete operator in C++ deallocates memory and calls destructor
posted on 14 May 2017
I appeared for an interview in Oct 2016.
posted on 21 Feb 2022
I applied via Referral and was interviewed before Feb 2021. There were 3 interview rounds.
Group discussion on the given topic
posted on 10 Feb 2025
I appeared for an interview before Feb 2024.
Coding problems, DSA
IQ Testing Problems, English
Some of the top questions asked at the Bentley Systems Associate Software Engineer interview -
based on 8 interview experiences
Difficulty level
Duration
based on 7 reviews
Rating in categories
Software Engineer Level 1
86
salaries
| ₹6.2 L/yr - ₹18.5 L/yr |
Software Engineer
54
salaries
| ₹6 L/yr - ₹16.8 L/yr |
Technical Support Engineer
53
salaries
| ₹9.6 L/yr - ₹15.4 L/yr |
Associate Software Engineer
52
salaries
| ₹6 L/yr - ₹11.5 L/yr |
Software Quality Analyst
48
salaries
| ₹8.1 L/yr - ₹22 L/yr |
Thomson Reuters
Oracle Cerner
Temenos
Amadeus