What is the mechanism of ensuring that two threads don't execute portions of a program at the same time?
Answer
Synchronization
Alignment
Hazard-Checking
Paralellization
Question 2
Question
Can you pass an integer to a thread as a parameter?
Answer
Yes, but only as an Object. It must be cast inside the thread.
Yes.
No.
No, unless it is a foreground thread.
Question 3
Question
What does the [Threadstatic] attribute in a variable entail?
Answer
Each copy of a spawned thread has its own copy of a field.
Each copy of a spawned thread can manipulate the field.
The field can only be modified by one thread at a time.
The field can be modified by the main thread, or any spawned foreground threads.
Question 4
Question
How would you add a sequence to a Task?
Answer
.ContinueWith((FirstTask){
//Func
})
.NextTask((FirstTask){
//Func
})
.Continue((FirstTask){
//Func
})
.Then((FirstTask{
//Func
})
Question 5
Question
Which are acceptable overloads of the .ContinueWith function?
Answer
TaskContinueationOptions.OnlyCancelled
TaskContinueationOptions.OnlyOnFaulted
TaskContinueationOptions.OnlyRanToCompletion
TaskContinueationOptions.OnlyBlocked
TaskContinueationOptions.OnlyStopped
TaskContinueationOptions.OnlyCompleted
TaskContinueationOptions.OnlyOnCompletion
Question 6
Question
What does a task object do?
Answer
Spawn a new thread.
Spawn a new process.
Nothing, it's syntactic sugar
Provides a method of managing thread resources.
Question 7
Question
What principles should you keep in mind while creating an asynchronous method?
Answer
Always use await statements.
Avoid returning void.
Be sure to test to ensure a performance increase.
Return a Task or Task<T>
Question 8
Question
ConcurrentStacks allow enumeration
Answer
True
False
Question 9
Question
You havve a lot of items that need to be processed. For each item, you need to perform complex arithmetic that takes up moderate CPU time. Which technique should you use?
Answer
Create a Task for each item, and wait till all of them are finished
Use a Parallel.For to process all items concurrently
Use Async/Await to process all items concurrently
Add all items to a BlockingCollection and process them on a thread created by the thread class.
Question 10
Question
You are creating a complex query that doesn't require any particular order, and you want to run it as parallel. Which method should you use?
Answer
AsParallel
AsSequential
AsOrdered
WithDegreeOfParallelism
Question 11
Question
In an ASP.NET project, your application retrieves data from a remote server and writes the response to a database. Should you use the Async/Await keywords for processing?
Answer
Yes, this will free your thread to serve other requests while waiting for a naturally occurring I/O bottleneck.
No, both operations depend on external factors. You must wait before they are finished.
No, in a server application you don't have to use async/await, as the keywords are primarily used in client applications.
Yes, this puts your thread to sleep while waiting for I/O so it uses no CPU time.
Question 12
Question
What does the volatile keyword do?
Answer
Ensures that individual copies of a variable are stored in memory
Disables compiler optimizations that assume a single-threaded application
Ensures a variable is never added to a swap file on a disk
Informs the compiler that the variable will be heavily accessed