How to change the Acquire/Lock semaphore to allow waiting to be canceled or limited by time?
Golang
In which direction do you want to develop?
Are you still communicating with any other companies? Perhaps offers are already available?
When and how do goroutines switch?
Is concurrent and parallel execution of program parts the same?
What criteria will you use to choose an offer if there are several?
WaitGroup uses Atomic under the hood for counting. WaitGroup can accept work weight. How would you rewrite the semaphore so that methods Lock(weight int), TryLock(weight int), and Release(weight int) accept weight? The goroutine acquires resources immediately for the entire operation, then releases a little after each stage (IO-bound, CPU-bound). How would you implement this?
What workloads were there at your last jobs (RPS)?
What happens when you declare a field as a primary key in PostgreSQL?
Tell us about netpoller in Go.
Tell us about the GMP model in Go: how do G, M, and P work, what is the scheduler, netpoller, and sysmon?
How does context.WithCancel work with cancellation?
Why did you decide to leave your current company (Abit) and what are you looking for?
What type of index is the default in PostgreSQL?
Tell about your most interesting project during your entire work experience. What did you implement, what technical and business tasks?
Why did you decide to enter the market? What is unsatisfactory about your current job?
What is an operation's idempotency property?
How does map differ from sync.Map?
Can you tell me about your most recent project: what you worked on, what you wrote yourself, and what kind of team it was?
There is a thread safety issue: if two goroutines call Lock simultaneously, they may interleave. How to fix this?