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.










share|improve this question







New contributor




BIGJOHN is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.











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

















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.










share|improve this question







New contributor




BIGJOHN is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.











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













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.










share|improve this question







New contributor




BIGJOHN is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.











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






share|improve this question







New contributor




BIGJOHN is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.











share|improve this question







New contributor




BIGJOHN is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.









share|improve this question




share|improve this question






New contributor




BIGJOHN is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.









asked 2 days ago









BIGJOHN

1




1




New contributor




BIGJOHN is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.





New contributor





BIGJOHN is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.






BIGJOHN is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.




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














  • 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










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.






share|improve this answer





















  • Thank you. Is there any online material you would recommend which details OOP through a messaging paradigm?
    – BIGJOHN
    2 days ago


















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.






share|improve this answer





















  • Thank you. Is there any online material you would recommend which details OOP through a messaging paradigm?
    – BIGJOHN
    2 days ago















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.






share|improve this answer





















  • Thank you. Is there any online material you would recommend which details OOP through a messaging paradigm?
    – BIGJOHN
    2 days ago













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.






share|improve this answer












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.







share|improve this answer












share|improve this answer



share|improve this answer










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


















  • 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



Popular posts from this blog

Bundesstraße 106

Verónica Boquete

Ida-Boy-Ed-Garten