Advertisement
ReutenkoIvan

TestAssesment

Aug 6th, 2019
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // ====================================================
  2. // явная/неявная, сильная/слабая, статическая/динамическая типизация
  3. // ____________________________________________________
  4.  
  5. // Статическая / динамическая типизация. Статическая определяется тем,
  6. // что конечные типы переменных и функций устанавливаются на этапе компиляции.
  7. // Т.е. уже компилятор на 100% уверен, какой тип где находится.
  8. // В динамической типизации все типы выясняются уже во время выполнения программы.
  9.  
  10.  
  11. // Сильная / слабая типизация (также иногда говорят строгая / нестрогая).
  12. // Сильная типизация выделяется тем, что язык не позволяет смешивать в выражениях различные типы
  13. // и не выполняет автоматические неявные преобразования, например нельзя вычесть из строки множество.
  14. // Языки со слабой типизацией выполняют множество неявных преобразований автоматически,
  15. // даже если может произойти потеря точности или преобразование неоднозначно.
  16.  
  17.  
  18. // Явная / неявная типизация. Явно-типизированные языки отличаются тем,
  19. // что тип новых переменных / функций / их аргументов нужно задавать явно.
  20. // Соответственно языки с неявной типизацией перекладывают эту задачу на компилятор / интерпретатор.
  21.  
  22. // ====================================================
  23.  
  24.  
  25. // ====================================================
  26. // Клиент-серверная модель. Критический путь рендеринга
  27. // ____________________________________________________
  28.  
  29. // Клиент-серверная модель - архитектура, в которой взаимодействие между компонентами происходят по средствам запросов.
  30. // Сервер ожидают от клиента запросы и предоставляет клиенту свои ресурсы в виде данных или в виде сервисных функций.
  31.  
  32. // Преимущества:
  33. // 1. Отсутствие дублирования кода программы-сервера программами-клиентами.
  34. // 2. Так как все вычисления выполняются на сервере, то требования к компьютерам,
  35. // на которых установлен клиент, снижаются.
  36. // 3. Все данные хранятся на сервере, который, как правило, защищён гораздо лучше большинства клиентов.
  37. // На сервере проще организовать контроль полномочий, чтобы разрешать доступ к данным
  38. // только клиентам с соответствующими правами доступа.
  39.  
  40. // Недостатки:
  41. // 1. Неработоспособность сервера может сделать неработоспособной всю вычислительную сеть.
  42. // 2. Поддержка работы данной системы требует отдельного специалиста — системного администратора.
  43. // 3. Высокая стоимость оборудования.
  44.  
  45. https://medium.com/genesis-media/3933c96467a
  46. // ====================================================
  47.  
  48.  
  49. // ====================================================
  50. // Рассказать об особенностях архитектуры flux
  51. // Рассказать о 3-x основных принцыпах редакса
  52. // ____________________________________________________
  53.  
  54. // особенность - однонаправленный поток данных
  55.  
  56. // 1. Всё состояние приложения хранится в единственном месте
  57. // 2. Состояние приложения нельзя изменять напрямую
  58. // 3. Все изменения обрабатываются чистой функцией - редьюсером
  59. // ====================================================
  60.  
  61.  
  62. // ====================================================
  63. // Написать полифил для Function.prototype.myBind
  64. // ____________________________________________________
  65.  
  66. // Function.prototype.myBind = function (context, ...props){
  67. //   context = typeof(context) === 'object' && context instanceof Object ? context : null;
  68.  
  69. //   const helper = (...args) => {
  70. //     return this.call(context, ...props, ...args)
  71. //   }
  72.  
  73. //   return helper
  74. // }
  75.  
  76. // ====================================================
  77.  
  78.  
  79. // ====================================================
  80. // Написать полифил для Object.create()
  81. // ____________________________________________________
  82.  
  83. // function myObjCreate(obj){
  84. //   function F(){};
  85. //   F.prototype = obj;
  86.  
  87. //   return new F
  88. // }
  89.  
  90. // ====================================================
  91.  
  92.  
  93. // ====================================================
  94. // Что будет в консоли?
  95. // ____________________________________________________
  96.  
  97. // let a = {one: 1}
  98.  
  99. // let b = a
  100.  
  101. // a = {two: 2}
  102.  
  103. // console.log(b)  // {one: 1}
  104.  
  105. // ====================================================
  106.  
  107. // ====================================================
  108. // Написать пример работы наследования в js
  109. // ____________________________________________________
  110.  
  111. // function A(name) {
  112. //   this.name = name
  113. // }
  114.  
  115. // A.prototype.getName = function() { return this.name }
  116.  
  117. // function B(name) {
  118. //  A.call(this, name)
  119. // }
  120.  
  121. // B.prototype = Object.create(A.prototype)
  122. // B.prototype.constructor = B;
  123.  
  124. // ====================================================
  125.  
  126. // ====================================================
  127. // Что будет в консоли?
  128. // ____________________________________________________
  129.  
  130. // const a = {c: 1}
  131. // const b = Object.create(a)
  132.  
  133. // console.log(b.c) // 1
  134. // delete b.c
  135. // console.log(b.c) // 1
  136. // delete a.c
  137. // console.log(b.c) // undefined
  138.  
  139. // a.z = 2
  140. // console.log(b.z) // 2
  141. // b.z = 3
  142. // console.log(a.z) // 2
  143.  
  144. // ====================================================
  145.  
  146. // ====================================================
  147. // что выведется и в каком порядке?
  148. // ____________________________________________________
  149.  
  150. // function job(state) {
  151. //     return new Promise(function(resolve, reject) {
  152. //         if (state) {
  153. //             resolve('success');
  154. //         } else {
  155. //             reject('error');
  156. //         }
  157. //     });
  158. // }
  159.  
  160. // let promise = job(true);
  161.  
  162. // promise
  163. // .then(function(data) {
  164. //     console.log(data);  // 'success'
  165.  
  166. //     return job(true);
  167. // })
  168.  
  169. // .then(function(data) {
  170. //     if (data !== 'victory') {
  171. //         throw 'Defeat';
  172. //     }
  173.  
  174. //     return job(true);
  175. // })
  176.  
  177. // .then(function(data) {
  178. //     console.log(data);
  179. // })
  180.  
  181. // .catch(function(error) {
  182. //     console.log(error); // 'Defeat'
  183.  
  184. //     return job(false);
  185. // })
  186.  
  187. // .then(function(data) {
  188. //     console.log(data);
  189.  
  190. //     return job(true);
  191. // })
  192.  
  193. // .catch(function(error) {
  194. //     console.log(error); // 'error'
  195.  
  196. //     return 'Error caught';
  197. // })
  198.  
  199. // .then(function(data) {
  200. //     console.log(data); // 'Error caught'
  201.  
  202. //     return new Error('test');
  203. // })
  204.  
  205. // .then(function(data) {
  206. //     console.log('Success:', data.message);  // 'Success:test'
  207. // })
  208.  
  209. // .catch(function(data) {
  210. //     console.log('Error:', data.message);
  211. // });
  212.  
  213. // ____________________________________________________
  214.  
  215. // let val = 'foo';
  216.  
  217. // setTimeout(
  218. //   function timeout() {
  219. //     console.log(val, 4, 'foo');
  220. //     val = 'bar';
  221. //   }, 0);
  222.  
  223. // const p = new Promise((res, rej) => {
  224. //   console.log(val, 1, 'foo');
  225. //   val = 'baz';
  226. //   res(val);
  227. // });
  228.  
  229. // p.then(res => console.log(val, 3, 'foo') );
  230.  
  231. // console.log(val, 2, 'baz');
  232. // val = 'foo';
  233.  
  234. // ====================================================
  235.  
  236. // ====================================================
  237. // Написать функцию checkMonoInfo
  238. // ____________________________________________________
  239.  
  240. // const checkMonoInfo = arr => {  
  241. //   let result;
  242. //   if (arr.length < 3) return true;
  243.  
  244. //   for (let i = 2; i < arr.length; i++){
  245. //     result = arr[i - 2] <= arr[i - 1] && arr[i - 1] <= arr[i]
  246. //       || arr[i - 2] >= arr[i - 1] && arr[i - 1] >= arr[i]
  247.    
  248. //     if (!result) break;
  249. //   };
  250.  
  251. //   return result
  252. // };
  253.  
  254.  
  255. // console.log(checkMonoInfo([1, 1, 1, 1])); // true
  256. // console.log(checkMonoInfo([1, 1, 1, 2])); // true
  257. // console.log(checkMonoInfo([2, 2, 2, 1]) ) // true
  258. // console.log(checkMonoInfo([1, 2, 2, 3])) // true
  259. // console.log(checkMonoInfo([5, 4, 3, 3, 2])); // true
  260.  
  261. // console.log(checkMonoInfo([1, 2, 2, 3, 2]));  // false
  262.  
  263. // ====================================================
  264.  
  265. // ====================================================
  266. // Написать функцию capitalize
  267. // ____________________________________________________
  268.  
  269. // const capitalize = str => str.split(' ')
  270. //   .map(word => word[0].toUpperCase() + word.substr(1))
  271. //   .join(' ')
  272.  
  273.  
  274. // console.log(capitalize('a short sentence')) // 'A Short Sentence'
  275. // console.log(capitalize('a lazy fox')) // 'A Lazy Fox'
  276. // console.log(capitalize('look, it is working!')) // 'Look, It Is Working!'
  277.  
  278. // ====================================================
  279.  
  280. // ====================================================
  281. // Написать функцию sum
  282. // ____________________________________________________
  283.  
  284. // const sum = n => {
  285. //   const buff = [n];
  286. //   let result;
  287. //   const f = (...numbers) => {
  288. //     buff.push(...numbers);
  289.  
  290. //     if (!numbers.length){
  291. //       result = buff.reduce((a, b) => a + b, 0)
  292. //       return result
  293. //     }
  294.  
  295. //     return f
  296. //   }
  297.  
  298. //   f.valueOf = () => buff.reduce((a, b) => a + b, 0)
  299. //   return f
  300. // }
  301.  
  302.  
  303. // console.log(sum(1)(4)()) // 5
  304. // console.log(sum(1)(2) - 6) // -3
  305. // console.log(sum(1)(3)(5)) // function sum(){}
  306.  
  307. // ====================================================
  308.  
  309. // ====================================================
  310. // * Написать EventEmitter (pub/sub паттерн)
  311. // ____________________________________________________
  312.  
  313. // const EventEmitter = class {
  314. //   constructor(){
  315. //     this.events = {};
  316. //   }
  317.  
  318. //   subscribe(eventName, func){
  319. //     if(!this.events[eventName]){
  320. //       this.events[eventName] = [];
  321. //     };
  322.  
  323. //     this.events[eventName].push(func);
  324.    
  325. //     return () => {
  326. //       this.events[eventName] = this.events[eventName].filter(eventFn => func !== eventFn);
  327. //     }
  328. //   };
  329.  
  330. //   emit(eventName, data){
  331. //     if(eventName in this.events){
  332. //       this.events[eventName].forEach(func => func(data));
  333. //     }
  334. //   }
  335. // };
  336.  
  337. // const Publisher = class {
  338. // constructor (e) {
  339. //     this.EventEmitter = e;
  340. //   }
  341.  
  342. //   save (data) {
  343. //     console.log('Order saved');
  344. //     this.EventEmitter.emit('order/new', data)
  345. //   }
  346. // }
  347.  
  348. // const Subscriber = class {
  349. //   constructor (e) {
  350. //     e.subscribe('order/new', this.sendPurchaseEmail)
  351. //   }
  352.  
  353. //   sendPurchaseEmail (params) {
  354. //     console.log(`Email send to ${params.userEmail}`)
  355. //   }
  356. // }
  357.  
  358.  
  359. // const emitter = new EventEmitter();
  360. // const sub = new Subscriber(emitter)
  361. // const pub = new Publisher(emitter)
  362. // pub.save({userEmail: '[email protected]'})
  363.  
  364. // ====================================================
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement