Most sensible 60+ OOPs Interview Questions in 2023

An object-oriented programming machine, or OOPs is a pc programming style that designs or arranges tool for information, or gadgets, fairly than purposes and common sense. Oops, had been a very powerful idea within the realm of programming. You probably have an interview covered up that calls for core wisdom of OOPs, then you’re on the proper position. This OOPs interview questions article will mean you can know the other questions it’s possible you’ll face in an interview. It’ll additionally mean you can land a task in one of the most following process roles: C++ Developer, Fundamental Tool Developer, Python Developer, Golang Engineer, and extra. So, brace your self with an abundance of information coming your method, and you should definitely put it to use to create a company snatch on OOPs basics.

Most sensible 10 OOPs Interview Questions in 2023

Nice Finding out has ready a listing of the highest 10 OOPs interview questions which can be continuously requested within the interview:

This weblog is additional divided into 3 other sections, they’re :

Fundamental OOPs Interview Questions

1. What’s OOPs?

Programmers can use gadgets to constitute real-world cases because of object-oriented programming. Any entity with states and behaviors is an object. Whilst strategies outline an merchandise’s behaviors, states replicate the traits or information of an entity. Gadgets come with scholars, employees, books, and so on. By way of exchanging messages, these items keep up a correspondence with one any other. A category could also be a template for construction an object. A category is needed to be able to generate gadgets. As an example, there must be an Worker category to be able to generate an Worker object.

2. Distinction between Procedural programming and OOPs?

Procedural Programming Oops
Procedural Programming is according to purposes. Object-oriented programming is according to real-world gadgets.
It displays the knowledge to all of the program. It encapsulates the knowledge.
It does now not have a scope for code reuse. It supplies extra scope for code reuse.
It follows the concept that of top-down programming. It follows a bottom-up programming paradigm.
The character of the language is difficult. It’s easier in nature, so it’s more uncomplicated to change, lengthen and take care of.
It’s onerous to change, lengthen and take care of the code.

3. Why use OOPs?

Programming with OOP permits you to bundle in combination information states and capability to switch the ones information states whilst maintaining the specifics secret (Believe the analogy of a automotive, you’ll handiest see the guidance of the auto whilst riding, the circuitry in the back of it’s hidden from you). Because of this, OOP design produces versatile, modular, and summary code. On account of this, it is rather useful for creating greater methods. The usage of lessons and gadgets, it’s possible you’ll come with OOP into your code. The gadgets you assemble can have the states and functions of the category to which they belong.

4. What are the fundamental ideas of OOPs?

The fundamental ideas of OOPs are:

  • Inheritance
  • Encapsulation
  • Polymorphism
  • Abstraction

5. What’s Encapsulation?

Encapsulation could also be part of the OOPs idea. It refers back to the bundling of information with the strategies that function on that information. It additionally is helping to limit any direct get admission to to a few of an object’s parts.

6. What’s Abstraction?

Abstraction is an OOPs idea to construct the construction of real-world gadgets. It “displays” handiest crucial attributes and “hides” pointless data from the out of doors. The principle focal point of abstraction is to cover pointless main points from the customers. It is without doubt one of the maximum essential ideas of OOPs.

7. What’s approach overloading?

There’s a idea the place two or extra strategies could have the similar title. However they will have to have other parameters, other numbers of parameters, differing types, or each. Those strategies are referred to as overloaded strategies and this option is known as approach overloading. 

8. What’s approach overriding?

Way overriding is an idea of object-oriented programming.

This can be a language function that permits a subclass or kid category to offer a selected implementation of a approach which is already supplied through one in all its superclasses or guardian lessons.

9. Sorts of Inheritance in OOPS

Several types of inheritances in OOps are as follows:

  • Unmarried Inheritance
  • More than one Inheritance
  • Multi-level Inheritance
  • Multi-path Inheritance
  • Hierarchical Inheritance
  • Hybrid Inheritance
types of inheritance

10. What are the principle options of OOPs?

The principle options of OOPs are given as follows:

  • In OOP, you mix the code into one unit so you’ll specify the parameters of each and every piece of information. This strategy of wrapping up information right into a unmarried unit is known as encapsulation. 
  • By way of the use of lessons, you’ll generalise your object sorts and make your software more uncomplicated to make use of. That is termed as an abstraction.
  • The power for a category to inherit traits and behaviours from any other category lets in for extra code reuse.
  • Polymorphism lets in for the introduction of a number of gadgets from a unmarried, adaptable category of code.

11. Is it conceivable to name the bottom category approach with out growing an example?

Sure, we will most likely name the bottom category approach with out growing an example within the following 3 circumstances:

  1. If the process is static
  2. Calling the inherited approach within a derived category
  3. Calling the process the use of the bottom key phrase from the sub-classes

The most well liked case is that of the static strategies.

12. What are the constraints of OOPs?

Following are one of the commonplace obstacles of OOPs:

  • Dimension exceeds that of different methods.
  • It took numerous paintings to make, and it runs extra slowly than different methods.
  • It’s irrelevant for positive varieties of problems.
  • It takes some being used to.

13. What are constructors?

The constructor has the similar title as the category.
A constructor could also be a different roughly approach. It’s used to initialize gadgets of the category.

14. Sorts of constructor

Sorts of constructors rely on languages

  • Non-public Constructor
  • Default Constructor
  • Reproduction Constructor
  • Static Constructor
  • Parameterized Constructor
Types of constructor

15. What’s the distinction between a category and a construction?

Magnificence: Magnificence is principally a Person-defined blueprint from which gadgets are created. It is composed of strategies ( set of directions) which can be carried out at the gadgets.

Construction: A construction could also be a user-defined choice of variables. Buildings also are other information sorts.

A user-defined category serves format or blueprint from which gadgets will also be constructed. In essence, a category is made up of fields referred to as attributes and strategies referred to as member purposes that outline movements. A construction is a grouping of variables of more than a few information types below one heading.

16. What are the get admission to modifiers?

Get entry to modifiers or get admission to specifiers are the key phrases in object-oriented languages.  It is helping to set the accessibility of lessons, strategies, and different contributors.

17. What languages come below the oops idea?

Simula is referred to as the primary object-oriented
programming language, the preferred OOP languages are:

  • Java
  • JavaScript
  • Python
  • C++
  • Visible Fundamental
  • .NET
  • Ruby
  • Scala
  • PHP

Take a look at the OOPs idea in Python Video.

18. What’s inheritance?

On every occasion one category is derived from any other, it’s known as inheritance. The kid category will inherit all the guardian category’s public and secure houses and strategies. Except the attributes and strategies inherited from the guardian category, it will probably even have its personal further set of options. The’ extends’ key phrase is used to specify an inherited category.

When you derive a  category from any other category this is referred to as inheritance. The kid category will inherit all of the public and secure houses and strategies from the guardian category. The kid category too can have its personal houses and strategies. An inherited category is explained through the use of the extends key phrase.

What is inheritance

19. What’s hybrid inheritance?

The kind of inheritance shaped through the combo of several types of inheritances like unmarried, a couple of inheritances, and so on. is assessed as hybrid inheritance.

20. What’s hierarchical inheritance?

Relating to a hierarchical inheritance, a couple of subclasses inherit from a guardian category. Hierarchical inheritance is a kind of inheritance by which a couple of lessons are descended from a unmarried guardian or base category. For instance, the fruit category could have ‘apple’, ’mango’, ’banana’, ‘cherry’ and so on. as its subclasses.

21. What are the constraints of inheritance?

It Will increase the execution effort and time. It additionally calls for leaping backward and forward between other lessons. The guardian category and the kid category are at all times tightly coupled. Have enough money adjustments in this system will require adjustments for the guardian and the kid’s category. Inheritance calls for cautious implementation in a different way it could result in fallacious effects.

22. What’s a superclass?

A superclass is a category from which a subclass or kid category is derived. Base category and guardian category are different names for a superclass. For instance, if Scholar is a category derived from the Particular person category, then the Particular person category will probably be known as the superclass.

A superclass or base category could also be a category that works as a guardian to a few different category/ lessons.

For instance, the Automobile category is a superclass of sophistication Motorcycle.

23. What’s a subclass?

A category that derives from any other category is known as a subclass. A subclass inherits the houses of its ancestors or guardian lessons. For instance, the category Motorcycle is a subclass or a by-product of the Automobile category.

24. What’s Polymorphism?

