Preparing for my first software engineer job interview - looking to solidify my OOP principles understanding...
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty{ margin-bottom:0;
}
up vote
-5
down vote
favorite
As the title suggests, I'm preparing for an upcoming software engineer role at graduate level. I just wanted some feedback to my answers I plan to give if asked about the core aspects of object oriented programming.
Abstraction - only showing relevant information and hiding implementation details. Interfaces and abstract classes are an examples of abstraction. Allows a user to use some form of functionality without knowing the inner workings. For example, the HashSet class provides put() and get() methods... As a user I do not need to know how the HashSet class implements these methods, I just need to know the relevant details such as the method names and parameters. Abstraction reduces overall complexity of a software system.
Encapsulation - the process of binding the data and operations performed on that data into a single unit. OOP classes are a good example of this - all the data and methods performed on that data are contained within the class. Furthermore, encapsulation allows us to hide the state of an object by making attributes of an object private and only allowing the object itself to perform actions on the attributes via public methods. Encapsulation helps with both security and modulisation.
Polymorphism - the ability for an entity to take on multiple different forms, based on the context. Examples of polymorphism are runtime and compile time polymorphism. Runtime polymorphism is achieved by method overriding, while compile time polymorphism is achieved by method overloading.
Inheritance - allows for common attributes and functionality to me shared amongst different entities. This supports code reuse and reduces complexity.
Any feedback much appreciated. Also, any help as to what other questions might arise at a graduate level software engineer interview, that would be a great.
interviewing software-industry graduate
New contributor
put on hold as off-topic by Dukeling, gnat, DarkCygnus, Ernest Friedman-Hill, jcmack 2 days ago
- This question does not appear to be about the workplace within the scope defined in the help center.
If this question can be reworded to fit the rules in the help center, please edit the question.
add a comment |
up vote
-5
down vote
favorite
As the title suggests, I'm preparing for an upcoming software engineer role at graduate level. I just wanted some feedback to my answers I plan to give if asked about the core aspects of object oriented programming.
Abstraction - only showing relevant information and hiding implementation details. Interfaces and abstract classes are an examples of abstraction. Allows a user to use some form of functionality without knowing the inner workings. For example, the HashSet class provides put() and get() methods... As a user I do not need to know how the HashSet class implements these methods, I just need to know the relevant details such as the method names and parameters. Abstraction reduces overall complexity of a software system.
Encapsulation - the process of binding the data and operations performed on that data into a single unit. OOP classes are a good example of this - all the data and methods performed on that data are contained within the class. Furthermore, encapsulation allows us to hide the state of an object by making attributes of an object private and only allowing the object itself to perform actions on the attributes via public methods. Encapsulation helps with both security and modulisation.
Polymorphism - the ability for an entity to take on multiple different forms, based on the context. Examples of polymorphism are runtime and compile time polymorphism. Runtime polymorphism is achieved by method overriding, while compile time polymorphism is achieved by method overloading.
Inheritance - allows for common attributes and functionality to me shared amongst different entities. This supports code reuse and reduces complexity.
Any feedback much appreciated. Also, any help as to what other questions might arise at a graduate level software engineer interview, that would be a great.
interviewing software-industry graduate
New contributor
put on hold as off-topic by Dukeling, gnat, DarkCygnus, Ernest Friedman-Hill, jcmack 2 days ago
- This question does not appear to be about the workplace within the scope defined in the help center.
If this question can be reworded to fit the rules in the help center, please edit the question.
6
I'm voting to close this question as off-topic because it's about software engineering definitions as opposed to a general workplace question.
– Dukeling
2 days ago
Apologies, it was actually suggested to me to post it here, as it wasn't specifically a coding query.
– BIGJOHN
2 days ago
I have to admit, this question's striking me the wrong way. Instead of asking, "Hey, here's my understanding of Concept X - how can I improve my understanding of it?", you're asking, "How can I fake a better understanding of Concept X?" Why not, instead of looking for the 'best' way of phrasing "What Abstraction Means", improve your actual use of Abstraction? Post some code samples on Code Review, and mention you're looking for a better understanding on Abstraction. And then when the interview comes, instead of having a textbook recitation, you have a real-world example with knowledge?
– Kevin
5 hours ago
add a comment |
up vote
-5
down vote
favorite
up vote
-5
down vote
favorite
As the title suggests, I'm preparing for an upcoming software engineer role at graduate level. I just wanted some feedback to my answers I plan to give if asked about the core aspects of object oriented programming.
Abstraction - only showing relevant information and hiding implementation details. Interfaces and abstract classes are an examples of abstraction. Allows a user to use some form of functionality without knowing the inner workings. For example, the HashSet class provides put() and get() methods... As a user I do not need to know how the HashSet class implements these methods, I just need to know the relevant details such as the method names and parameters. Abstraction reduces overall complexity of a software system.
Encapsulation - the process of binding the data and operations performed on that data into a single unit. OOP classes are a good example of this - all the data and methods performed on that data are contained within the class. Furthermore, encapsulation allows us to hide the state of an object by making attributes of an object private and only allowing the object itself to perform actions on the attributes via public methods. Encapsulation helps with both security and modulisation.
Polymorphism - the ability for an entity to take on multiple different forms, based on the context. Examples of polymorphism are runtime and compile time polymorphism. Runtime polymorphism is achieved by method overriding, while compile time polymorphism is achieved by method overloading.
Inheritance - allows for common attributes and functionality to me shared amongst different entities. This supports code reuse and reduces complexity.
Any feedback much appreciated. Also, any help as to what other questions might arise at a graduate level software engineer interview, that would be a great.
interviewing software-industry graduate
New contributor
As the title suggests, I'm preparing for an upcoming software engineer role at graduate level. I just wanted some feedback to my answers I plan to give if asked about the core aspects of object oriented programming.
Abstraction - only showing relevant information and hiding implementation details. Interfaces and abstract classes are an examples of abstraction. Allows a user to use some form of functionality without knowing the inner workings. For example, the HashSet class provides put() and get() methods... As a user I do not need to know how the HashSet class implements these methods, I just need to know the relevant details such as the method names and parameters. Abstraction reduces overall complexity of a software system.
Encapsulation - the process of binding the data and operations performed on that data into a single unit. OOP classes are a good example of this - all the data and methods performed on that data are contained within the class. Furthermore, encapsulation allows us to hide the state of an object by making attributes of an object private and only allowing the object itself to perform actions on the attributes via public methods. Encapsulation helps with both security and modulisation.
Polymorphism - the ability for an entity to take on multiple different forms, based on the context. Examples of polymorphism are runtime and compile time polymorphism. Runtime polymorphism is achieved by method overriding, while compile time polymorphism is achieved by method overloading.
Inheritance - allows for common attributes and functionality to me shared amongst different entities. This supports code reuse and reduces complexity.
Any feedback much appreciated. Also, any help as to what other questions might arise at a graduate level software engineer interview, that would be a great.
interviewing software-industry graduate
interviewing software-industry graduate
New contributor
New contributor
New contributor
asked 2 days ago
BIGJOHN
1
1
New contributor
New contributor
put on hold as off-topic by Dukeling, gnat, DarkCygnus, Ernest Friedman-Hill, jcmack 2 days ago
- This question does not appear to be about the workplace within the scope defined in the help center.
If this question can be reworded to fit the rules in the help center, please edit the question.
put on hold as off-topic by Dukeling, gnat, DarkCygnus, Ernest Friedman-Hill, jcmack 2 days ago
- This question does not appear to be about the workplace within the scope defined in the help center.
If this question can be reworded to fit the rules in the help center, please edit the question.
6
I'm voting to close this question as off-topic because it's about software engineering definitions as opposed to a general workplace question.
– Dukeling
2 days ago
Apologies, it was actually suggested to me to post it here, as it wasn't specifically a coding query.
– BIGJOHN
2 days ago
I have to admit, this question's striking me the wrong way. Instead of asking, "Hey, here's my understanding of Concept X - how can I improve my understanding of it?", you're asking, "How can I fake a better understanding of Concept X?" Why not, instead of looking for the 'best' way of phrasing "What Abstraction Means", improve your actual use of Abstraction? Post some code samples on Code Review, and mention you're looking for a better understanding on Abstraction. And then when the interview comes, instead of having a textbook recitation, you have a real-world example with knowledge?
– Kevin
5 hours ago
add a comment |
6
I'm voting to close this question as off-topic because it's about software engineering definitions as opposed to a general workplace question.
– Dukeling
2 days ago
Apologies, it was actually suggested to me to post it here, as it wasn't specifically a coding query.
– BIGJOHN
2 days ago
I have to admit, this question's striking me the wrong way. Instead of asking, "Hey, here's my understanding of Concept X - how can I improve my understanding of it?", you're asking, "How can I fake a better understanding of Concept X?" Why not, instead of looking for the 'best' way of phrasing "What Abstraction Means", improve your actual use of Abstraction? Post some code samples on Code Review, and mention you're looking for a better understanding on Abstraction. And then when the interview comes, instead of having a textbook recitation, you have a real-world example with knowledge?
– Kevin
5 hours ago
6
6
I'm voting to close this question as off-topic because it's about software engineering definitions as opposed to a general workplace question.
– Dukeling
2 days ago
I'm voting to close this question as off-topic because it's about software engineering definitions as opposed to a general workplace question.
– Dukeling
2 days ago
Apologies, it was actually suggested to me to post it here, as it wasn't specifically a coding query.
– BIGJOHN
2 days ago
Apologies, it was actually suggested to me to post it here, as it wasn't specifically a coding query.
– BIGJOHN
2 days ago
I have to admit, this question's striking me the wrong way. Instead of asking, "Hey, here's my understanding of Concept X - how can I improve my understanding of it?", you're asking, "How can I fake a better understanding of Concept X?" Why not, instead of looking for the 'best' way of phrasing "What Abstraction Means", improve your actual use of Abstraction? Post some code samples on Code Review, and mention you're looking for a better understanding on Abstraction. And then when the interview comes, instead of having a textbook recitation, you have a real-world example with knowledge?
– Kevin
5 hours ago
I have to admit, this question's striking me the wrong way. Instead of asking, "Hey, here's my understanding of Concept X - how can I improve my understanding of it?", you're asking, "How can I fake a better understanding of Concept X?" Why not, instead of looking for the 'best' way of phrasing "What Abstraction Means", improve your actual use of Abstraction? Post some code samples on Code Review, and mention you're looking for a better understanding on Abstraction. And then when the interview comes, instead of having a textbook recitation, you have a real-world example with knowledge?
– Kevin
5 hours ago
add a comment |
1 Answer
1
active
oldest
votes
up vote
0
down vote
What you wrote sounds very theoretical.
A warning bell goes off in my head when I read a blanket statement like "inheritance... reduces complexity". It shows you haven't dealt with the increased complexity inheritance brings (think about it, inheritance couples classes together, but de-coupling is what we want, right?). This is why composition is sometimes preferred over inheritance.
I'd suggest looking at a book like "Clean Code" to get an idea on how a practitioner would think of OOP. They will probably ask you to design something in an OOP manner. The stuff you said above isn't going to help much if you don't know how to use it.
A lot of OOP (and maybe all) can be understood through a messaging paradigm. I'd chew on that a bit before going into your interview.
Thank you. Is there any online material you would recommend which details OOP through a messaging paradigm?
– BIGJOHN
2 days ago
add a comment |
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
0
down vote
What you wrote sounds very theoretical.
A warning bell goes off in my head when I read a blanket statement like "inheritance... reduces complexity". It shows you haven't dealt with the increased complexity inheritance brings (think about it, inheritance couples classes together, but de-coupling is what we want, right?). This is why composition is sometimes preferred over inheritance.
I'd suggest looking at a book like "Clean Code" to get an idea on how a practitioner would think of OOP. They will probably ask you to design something in an OOP manner. The stuff you said above isn't going to help much if you don't know how to use it.
A lot of OOP (and maybe all) can be understood through a messaging paradigm. I'd chew on that a bit before going into your interview.
Thank you. Is there any online material you would recommend which details OOP through a messaging paradigm?
– BIGJOHN
2 days ago
add a comment |
up vote
0
down vote
What you wrote sounds very theoretical.
A warning bell goes off in my head when I read a blanket statement like "inheritance... reduces complexity". It shows you haven't dealt with the increased complexity inheritance brings (think about it, inheritance couples classes together, but de-coupling is what we want, right?). This is why composition is sometimes preferred over inheritance.
I'd suggest looking at a book like "Clean Code" to get an idea on how a practitioner would think of OOP. They will probably ask you to design something in an OOP manner. The stuff you said above isn't going to help much if you don't know how to use it.
A lot of OOP (and maybe all) can be understood through a messaging paradigm. I'd chew on that a bit before going into your interview.
Thank you. Is there any online material you would recommend which details OOP through a messaging paradigm?
– BIGJOHN
2 days ago
add a comment |
up vote
0
down vote
up vote
0
down vote
What you wrote sounds very theoretical.
A warning bell goes off in my head when I read a blanket statement like "inheritance... reduces complexity". It shows you haven't dealt with the increased complexity inheritance brings (think about it, inheritance couples classes together, but de-coupling is what we want, right?). This is why composition is sometimes preferred over inheritance.
I'd suggest looking at a book like "Clean Code" to get an idea on how a practitioner would think of OOP. They will probably ask you to design something in an OOP manner. The stuff you said above isn't going to help much if you don't know how to use it.
A lot of OOP (and maybe all) can be understood through a messaging paradigm. I'd chew on that a bit before going into your interview.
What you wrote sounds very theoretical.
A warning bell goes off in my head when I read a blanket statement like "inheritance... reduces complexity". It shows you haven't dealt with the increased complexity inheritance brings (think about it, inheritance couples classes together, but de-coupling is what we want, right?). This is why composition is sometimes preferred over inheritance.
I'd suggest looking at a book like "Clean Code" to get an idea on how a practitioner would think of OOP. They will probably ask you to design something in an OOP manner. The stuff you said above isn't going to help much if you don't know how to use it.
A lot of OOP (and maybe all) can be understood through a messaging paradigm. I'd chew on that a bit before going into your interview.
answered 2 days ago
Chan-Ho Suh
2,05411011
2,05411011
Thank you. Is there any online material you would recommend which details OOP through a messaging paradigm?
– BIGJOHN
2 days ago
add a comment |
Thank you. Is there any online material you would recommend which details OOP through a messaging paradigm?
– BIGJOHN
2 days ago
Thank you. Is there any online material you would recommend which details OOP through a messaging paradigm?
– BIGJOHN
2 days ago
Thank you. Is there any online material you would recommend which details OOP through a messaging paradigm?
– BIGJOHN
2 days ago
add a comment |
6
I'm voting to close this question as off-topic because it's about software engineering definitions as opposed to a general workplace question.
– Dukeling
2 days ago
Apologies, it was actually suggested to me to post it here, as it wasn't specifically a coding query.
– BIGJOHN
2 days ago
I have to admit, this question's striking me the wrong way. Instead of asking, "Hey, here's my understanding of Concept X - how can I improve my understanding of it?", you're asking, "How can I fake a better understanding of Concept X?" Why not, instead of looking for the 'best' way of phrasing "What Abstraction Means", improve your actual use of Abstraction? Post some code samples on Code Review, and mention you're looking for a better understanding on Abstraction. And then when the interview comes, instead of having a textbook recitation, you have a real-world example with knowledge?
– Kevin
5 hours ago