Attached are two useful technical prep documents. Work through these and go back through the Comp Sci/OO fundamentals. Also start to work through the following:
-
Understanding of your core languages/technologies – (you need to know all the tech listed on your CV inside out – if you mention it, you need to know it, why its used etc)
-
Understanding of what you have worked on, technologies involved, how systems could be improved, the reason behind the design/architecture of the system, the benefits it brought the business, the problem it was solving etc – also technologies listed on the spec and how these overlap with your skill set. You must look to sell yourself, differentiate yourself from others. Achievements, approaches, what are you most proud of, challenges of leading, how you deal with difficult team members, difficult business problems…
-
CV – decisions involved, reasons for making choices etc – it should all be about career growth, advancement, learning and development
-
Experience – YOUR contribution
-
Motivations for moving – prepare clear and concise reasons for looking
With regards to Nomura, it’s a written test first and from there a follow up conversation with the hiring manager, Laurence Usher – HR provided the following:
‘It’s a written test with a set number of questions around their hands on Java experience which they will get 45 minutes to complete’
You can expect the questions around standard topics such as multi-threading, concurrency etc. Below are commonly asked technical questions – work through each area, its going to stand you in very good stead:
· Give an example of a string in palindrome
· Java memory models
· Multi threading
· Java design questions.
· How would you investigate Java performance issues.
· Work situation questions particularly around code reviews.
· SQL questions: normalization: why, is it always good? about primary key and foreign key. What db system I have used? What is a view (is it only for selecting data?) What are indexes and for what reason.
· Java: List interface, what concrete implementation do I know? How ArrayList differs from the LinkedList, what is better for adding a lot of elements, how is ArrayList implemented; About HashMap what happens when I call put, what happens when I call get method. What is equals and hashcode for?
· Explain to me what the following java terms mean: "final", "finally", "finalise"
-
final and finally are standard language features that i could explain well
-
finalise is a very old and unused method on Object in Java that shouldn't really be used. Once he started talking about it being involved with Garbage Collection i remembered that it was a method on Object.
· Tell me the different types of beans in J2EE
-
Had to just clarify what he mean by asking do you mean like Stateful/Stateless and he said yes.
-
So mentioned of Stateless, Statelful, Singleton, Message Beans.
-
He asked me to describe each of them, which i could do apart from Stateful as we don't really use that feature and he agreed that he wasn't too knowledge on its exact implementation either.
· How would you go about debugging a slow running SQL Query.
-
Described using the Explain Plan feature which would give a breakdown of the query plan which can generally point to a problem area.
-
But also described some situations where it has actively given misleading results and that it should always be taken with a pinch of salt.
· Discussion about Java design patterns.
· Database schema.
· normalise a given example.
· various questions about performance, restructuring the example.
· a couple of simple SQL queries.
· Concurrency.
· intricacies of how Java handles the finally block and static synchronised methods.
· technical java question regarding variable scope. Got to know variable scope inside out for this one. Asked to look at a piece of code for this one, and write down what values would be output at certain parts of the code, so involves good knowledge of scope. I found this one tough, because I was getting confused between javascript and Java, both of which I have done rather recently. But to be honest, this is just something which I haven't had problems with generally as I usually define variable names so that there is no confusion. In any case, it's not rocket science and just needs a lot more hands on practice.
· Technical - function to check whether or not string is palindrome. function to insert an element into linked list. Java memory management. Java execution. Multithreading. Problem of printing nodes in a tree, depth order and then breadth order
· my personal opinions about different programming languages (java, scala, python) and questions arising from my answers
- draw and explain your current system (with lots and lots of follow-ups)
- basic java (around hashcodes, immutability etc)
- java collections and their best suitability
- low and higher level mulithreading in java
- concurrent collections and data structures
- abstract data structures like priority queues and trees in different implementations
- design a given problem in terms of OO (draw a class diagram)
- given a problem what would be your algorithm of solving it
- lots of conceptual questions that don't have the right answers but shows them your thinking, like what is your attitude to testing, TDD, BDD
· write a code to intersect two sets.
· design classes for polynom
· -what are checked/unchecked exceptions and how to use it
· what do I do now in my current role
· I think the I've not answered some questions, e.g. red-black tree algorithm, and sometimes not explained some details until Julien gave some me hints. The questions are:
· write a code to intersect two sets.
· design classes for polynom
· what are checked/unchecked exceptions and how to use it
· Question on how to count the most frequently occurring words in a block of text.
· composition
· difference between linkedlist, set, map
· how to iterate over a list for loop, stream, while
· how to sort a list Collections.sort()
· how to remove duplicates from a list
· -types of exceptions
· differences between abstract class and interface (here he wanted to mention that the abstract class can have a constructor, which I haven't)
· when you have to implement hashCode and equals
· what is an immutable class
1. Java collections, list vs set.
2. Java/JDK synchronization mechanisms - developed into discussion about ReadWrite lock implementation
3. Hashmap vs ConcurrentHashMap
4. Garbage collector
5. Class loader - how JVM loads classes, how to override system class
· The interview focused on Multi-threading generally, including the synchronized keyword, mutual exclusion, thread creation (new/runnable) etc. Some questions on bit manipulation, access modifiers, multi-dimensional arrays, vectors, quite some focus on lists versus sets. There were some puzzles which I don't remember exactly now but can generally be broken down into bin-packing problems I guess.
Here are the questions I remember:
· Difference between List and Set
· Difference between HashSet and LinkedHashSet
· Explain algorithm of adding element to a set
· Thread safety of a HashMap , how we can make it thread safe
· Describe what happens when adding element to the ConcurrentHashMap
1st interview was technical, and they walked through the technical screener exam and asked for justification for why you answered a certain way, and then probed on the same topics with additional requirements to the use cases / questions. Collections and concurrency came up a lot. More so then getting the right answer they appears to be probing how I approached the problem, not whether the end answer was correct.
2nd interview was historical / CV exploration. The guys wanted to get a sense of who I was as a technologist and what I had worked on previously. General questions around expanding on what was in the resume was what I went with here. I also tried to relate it as best I could to either a general case problem or specifically to areas that Nomura might find useful (e.g. how my experience with trading platforms was generally applicable)
3rd interview was with Lawrence. We chatted reasonably specifically about the particular projects / issues they were looking at, and talked a bit about the overall business flow. Also covered team dynamics and got a better sense for the type of person they were looking for.
4th interview was with a guy that Lawrence had previously worked with. He was there to provide some outside-of-team perspective. Mostly technical covering concurrency mostly, walked through a problem involving updating bank account balances (atomicity, deadlock, all the usual topics when using locking to ensure atomic transactions).
Other than that is was pretty straight forward. My main pointers would be focus on concurrency and collections, but mostly communicate clearly about how you are solving the problem, or at least how you are approaching thinking about the problem.
2:
My interview with Laurence was face to face and quite laid back. We went through my CV and some of the projects I've been working on. After that he started talking about their current tech stack and I felt that he wanted an open discussion, we touched some business questions (what is an RFQ, FX options contracts, hedging) and a few tech concepts (heartbeat, message queues, web technologies, but not in great detail), all in the context of their current software and what they want to do in future. That was my only interview with Laurence. My next interview was Java specific with two devs, they asked language specific questions, data structures and threading and a SQL questions (what is inner join and how would I optimize a slow running query).
Summary of questions:
-
sql
http://www.folkstalk.com/2012/01/sql-interview-questions-basics-part-1.html
https://www.toptal.com/sql/interview-questions
http://career.guru99.com/top-50-sql-question-answers/
http://www.w3school.com.cn/sql/sql_join_right.asp
https://www.postgresql.org/docs/9.4/static/using-explain.html
http://blog.csdn.net/famousdt/article/details/6921622
第四范式搞定多值属性问题!
数据库范式和EER紧密相关,单纯范式意义不大。
例如:
课程代码 老师 教科书
001 Tom A
001 Tom B
001 Jim A
001 Jim B
教科书和老师都是多值属性,所以分出来
课程-老师(课程代码,老师)
课程-教科书(课程代码,教科书)
-
collections
http://netjs.blogspot.co.uk/2015/05/how-hashmap-internally-works-in-java.html
-
concurrency
Phaser
http://tutorials.jenkov.com/java-concurrency/read-write-locks.html
-
tree (iteration, DP BP printing nodes, delete/add value), sorting, dynamic programming, palindrome
http://www.cnblogs.com/kkun/archive/2011/11/23/insertion_sort.html
http://blog.csdn.net/timheath/article/details/68930482
http://tutorials.jenkov.com/java-util-concurrent/java-fork-and-join-forkjoinpool.html
-
design pattern
http://javarevisited.blogspot.co.uk/2012/06/20-design-pattern-and-software-design.html#axzz4kaGU2qmY
http://blog.csdn.net/jason0539/article/details/22974405
http://www.cnblogs.com/coffeeSS/p/5405787.html
-
class loader, garbage collector
http://javarevisited.blogspot.co.uk/2012/10/10-garbage-collection-interview-question-answer.html
-
bin-packing problems
-
https://www.tutorialspoint.com/ejb/ejb_interview_questions.htm java beans
-
design classes for polynom
-
NIO
http://www.cnblogs.com/handsome1013/p/4882862.html
11. abstract vs interface
interface still cannot have constructors, fields, private methods, or implementations of equals/hashCode/toString
http://beginnersbook.com/2013/05/abstract-class-vs-interface-in-java/
CV
Hadoop
https://dzone.com/articles/word-count-hello-word-program-in-mapreduce
Publications
http://baike.baidu.com/item/%E4%B8%BB%E6%88%90%E5%88%86%E5%88%86%E6%9E%90/829840?fr=aladdin
Java Concurrency
http://shazsterblog.blogspot.co.uk/2011/12/comparison-of-countdownlatch.html
https://stackoverflow.com/questions/4168772/java-concurrency-countdown-latch-vs-cyclic-barrier
http://blog.csdn.net/mrxiky/article/details/56675839
http://www.kuqin.com/shuoit/20151224/349628.html
A semaphore initialized to one, and which is used such that it only has at most one permit available, can serve as a mutual exclusion lock. This is more commonly known as a binary semaphore, because it only has two states: one permit available, or zero permits available. When used in this way, the binary semaphore has the property (unlike many Lock implementations), that the "lock" can be released by a thread other than the owner (as semaphores have no notion of ownership). This can be useful in some specialized contexts, such as deadlock recovery.
CompletableFuture
http://www.baeldung.com/java-completablefuture
Type of indexes:
https://www.postgresql.org/docs/9.2/static/indexes-types.html
What db system I have used? What is a view (is it only for selecting data?) What are indexes and for what reason. https://stackoverflow.com/questions/2955459/what-is-an-index-in-sql
HashMap/HashTable works internally http://www.java67.com/2013/06/how-get-method-of-hashmap-or-hashtable-works-internally.html
Reentrant lock vs synchronized
Final keyword has a numerous way to use:
-
A final class cannot be subclassed.r
-
A final method cannot be overridden by subclasses
-
A final variable can only be initialized once
Other usage:
-
When an anonymous inner class is defined within the body of a method, all variables declared final in the scope of that method are accessible from within the inner class
Given an integer, return all sequences of numbers that sum to it. (Example: 3 -> (1, 2), (2, 1), (1, 1, 1)).
http://blog.csdn.net/yeqiuzs/article/details/52029034
Give me a level by level output of a binary tree. Implement a stack with two queues, etc.
https://stackoverflow.com/questions/688276/implement-stack-using-two-queues
What are different kind of Indexes in SQL? https://msdn.microsoft.com/en-us/library/ms175049(v=sql.105).aspx
Decorator Design Pattern.
http://www.cnblogs.com/coffeeSS/p/5405787.html
1st round:
1. How to uniquely identify the repeating strings from the array.
2. How to search in Skiplist
2nd round:
1. BinarySearch
2. How to write Customized Comparator
3. Anagrams
3rd round:
Lunch with tech manager and find maximum sub array
4th round:
1. Binary Search in sorted matrix
2. Different ways of writing Singleton pattern
3. Resume go through
5th round:
1. How HashMap works
2. Get sum using minimum combination of numbers provided
6th round
1. Singleton
2. Tree traversal
3. How to mirror the tree, http://www.geeksforgeeks.org/write-an-efficient-c-function-to-convert-a-tree-into-its-mirror-tree/
4. Stack implementation
5. Queue using stack
6. Reverse the sentence
- Number of ways to walk the matrix from (0,0) to (m,n). (with and without obstacles)
- Given a binary tree, link nodes at the same level
https://www.careercup.com/page?pid=ebay-interview-questions
Bit Manipulation
http://www.cnblogs.com/hysum/p/7190511.html
Type of indexes:
https://www.postgresql.org/docs/9.2/static/indexes-types.html
https://stackoverflow.com/questions/2955459/what-is-an-index-in-sql
What db system I have used? What is a view (is it only for selecting data?) What are indexes and for what reason. https://stackoverflow.com/questions/2955459/what-is-an-index-in-sql
HashMap/HashTable works internally http://www.java67.com/2013/06/how-get-method-of-hashmap-or-hashtable-works-internally.html
Reentrant lock vs synchronized
Give me a level by level output of a binary tree. Implement a stack with two queues, etc.
https://stackoverflow.com/questions/688276/implement-stack-using-two-queues
What are different kind of Indexes in SQL?
https://msdn.microsoft.com/en-us/library/ms175049(v=sql.105).aspx
Hibernate
http://www.journaldev.com/3633/hibernate-interview-questions-and-answers
Hadoop
https://intellipaat.com/interview-question/big-data-hadoop-interview-questions/
Cassandra
https://intellipaat.com/interview-question/cassandra-interview-questions/