Polymorphism is without doubt one of the maximum used and core ideas in OOP languages. It explains the concept that of various lessons can be utilized with the similar interface. Every of those lessons could have its personal implementation of the interface. 

25. What’s static polymorphism?

In OOP, static polymorphism determines which technique to name at assemble time. For a similar cause with static polymorphism, the article may reply otherwise. Serve as, constructor and operator overloading are examples of static polymorphism.

26. What’s dynamic polymorphism?

Dynamic polymorphism is a technique or procedure that handles a decision to an overridden approach all over runtime fairly than at assemble time. Additionally it is known as dynamic approach dispatch or runtime polymorphism. The usage of approach overriding, we will create dynamic polymorphism. An instance of runtime polymorphism: is approach overriding.

27. What’s operator overloading?

The user-defined information kind is given a different which means through the operator the use of operator overloading. This can be a compile-time polymorphism.

28. Differentiate between overloading and overriding.

When two or extra strategies in the similar category have the similar title however other parameters, that is known as overloading. The methodology of the use of the similar approach signature, i.e., title and parameters, in each the superclass and the kid category is referred to as overriding.

Differentiate between overloading and overriding

29. What’s encapsulation?

Encapsulation is used to wrap the knowledge and the code which matches in one unit in combination. Instance: Encapsulation lets in data-hiding as the knowledge laid out in one category is hidden from different lessons.

30. What’s the distinction between public, personal and secure get admission to modifiers?

what is the difference between public, private and protected access modifiers

31. What’s information abstraction?

Knowledge abstraction is without doubt one of the maximum essential options of OOPs. It handiest lets in essential data to be displayed. It is helping to cover the implementation main points.

For instance, whilst the use of a cellular, you already know, how are you able to message or name anyone however you don’t know the way it in fact occurs.

That is information abstraction because the implementation main points are hidden from the consumer.

32. How to succeed in information abstraction?

Knowledge abstraction will also be completed the use of two techniques:

  • Summary category
  • Summary approach

33. What’s an summary category?

An summary category could also be a category which is is composed of summary strategies.

So what’s an summary approach?

Those strategies are principally declared however now not explained and If those strategies wish to be used later in some subclass that point the ones strategies should be completely explained within the subclass.

34. Differentiate between information abstraction and encapsulation.

Differentiate between data abstraction and encapsulation

35. What are digital purposes?

Digital purposes also are a part of the purposes which might be provide within the guardian category and they’re overridden through the subclass. Those purposes lend a hand to succeed in runtime polymorphism.

36. What’s a destructor?

A destructor is a technique that is known as robotically when an object is destroyed.

The destructor additionally recovers the heap area which used to be allotted to the destroyed object. It additionally get started remaining the recordsdata and database connections of the article, and so on.

37. What’s a duplicate constructor?

By way of copying the contributors of an current object, the replica constructor initialises the contributors of a newly shaped object. The argument for the replica constructor is a connection with an object of the similar category. Programmers have the ability of immediately defining the replica constructor. The compiler defines the replica constructor if the programmer doesn’t.

38. What’s the usage of ‘finalize’?

Finalize is used to unfastened the unmanaged sources and likewise lend a hand to wash earlier than Rubbish Assortment(GC). It plays reminiscence control duties.

39. What’s Rubbish Assortment(GC)?

Programming languages like C# and Java come with rubbish assortment (GC) as a reminiscence restoration mechanism. A programming language that helps rubbish assortment (GC) incorporates a number of GC engines that robotically free up reminiscence area that has been reserved for issues the appliance is not the use of.

40. What’s a last variable?

A last variable can handiest obtain one specific initialization. A reference variable that has been marked as ultimate is unchangeable in its object reference. The knowledge incorporated within the object, alternatively, will also be changed. Because of this, whilst the article’s state will also be altered, its reference can not.

41. What’s an exception?

An exception is a type of message that interrupts and is derived up when there is a matter with the traditional execution of a program. Exceptions supply an error and switch it to the exception handler to unravel it. The state of this system is stored once an exception is raised.

42. What’s exception dealing with?

Exception dealing with in Object-Orientated Programming is a very powerful idea. It’s used to regulate mistakes. An exception handler lend a hand to throw mistakes after which catch the mistake to be able to resolve them.

43. What’s the distinction between an error and an exception?

What is the difference between an error and an exception

