Medium interview questions
Based on Korean Version 1.9.6 (https://hamait.tistory.com/1054), last updated October 2019.
You are not expected to be 100% knowledgeable about those, but instead show your depth in understanding what you have experience with or is interested in. Focus on what you know well.
Part 1: Blockchain
What are Double spending, Replay attack, Eclipse attack
Part 2: Bitcoin
- How can we ensure the integrity of Bitcoin transactions? How do you trust the previous output in the input of the next transaction?
- What’s bloom filter SPV in Bitcoin?
Part 3: Ethereum
- What’s the difference between Transaction and Raw Trasaction?
- What’s nonce in an Ethereum transaction? Why is there no nonce in Bitcoin?
Part 4: Hyperledger fabric
- Explain the transaction flow of Hyperledger fabric
- What is MVCC Collision and Optimistic Lock on Hyperledger Fabric?
- What is MSP in Hyperledger Fabric
- What are channel MSPs and network MSPs in a Hyperledger fabric?
- What’s nonce in Hyperledger fabric. What is the difference with Ethereum’s?
- How events are created in Hyperledger fabric, how can the client know about an event?
Part 5: EOS
Part 6: Hyperledger Indy
Part 7: Consensus
- What are the advantages and disadvantages of the E-O-V consensus process in Hyperledger Fabric?
Part 8: Software
- Tell us about three design patterns you usually use. Write the pseudo-code Implementation of Observer Pattern
- Implement pseudo-code to distribute work among multiple threads and wait for them to finish
- Give me three examples of how to waste space (memory) to improve performance
- What is padding, packing in memory alignment?
Part 9: Java
- Explain Java’s method argument passing method. What’s Shallow Copy / Deep Copy.
- What is the logic error of the following servlet call code (target is exected once after passing through filters)?
//// Filter
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
... 인코딩처리 OR
... 로깅처리 OR
... 인증처리
chain.doFilter(request, response);
...
}
//// FilterChain
public class FilterChain {
private List filters = new ArrayList();
private Target target;
int currentFilter = 0;
public void addFilter(Filter filter){
filters.add(filter);
}
public Filter getNextFilter(){
if(currentFilter < filters.size()){
return filters.get(currentFilter++);
}
return null;
}
public void doFilter(String request, String response){
Filter f = getNextFillter();
if(f != null){
f.doFilter(request,response,this);
}
target.execute(request,response);
}
public void setTarget(Target target){
this.target = target;
}
}
Part 10: C++
- What’s important about performance degradation and enhancements in C ++
- Parse a single line to collect space-separated words, then code them to print out the word and the number of duplicates. (Performance and memory optimization
- Write a function that takes a string as a parameter and returns a string with certain characters removed. (With performance optimization)
- Briefly describe the auto / override / nullptr / constexpr / atomic keywords in C ++
- Please explain the following code in C ++. (Consumers in the producer-consumer pattern, and there is only one consumer here)
Buffer BufferPool::get_buf(){
Buffer* buf = nullptr;
std::unique_lock<std::mutex> ul(_mtx, std::defer_lock);
while (buf == nullptr){
ul.lock();
if (_pool.empty()) _cond.wait(ul);
if (!_pool.empty()) // 여기서 pool 이 empty 일 경우는?
{
buf = _pool.get();
}
}
.... DO something ....
return buf;
}
Part 11: Go
- How is the select statement used in Go? Please explain the code below.
package main
import (
"fmt"
"time"
)
var scheduler chan string
func consuming (prompt string){
fmt.Println("consuming 호출됨")
select {
case scheduler <- prompt:
fmt.Println("이름을 입력받았습니다 : ", <- scheduler)
case <-time.After(5 * time.Second):
fmt.Println("시간이 지났습니다.")
}
}
func producing (console chan string) {
var name string
fmt.Print("이름:")
fmt.Scanln(&name)
console <- name
}
func main() {
console := make(chan string, 1)
scheduler = make(chan string, 1)
go func(){
consuming(<-console)
}()
go producing(console)
time.Sleep(100 * time.Second)
}
Part 12: Javascript
- What are built-in Javascript objects / browser objects / HTML DOM objects
- What is the difference between ajax and websocket communication
- Show your previous works in React & CSS Styling
Part 13: Distributed systems
- What is consistent hashing?
- What is HAProxy?
- What is Zookeeper and give two examples where you should use it
Part 14: Compilers
- How does EOS charge for resources?
- How to compute CPU, Memory and Storage usage in a program written in C ++ or Go?
Part 15: Cryptography
- What is HMAC / PKI / ECDSA / ECDH
- What is ECert in Hyperledger Fabric? Why does Hyperledger fabric use it?
- How are zero knowledge proofs used in Fabric Identity Mixer?
Part 16: Database
- Compare Red Black tree & B tree & Skip lists data structures.
Part 17: Messaging
Part 18: Networking / Socket
- Tell me as much as you know the difference between socket communication between multithreaded / Select / Java NIO / ePoll / IOCP.
Experience with the following tools
- Agile Management Techniques (* JIRA)
- Product & Configuration Management (Bitbucket)
- Containerization like Docker + Coobernate
- Build Automation (* Bamboo)
- Test Automation (* Unit Test gTest Study)
- Issue Registration Automation (* JIRA)
- Information sharing wiki management (confluence)
- Information sharing chat management (slack)
- Deployment Automation
- Service Management Automation
- Understanding Your Networking Infrastructure
- Understanding Vertical / Horizontal Segmentation
- Understanding and building a non-stop system (extending non-stop resources, etc.)
- AWS Management