
Don't forget the aggregation - for the connection person-firm it should be, for person-grade it can be.
Don't forget the multiplicity - A person can have job or not.
A person always has some best grade he/she reached.
For any grade there are at least one person.
A company can have any number of employees, including 0.
In the real life I name connections ends only when their names are different form the classes they point to. But for study it is better to use end names always - for better understanding.
And the main thing - arrows. A person has references to a company, but not vice versa.
And the same with the grade.
Notice for the future - by setting arrows/crosses, multiplicities and aggregations/compositions (if there are some), you can check the correctness of the diagram. If you tried to finish your diagrams, you would notice, that you CANNOT do it for diagrams #1 and #3. So, they are bad.
Of course, you cannot check this way the connection between your model and real life, only the inner logic of the model. But it is a good and very useful check. Don't neglect it.
As for the third diag, it seems, you are mixing terms "grade" and "specialization". If you need to take into account both of them, you need the following diag:

The "is next greater than" connection sets the staircase of grades.
If you need only specializations and no grades, simplify the diagram - put out all connections to "grade" and its class. Notice, you'll get a diag you haven't mentioned at all.