44. What’s a check out/ catch block?

The phrases “check out” and “catch” describe the best way to take care of exceptions caused by coding or information errors whilst a program is operating. The phase of code the place exceptions happen is known as a check out block. Exceptions from check out blocks are stuck and treated in a catch block.

45. What’s a after all block?

After all designates the phase of code that works with the check out key phrase. It specifies code this is at all times completed earlier than the process is completed, right away in the back of the try to any catch blocks. Irrespective of whether or not an exception is thrown or stuck, the after all block is at all times completed.

46. Are you able to name the bottom category approach with out growing an example?

Sure, you’re allowed to name the bottom category with out instantiating it however there are some prerequisites which can be acceptable:

  • If this is a static approach
  • The bottom category is inherited through every other subclass

47. What’s the distinction between OOP and SOP?

The important thing difference between structured and object-oriented programming is that the previous lets in for the introduction of methods the use of a choice of modules or purposes, while the latter lets in for the development of methods the use of a choice of gadgets and their interactions.

Object-oriented programming comes to ideas of gadgets and lessons. The entirety is thought of as as an object which has explicit houses and behaviours which might be represented in a category. Object-oriented programming supplies encapsulation and abstraction within the code. Ex: – Java Programming language.

Construction-oriented programming comes to the ideas of purposes and buildings. The entirety is thought of as capability and buildings, represented the use of purposes—Ex: – C Programming language.

48. What’s the distinction between a category and an object?

Any real-world entity is known as an object. The article has explicit houses and behaviours, and the identical form of gadgets having identical options and behaviours are grouped as a category. Therefore, Magnificence is a blueprint of gadgets, and an object is an example of a category.

Ex: -   
1. An Animal is a category, and cat, canine, and so on., are gadgets with commonplace houses like title, kind, and commonplace behaviors like talking, strolling, operating, and so on. 

2. Cell is a category, and Nokia, moto, iPhone, and so on., are gadgets with commonplace houses like modal_no, colour, and so on., and commonplace behaviors like audio_calling, video_calling, tune, and so on.

49. What are ‘get admission to specifiers’?

Get entry to specifiers are the key phrases in any programming language used to specify the Magnificence’s, approach’s, interface’s and variable’s behaviour regarding its accessibility. The get admission to specifiers in C++ Programming are public, personal, and secure.

50. Are you able to create an example of an summary category?

No, an example of the Summary category can’t be created. To put in force the summary Magnificence, summary strategies, the Summary Magnificence will have to be prolonged through any other category, and the article of the implementation category will also be created.

OOPs Interview Questions for Skilled

51. What’s an interface?

An interface is a user-defined information kind and is a choice of summary strategies. A category implements an interface, thereby inheriting the summary strategies of the interface. A category describes an object’s attributes and behaviours, and an interface incorporates behaviours {that a} category implements. The Magnificence represents “how,” and the interface represents “what’.

52. What are natural digital purposes?

A natural digital serve as/approach is a serve as whose implementations don’t seem to be supplied within the base category, and just a declaration is supplied. The natural digital serve as could have its implementation code within the derived category; in a different way, the derived category can also be regarded as an summary Magnificence. The Magnificence containing natural digital purposes is summary.

53. Differentiate between a category and one way.

A category is a blueprint of gadgets, and it is composed of the houses and behavior of the gadgets.

Strategies are programming constructs that carry out explicit duties/behaviour.

54.  Differentiate between an summary category and an interface?

An interface could have handiest summary strategies, however an Summary category could have summary and non-abstract strategies.

The interface will have to be used if simply the requirement specification is understood and not anything about implementation. If the implementation is understood, however partly, then an summary category will have to be used. If the implementation is understood utterly, then a concrete Magnificence will have to be used.

55. What are the constraints of OOPs?

  1. Greater Program measurement – Systems can change into long if written the use of OOps ideas in comparison to procedure-oriented programming.
  2. Slower execution – Because the selection of strains of code to be completed is extra relatively, the execution time could also be extra.
  3. No longer appropriate for all sorts of Issues.
  4. Trying out time could also be upper for OOP Answers.

56. What are the traits of an summary category?

  1. A category having a minimum of one natural digital serve as is known as an Summary category.
  2. An Summary category can not have gadgets created, i.e., an summary category can’t be instantiated, however Object references will also be created.
  3. An Summary category could have non-abstract purposes and natural digital purposes additionally.
  4. The natural digital serve as could have its implementation code within the derived category; in a different way, the derived category can also be regarded as an summary Magnificence

57. What’s constructor chaining?

Constructor chaining is a technique to name one constructor from any other regarding a present object reference. It may be executed in two techniques: –

  1. The usage of the “this” key phrase, the reference will also be made to the constructor within the present category.
  2. To name the constructor from the bottom category “tremendous” key phrase will probably be used.

58. What’s Coupling in OOP, and why is it useful?

The level of dependency between the parts is known as coupling.

Sorts of Coupling

A. Tight Coupling – If the dependency between parts is top, those parts are known as tightly coupled.

Ex: –

Under 3 Categories are extremely depending on each and every different therefore they’re tightly coupled.

category P
static int a = Q.j;
category Q
static int j = R.approach();
category R
public static int approach(){
go back 3;

B.  Unfastened Coupling – If the dependency between parts is low, it is known as free coupling. Unfastened coupling is most well-liked as a result of the next causes:-

  1. It will increase the maintainability of code
  2. It supplies reusability of code

59. Identify the operators that can’t be overloaded

All of the operators aside from the + operator can’t be overloaded.

60. What’s Concord in OOP?

The modules having well-defined and explicit capability are known as concord.


It improves the maintainability and reusability of code.

 61. What are the degrees of information abstraction?

Highlighting the set of products and services through hiding interior implementation main points is known as abstraction.

By way of the use of summary Magnificence and interface, we will put in force abstraction

62. What are the varieties of variables in OOP?

Variables are fundamental devices to retailer information in RAM for Java methods.

Variables will have to be declared earlier than the use of them in Java programming. Variable initialization will also be static or dynamic. The syntax for variable declaration and static initialization is: –

Sorts of variables

  • Primitive Variables: It’s used to constitute primitive values like int, drift, and so on.
  • Reference Variables: It’s used to refer to things in Java.
  • Example Variables: Variables whose worth numerous from object to object are example variables. For each object, a separate replica of the example variable is created. Example variables are declared throughout the Magnificence and out of doors any approach/block/constructor
  • Static variables: For static Variables, a unmarried replica of the variable is created, and that replicate is shared between each Magnificence object. The static variable is created all over category loading and destroyed at category unloading.
  • Static variables will also be accessed immediately from the static and example house. We don’t seem to be required to accomplish initialization explicitly for static variables, and JVM will supply default values.
  • Native Variables: Variables declared within one way or block or constructor are native variables. Therefore the scope of native variables is equal to the block’s scope by which we declared that variable.

JVM doesn’t supply default values, and earlier than the use of that variable, the initialization will have to be carried out explicitly.

63. What do you recognize through Rubbish Assortment within the OOPs global?

Rubbish assortment is a reminiscence restoration methodology incorporated in programming languages like C# and Java. A GC-enabled programming language incorporates a number of rubbish creditors that robotically liberate reminiscence area allotted to things which can be not wanted through this system.

64. Is it conceivable to run a Java software with out enforcing the OOPs idea?

No, since Java programmes are based on the concept that of object-oriented programming fashions, or OOPs, a Java software can’t be carried out with out it.

65. What’s the output of the underneath code?

category Particular person
personal String display()
go back “This can be a individual”;    
category Trainer extends Particular person
secure String display()
go back “This can be a instructor”;    
public category MathsTeacher extends Particular person
    @Override    public ultimate String display()
go back “This can be a Maths instructor”;    
public static void major(String[] title)
ultimate Particular person mt = new MathsTeacher();        
The output will probably be: This can be a Maths instructor

66. To find the output of the underneath code.

category Mathematics
public ultimate double var = 5;
category DeepArith extends Mathematics
public ultimate double var = 10;
public category AdvancedArith extends DeepArith
public ultimate double secret = 20;
public static void major(String[] num)
Mathematics arith = new AdvancedArith();        
The proper output for this code is 5.

67. Are expecting the output of the next.

category Dad or mum
public void show()
Gadget.out.println(“Dad or mum”);
category Kid extends Dad or mum
{ personal void show()
{ Gadget.out.println(“Kid”);
public category major
public static void major(String args[])
Dad or mum node = new Kid(); node.display();
Operating this code will generate a assemble error as a sub-class serve as overriding an ideal category serve as can't be given extra restrictive get admission to.

68. Put into effect a Singleton category in Java.

public category Singleton {
    personal static Singleton example;

    personal Singleton() {
        // Non-public constructor to forestall instantiation.

    public static Singleton getInstance() {
        if (example == null) {
            synchronized (Singleton.category) {
                if (example == null) {
                    example = new Singleton();
        go back example;

69. Put into effect a Stack information construction the use of a LinkedList in Python.

category Node:
    def __init__(self, information=None):
        self.information = information
        self.subsequent = None

category Stack:
    def __init__(self):
        self.head = None

    def is_empty(self):
        go back self.head is None

    def push(self, information):
        new_node = Node(information)
        new_node.subsequent = self.head
        self.head = new_node

    def pop(self):
        if self.is_empty():
            elevate Exception("Stack is empty")
        popped_value = self.head.information
        self.head = self.head.subsequent
        go back popped_value

70. Put into effect an summary category in C# with an summary approach.

summary category Form
    public summary double CalculateArea();

category Circle : Form
    personal double radius;

    public Circle(double radius)
        this.radius = radius;

    public override double CalculateArea()
        go back Math.PI * radius * radius;

Take a look at OOPs in Java Video

Ceaselessly Requested OOPs Interview Questions

Q: What are the 4 fundamentals of OOP? 

A: OOP stands for Object-Orientated Programming, and its 4 fundamental ideas are Encapsulation, Abstraction, Polymorphism, and Inheritance. OOP allows programmers to believe tool building as though they’re operating with precise entities. In OOP, some gadgets have a box the place information/wisdom will also be saved and will do a number of strategies.

Q: What’s the object-oriented programming interview? 

A: Object-Orientated Programming, additionally typically known as OOPS, is a type of programming this is extra object-based and now not simply according to purposes or procedures. Person gadgets are accumulated into a number of lessons. Actual-world entities reminiscent of inheritance, polymorphism, and hiding are carried out through OOPS into programming. It additionally allows binding information in addition to code in combination.

Q: What are the three ideas of OOP? 

A: The 3 major ideas of Object-Orientated Programming are Encapsulation, inheritance, and polymorphism.

Q: What’s the idea of OOPS?

A: OOPS or Object-Orientated Programming Gadget is a programming idea that principally works according to Encapsulation, Abstraction, Polymorphism, and Inheritance. The standard idea of OOPs is to create gadgets, use them once more all over this system, and after all manipulate those gadgets to fetch our effects.

Q: Why is OOPS used? 

A: The principle goal of an Object-Orientated Programming Gadget is to put in force real-world entities reminiscent of polymorphism, inheritance, hiding, and plenty of extra in programming. The purpose lies in binding in combination the knowledge in addition to purposes that paintings on them in order that different portions of the code can not get admission to the knowledge rather then that serve as.

Q: What’s polymorphism in OOPS? 

A: Polymorphism in an Object-Orientated Programming Gadget is a function of object-based programming languages that permit a selected regimen to make use of variables of a number of sorts at other instances. It will also be known as the power of a programming language to give the similar interface for various number one information sorts.

Q: Who’s the daddy of OOPS? 

A: The daddy of the Object-Orientated Programming Gadget is thought of as to be Alan Kay through some folks. He recognized some traits as fundamentals to OOP Kay 1993:1. He coined OOPs round 1966 or 1967 when he used to be at grad college.

Q: What are the principle options of OOPS? 

A: Probably the most major options in OOPS come with Categories, Gadgets, Knowledge Abstraction, Encapsulation, Inheritance, and Polymorphism. OOP is a programming paradigm this is according to the theory of gadgets.

Q: What are the benefits of OOPS?

A: Since OOP is without doubt one of the major building approaches which is definitely permitted, the benefits are many. Probably the most benefits of OOPS come with Reusability, Knowledge Redundancy, Code Repairs, Safety, Design Advantages, Simple Troubleshooting, Higher Productiveness, Polymorphism Flexibility, and Drawback-solving.

If you want to be told extra about such ideas, you’ll sign up for a Tool Engineering lessons that can assist you upskill.

Like this post? Please share to your friends:
Leave a Reply

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: