diff --git a/docs/popular_tasks/README.md b/docs/popular_tasks/README.md
index 6014f6f..e30ca6e 100644
--- a/docs/popular_tasks/README.md
+++ b/docs/popular_tasks/README.md
@@ -325,4 +325,101 @@ func main() {
sem.Dec(n)
}
-```
\ No newline at end of file
+```
+
+### 7. Что выведет код?
+
+```go
+package main
+
+import (
+ "fmt"
+)
+
+func main() {
+ runtime.GOMAXPROCS(1)
+
+ done := false
+
+ go func() {
+ done = true
+ }()
+
+ for !done {
+ }
+ fmt.Println("finished")
+}
+```
+
+
+ Ответ или подсказка
+ Как можно изменить этот код, чтобы был вывод “finished”?
+
+
+### 8. Какая есть проблема в коде?
+
+```go
+var counter int
+for i := 0; i < 1000; i++ {
+ go func() {
+ counter++
+ }()
+}
+```
+
+
+ Ответ или подсказка
+ Как её можно решить?
+ А как её можно бы было решить, если бы в языке не было пакета sync?
+
+
+### 9. Что выведет код?
+
+```go
+func main() {
+ v := 5
+ p := &v
+ println(*p)
+
+ changePointer(p)
+ println(*p)
+}
+
+func changePointer(p *int) {
+ v := 3
+ p = &v
+}
+```
+
+
+ Ответ или подсказка
+ Почему? Как нужно изменить функцию changePointer, чтобы вывело 5 и 3 (в оригинальной версии выводится 5 и 5)?
+
+
+### 10. Что выведет код?
+
+```go
+func worker() chan int {
+ ch := make(chan int)
+
+ go func() {
+ time.Sleep(3 * time.Second)
+ ch <- 42
+ }()
+
+ return ch
+}
+
+func main() {
+ timeStart := time.Now()
+
+ _, _ = <-worker(), <-worker()
+
+ println(int(time.Since(timeStart).Seconds())) // что выведет - 3 или 6?
+}
+```
+
+
+ Ответ или подсказка
+ Что нужно изменить, чтобы код работал за 3 секунды?
+