零.背景 最近在翻看以前的老书<node.js开发指南>,恰好碰到for循环 + setTimeout的经典例子,于是重新梳理了思路并记录下. 一.写在前面,setTimeout和setInterval的执行机制 在日常编码中,你会发现,给setTimeout和setInterval设定延迟时间往往并不准,或者干脆setTimeout(function(){xxx},0)也不是立马执行(特别是有耗时代码在前),这是因为js是单线程的,有一个事件队列机制,setTimeout和setInterv…
文章已收录在 GitHub JavaKeeper ,N 线互联网开发.面试必备技能兵器谱,笔记自取. 微信搜「 JavaKeeper 」程序员成长充电站,互联网技术武道场.无套路领取 500+ 本电子书和 30+ 视频教学和源码. 前言 循环依赖问题,算是一道烂大街的面试题了,解毒之前,我们先来回顾两个知识点: 初学 Spring 的时候,我们就知道 IOC,控制反转么,它将原本在程序中手动创建对象的控制权,交由 Spring 框架来管理,不需要我们手动去各种 new XXX. 尽管是 Spri…
自从帝舵小红花推上市面之后,各大工厂都在推出新版本,但做得最成熟的还是ZF厂,帝舵这个品牌是非常低调的,很少有人关注,但是ZF厂在这款腕表也是下了不少功夫,曾经帝舵小红花和N厂水鬼并列为最顶级的表畅销,接下来一起看看ZF厂V4版帝舵小红花到底好在哪?  YY表行微信yy101894 ZF厂V4版帝舵小红花316精钢表壳,红色圈口是单向逆时针手动计时,表圈上刻度比例完美,刻字整洁,十分干净,黑色表盘,条形时标做得也是十分完美,yy表业薇號yy101894夜光圆环刻度及倒三角夜光涂层均匀饱满,雪花指…
选择结构.循环结构.大数据java基础面试题 switch: 注意: byte short int char String(jdk1.7支持) 不能是 long float double boolean while.do-while.for同c# 面试题: 大数乘法:随机给定两个超大整数,计算乘积. 思路:AB*CD = AC(BC+AD)BD public static void main(String[]arg) { String i1="111111111111111"; Str…
例子: for (var i = 0; i < 5; i++) { setTimeout(function () { console.log(i); }, 100) } 上述代码,输出结果显而易见是5个5,且并没有任何的延迟效果.那么为什么呢? 首先这样的结果需要从JS的执行机制说起.JS是单线程环境,也就是说代码的执行是从上到下,依次执行.这样的执行称为同步执行.因为种种不要浪费和节约的原因.JS中引进了异步的机制.在这段代码中,哪个是同步哪个是异步呢?for循环是同步代码,而setTimeo…
最近跟一朋友聊天,他是做c#开发的.他答应了老板带领一帮java工程师开发网站.披星戴月终于搞定,现在已经盈利.但是他公司的那帮搞c#的同事不淡定了. 在招聘java程序员的时候2年有开15k的.5年有要25K的.他大多数同事都达不到java 开发5年的薪资水平. 他说感触太深.最近java特别火.我说java一直很火.java程序员在深南大道上一抓一大把.他说人多竞争应该更激烈更便宜才对.我说C#没有抓住市场.被java抢占了蛮多的地盘.阵地已越来越少. 我说现在很火的大数据分析都是用的jav…
这也是我们聚会时常常做的游戏之一. 算法思路: 此处我使用循环链表模拟人围城一圈,每一个结点代表一个人.链表是一个有序链表,链表结点数据域是一个整型,代表人的序号.出局等同于链表删除元素,每次出局后重新从1k开始数.知道剩下最后一个.最后一个的判定是:while((p->num)!=(p->next->num)).循环跳出,就是到最后一个人. 算法代码如下: #include <stdio.h> #include <stdlib.h> #define NUM 5…
Event Loop 是 JavaScript 异步编程的核心思想,也是前端进阶必须跨越的一关.同时,它又是面试的必考点,特别是在 Promise 出现之后,各种各样的面试题层出不穷,花样百出.这篇文章从现实生活中的例子入手,让你彻底理解 Event Loop 的原理和机制,并能游刃有余的解决此类面试题. 宇宙条那道烂大街的笔试题镇楼 async function async1() { console.log('async1 start'); await async2(); console.lo…
单线程 众所周知,JS是单线程的语言,之所以是单线程,用一句烂大街的话就是,如果两个线程同时操作一个DOM节点,那么该以哪个为准呢,虽然多线程也有办法解决,但是js毕竟是浏览器脚本语言,不需要那么复杂 但是单线程遇到多个任务,需要排队执行,如果遇到定时器任务或者ajax请求等等,那会严重影响用户体验,于是将异步任务暂时挂起,先运行后面的任务,等异步操作返回了结果,再来执行 所以把任务分为两种,一种是同步任务(synchronous),另一种是异步任务(asynchronous),同步任务是指在主…