面试总结

这篇文章主要总结在近期面试中遇到的答不上来或者答不完整的问题。题目都是自行查阅整理,不知道是不是面试官想要的答案。

1. JSBridge

JSBridge是连接Native(客户端)和JavaScript前端的桥梁,通过JSBridge 两端的代码才可以通信。
native访问h5方法,只需在h5全局定义一个方法,native即可以调用。
h5调用native方法,1)API注入,native将方法挂在window上,h5使用window.xxx来调用;2)拦截url,将url(自定义scheme:'ownHttp://xxx')放入iframe中插入页面(display:none),native拦截url执行原生方法;3)h5的console,alert,prompt能够被native拦截console.log('ownHttp://xxx')

2. redux 和 context 区别

redux是做状态管理的,使用store存储数据,action触发事件,使用dispatch,reducer处理时间,用来修改状态。
context提供了无需传递props就可以向组件传递数据的方法。
两者区别或者怎么选择?
redux提供了对状态的修改方法,而context只是单纯的取值。如果您正在处理一个更复杂的应用程序,并希望查看您的应用程序的所有dispatch操作的历史记录,“点击”其中任何一个并跳转到该时间点,然后绝对考虑使用Redux。但是,如果你只想让一些数据全局化以便从一堆组件中访问它大可不必使用redux而用context。

3. react native 热更新原理

暂时不好整理,等我实际用到有所领悟再来补充把。
// TODO

4. 异常处理

  1. 使用 try-catch 语句
  2. onerror:任何没有通过try-catch处理的错误都会触发window对象的error事件。
    将错误保存到服务器,标明是来自前端。利用img中的src路径可以访问跨域的地址,将错误传到后端。
function logError(msg){
  let img = new Image();
  img.src = `http://xxx?msg=${encodeURIComponent(msg)}`
}

try{
}catch(err){
  logError(err)
}

5. react hooks有什么缺点

  1. 目前暂时还没有对应不常用的 getSnapshotBeforeUpdate,getDerivedStateFromError 和 componentDidCatch 生命周期的 Hook 等价写法。
  2. 目前 Hook 还处于早期阶段,一些第三方的库可能还暂时无法兼容 Hook。

额,不知道面试官想到的是不是这个答案...

6. 虚拟dom除了渲染方面性能好,还有什么优点

优点:

  1. 保证性能下限: 框架的虚拟 DOM 需要适配任何上层 API 可能产生的操作,它的一些 DOM 操作的实现必须是普适的,所以它的性能并不是最优的;但是比起粗暴的 DOM 操作性能要好很多,因此框架的虚拟 DOM 至少可以保证在你不需要手动优化的情况下,依然可以提供还不错的性能,即保证性能的下限;
  2. 无需手动操作 DOM: 我们不再需要手动去操作 DOM,只需要写好 View-Model 的代码逻辑,框架会根据虚拟 DOM 和 数据双向绑定,帮我们以可预期的方式更新视图,极大提高我们的开发效率;
  3. 跨平台: 虚拟 DOM 本质上是 JavaScript 对象,而 DOM 与平台强相关,相比之下虚拟 DOM 可以进行更方便地跨平台操作,例如服务器渲染、weex 开发等等。

缺点:
无法进行极致优化: 虽然虚拟 DOM + 合理的优化,足以应对绝大部分应用的性能需求,但在一些性能要求极高的应用中虚拟 DOM 无法进行针对性的极致优化。
首次渲染大量DOM时,由于多了一层虚拟DOM的计算,会比innerHTML插入慢。

7. 强制缓存中cache-control设为no-cache后,就一定没有缓存吗,协商缓存的缓存放在那里?

缓存是指代理服务器客户端本地磁盘内保存的资源副本。利用缓存可减少对源服务器的访问,因此也就节省了通信流量和通信时间。
缓存服务器是代理服务器的一种,并归类在缓存代理类型中。换句话说,当代理转发从服务器返回的响应时,代理服务器将会保存一份资源的副本
no-cache — 设了no-cache也可以在本地或者proxy服务器进行缓存,但是每次发起请求都要去服务器验证,服务器返回可以使用缓存,才可以真正使用本地缓存,任何节点都不能直接使用缓存。
协商缓存的缓存放在代理服务器。

8. 解释状态码 301 永久性定向和 302 临时性定向

301: 永久性重定向。表示请求的资源已被更改为新的URI,以后应使用资源现在所指的 URI。如果已经把资源对应的 URI 保存为书签了,这时应该按 Location 首部字段提示的 URI 重新保存。
302:临时性重定向。该状态码表示请求的资源已被分配了新的 URI,希望用户(本次)能使用新的 URI 访问。已移动的资源对应的 URI 将来还有可能发生改变。
303:该状态码表示由于请求对应的资源存在着另一个 URI,应使用 GET 方法定向获取请求的资源。303 状态码和 302 Found 状态码有着相同的功能,但 303 状态码明确 表示客户端应当采用 GET 方法获取资源,这点与 302 状态码有区 别。
304:该状态码表示客户端发送附带条件的请求(附带条件的请求是指采用 GET方法的请求报文中包含 If-Match,If-Modified- Since,If-None-Match,If-Range,If-Unmodified-Since 中任一首部。) 时,服务器端允许请求访问资源,但未满足条件的情况(有缓存,没有更新页面)。
403 Forbidden:被拒绝了
500 Internal Server Error:该状态码表明服务器端在执行请求时发生了错误。也有可能是 Web 应用存在的 bug 或某些临时的故障。
503 Service Unavailable:该状态码表明服务器暂时处于超负载或正在进行停机维护,现在无法 处理请求。

9. 0.1+0.1 != 0.3 js数值精度问题,转换成二进制计算导致精度丢失,那么详细讲讲精度是怎么丢失的

恕我无法描述出来,
请参考:
彻底弄懂:0.1+0.2 != 0.3
0.1+0.2 !== 0.3?

10. 手写迭代器

function iterator(arr) {
  let i = 0
  return {
    next: () => {
      return {
        value: i < arr.length ? arr[i++] : undefined,
        done:i < arr.length ? false : true,
      }
    }
  }
}
var it = iterator(['a', 'b']);
it.next() // { value: "a", done: false }
it.next() // { value: "b", done: false }
it.next() 

11. fib 斐波那契数列

题目:f(0) = 1, f(1) = 1, f(2) = 2, 实现 f(n) = f(n-1)+ f(n-2)
这道题目是在面试官的引导下完成的。首先写一个最简单的:

function f(n){
  if(n<2) return 1
  return f(n-1) + f(n-2)
} 

然后面试官问我,这样可以实现,但是f(n) = f(n-1) + f(n-2), f(n-1) = f(n-2) + f(n-3),在这样递归计算的过程中,有每个值都被多次计算,应该如何优化,考虑将计算过的值存起来。 鄙人无能,没想到实现方法,,,面试官提醒我可以利用Map,

var obj = new Map()
function f(n) {
  if (n < 2) return 1
  if (obj.has(n)) return obj.get(n)
  const value = f(n - 1) + f(n - 2)
  obj.set(n, value)
  return value
}

或者使用for循环来计算

var arr = [1, 1]
function f(n) {
  if(arr[n]) return arr[n]
  for (let i = 2; i <= n; i++) {
    arr[i] = arr[i - 1] + arr[i - 2]
  }
  return arr[n]
}

12. typeof null == 'object'原因

“typeof null 为"object", 原因是因为 不同的对象在底层都表示为二进制,在Javascript中二进制前三位都为0的话会被判断为Object类型,null的二进制表示全为0,自然前三位也是0,所以执行typeof时会返回"object"。
这个bug是第一版Javascript留下来的。在这个版本,数值是以32字节存储的,由标志位(1~3个字节)和数值组成。标志位存储的是低位的数据。这里有五种标志位:
000:对象,数据是对象的应用。
1:整型,数据是31位带符号整数。
010:双精度类型,数据是双精度数字。
100:字符串,数据是字符串。
110:布尔类型,数据是布尔值。
参考: https://blog.csdn.net/weixin_42952665/article/details/82750684

13. 实现深拷贝

我给出的答案:

var deepCopy = (function f(target) {
  if (typeof target !== 'object') return
  var newData = target instanceof Array ? [] : {};
  for (var item in target) {
    if (target.hasOwnProperty(item)) {
      newData[item] = typeof target[item] == 'object' ? f(target[item]) : target[item];
    }
  }
  return newData;
})

面试官灵魂拷问1: 第一句if (typeof target !== 'object') return 基础类型传进来就return了吗,什么也不返回? 我说那就把target再返回去。
2:typeof target !== 'object' 判断对象一定准确吗?碰到null怎么办?我心里默想那就再加一个判断它不是null,追问:碰到Date怎么办? 额,我心里想那要判断的有点多了,确实不合适。面试官指导:
对象类型的转换为字符串会变成 "[object Object]",null会变为"[object Null]",数组会变为"[object Array]",能否利用?
Object.prototype.toString.call(target)
3:newData[item] = typeof target[item] == 'object' ? f(target[item]) : target[item];这句不可以直接用newDate[item] = f(target[item])吗?我说基础类型走递归不太好吧,他说,如果第一句就return了target,那不也没执行下边的吗?
嚯,
经过我最终整理,实现如下:

var deepCopy = (function f(target) {
  // 将目标转换为字符串来判断类型,null转换为"[object Null]",
  // new Date():"[object Date]",数值:"[object Number]",字符串:"[object String]"等
  const type = Object.prototype.toString.call(target);
  let newData = type == '[object Object]' ? {} : (type == '[object Array]' ? [] : false)
  if(!newData) return target
  for (var item in target) {
    //只复制元素自身的属性,不复制原型链上的
    if (target.hasOwnProperty(item)) {
      newData[item] = f(target[item]);
    }
  }
  return newData;
})

这次应该没问题了把。。。

14. 列举会使GPU硬件加速的css属性

先来了解一下何为GPU硬件加速
就是将浏览器的渲染过程交给GPU处理,而不是使用自带的比较慢的渲染器。这样就可以使得animation与transition更加顺畅。一般一个元素开启硬件加速后会变成合成层,可以独立于普通文档流中,改动后可以避免整个页面重绘,提升性能,因此我们可以在浏览器中用css开启硬件加速,使GPU (Graphics Processing Unit) 发挥功能。
可以触发硬件加速的css属性
transform
opacity
filter
为什么硬件加速会使页面流畅
因为 transform 属性不会触发浏览器的 repaint(重绘),而绝对定位absolute中的 left 和 top 则会一直触发 repaint(重绘)。
为什么 transform 没有触发 repaint 呢?简而言之,transform 动画由GPU控制,支持硬件加速,并不需要软件方面的渲染。
如何开启硬件加速?
CSS animations, transforms 以及 transitions 不会自动开启GPU加速,3d动画才会开启:translateZ( ) 或 translate3d( ),但是很多时候并不需要3d变换:

webkit-transform : translateZ ( 0 ) ;
-moz-transform : translateZ ( 0 ) ;
-ms-transform : translateZ ( 0 ) ;
-o-transform : translateZ ( 0 ) ;
transform : translateZ ( 0 ) ;
webkit-transform : translate3d ( 0 , 0 , 0 ) ;
-moz-transform : translate3d ( 0 , 0 , 0 ) ;
-ms-transform : translate3d ( 0 , 0 , 0 ) ;
-o-transform : translate3d ( 0 , 0 , 0 ) ;
transform : translate3d ( 0 , 0 , 0 ) ;

在 Chrome and Safari中,当我们使用CSS transforms 或者 animations时可能会有页面闪烁的效果,下面的代码可以修复此情况:

   -webkit-backface-visibility: hidden;
   -moz-backface-visibility: hidden;
   -ms-backface-visibility: hidden;
   backface-visibility: hidden;
   -webkit-perspective: 1000;
   -moz-perspective: 1000;
   -ms-perspective: 1000;
   perspective: 1000;

15. 列举pc端和移动端的兼容性问题和解决方案

移动端:

  1. 不同浏览器的最小字体不同,有的是10px,有的是12px
    解决办法:设置字体时,不要小于12px,如果一定要小于12px,使用transform:sacle()进行缩放
  2. 透明度opacity
    解决办法:IE8 以及更早的版本支持替代的 filter 属性。例如:filter:Alpha(opacity=50)
  3. Input 的placeholder会出现文本位置偏上的情况
    input 的placeholder会出现文本位置偏上的情况:PC端设置line-height等于height能够对齐,而移动端仍然是偏上,解决是设置line-height:normal

PC端:

  1. 如果图片加a标签在IE9-中会有边框
    解决方案:img{border:none;}
  2. display:inline-block ie6/7不支持
    解决方案: display:inline;
  3. 标准的事件绑定方法函数为addEventListener,但IE下是attachEvent;

16. SEO(搜索引擎优化)

SEO的存在就是为了提升网页在搜索引擎自然搜索结果中的收录数量以及排序位置而做的优化行为。而优化的目的就是为了提升网站在搜索引擎中的权重,增加对搜索引擎的友好度,使得用户在访问网站时能排在前面。
如何做?

  1. 网站结构布局优化:尽量简单、开门见山,提倡扁平化结构
    (1) 控制首页链接数量
    (2) 扁平化的目录层次
    (3) 导航优化:导航应该尽量采用文字方式,也可以搭配图片导航,标签必须添加“alt”和“title”属性,告诉搜索引擎导航的定位。在每一个网页上应该加上面包屑导航。
    (4)网站的结构布局---不可忽略的细节
    (5)利用布局,把重要内容HTML代码放在最前
    (6)控制页面的大小,减少http请求,提高网站的加载速度
  2. 网页代码优化
    (1)突出重要内容---合理的设计、<meta description>和<meta keywords><br> (2)语义化书写HTML代码,符合W3C标准.eg:标题用h1-h6,列表用ul,li,重要文字用strong<br> (3)<a>标签:页内链接,要加 “title” 属性加以说明,让访客和 “蜘蛛” 知道。而外部链接,链接到其他网站的,则需要加上 el="nofollow" 属性, 告诉 “蜘蛛” 不要爬,因为一旦“蜘蛛”爬了外部链接之后,就不会再回来了。<br> 等。。。</li> <li>前端网站性能优化<br> (1)减少http请求数量.CSS Sprites(图片精灵),合并CSS和JS文件(使用grunt、gulp、webpack等),采用lazyload(懒加载)<br> (2)控制资源文件加载优先级<br> (3)尽量外链CSS和JS(结构、表现和行为的分离),保证网页代码的整洁,也有利于日后维护<br> (4)利用浏览器缓存<br> (5)减少重排(Reflow)<br> (6)减少 DOM 操作<br> (7)图标使用IconFont替换<br> 等。。。</li> </ol> <p>参考:https://juejin.cn/post/6844903824428105735</p> <h3>17. SSR</h3> <h5>是什么?</h5> <p>server side render,服务端渲染。即:SSR大致的意思就是客户端将标签渲染成的整个 html 片段的工作在服务端完成,服务端形成的html 片段直接返回给客户端这个过程就叫做服务端渲染。</p> <h5>优缺点?</h5> <p>优点:</p> <ol> <li> <strong>更好的 SEO</strong>。 因为 SPA (单页面应用)页面的内容是通过 Ajax 获取,而搜索引擎爬取工具并不会等待 Ajax 异步完成后再抓取页面内容,所以在 SPA 中是抓取不到页面通过 Ajax 获取到的内容;而 SSR 是直接由服务端返回已经渲染好的页面(数据已经包含在页面中),所以搜索引擎爬取工具可以抓取渲染好的页面。</li> <li> <strong>更快的内容到达时间(首屏加载更快)</strong>: SPA 会等待所有编译后的 js 文件都下载完成后,才开始进行页面的渲染,文件下载等需要一定的时间等,所以首屏渲染需要一定的时间;SSR 直接由服务端渲染好页面直接返回显示,无需等待下载 js 文件及再去渲染等,所以 SSR 有更快的内容到达时间。</li> </ol> <p>缺点:</p> <ol> <li> <strong>更多的开发条件限制</strong>: 例如服务端渲染在vue中只支持beforCreate和 created 两个钩子函数,这会导致一些外部扩展库需要特殊处理,才能在服务端渲染应用程序中运行;并且与可以部署在任何静态文件服务器上的完全静态单页面应用程序SPA不同,服务端渲染应用程序,需要处于 Node.js server 运行环境;</li> <li> <strong>更多的服务器负载</strong>:在 Node.js 中渲染完整的应用程序,显然会比仅仅提供静态文件的 server 更加大量占用CPU 资源 (CPU-intensive - CPU 密集),因此如果你预料在高流量环境 ( high traffic ) 下使用,请准备相应的服务器负载,并明智地采用缓存策略。</li> </ol> <p>参考: https://juejin.cn/post/6913752813403111438</p> <h3>18. PWA</h3> <p>PWA全称Progressive Web App,即渐进式WEB应用。</p> <p>一个 PWA 应用首先是一个网页, 可以通过 Web 技术编写出一个网页应用. 随后添加上 App Manifest 和 Service Worker 来实现 PWA 的安装和离线等功能<br> 解决了哪些问题?</p> <ul> <li>可以添加至主屏幕,点击主屏幕图标可以实现启动动画以及隐藏地址栏</li> <li>实现离线缓存功能,即使用户手机没有网络,依然可以使用一些离线功能</li> <li>实现了消息推送</li> </ul> <p>它解决了上述提到的问题,这些特性将使得 Web 应用渐进式接近原生 App。<br> 参考:<br> 讲讲PWA<br> Service Worker</p> </article> </div> </div> </div> <!--PC和WAP自适应版--> <div id="SOHUCS" sid="1692017602370547712"></div> <script type="text/javascript" src="/views/front/js/chanyan.js"></script> <!-- 文章页-底部 动态广告位 --> <div class="youdao-fixed-ad" id="detail_ad_bottom"></div> </div> <div class="col-md-3"> <div class="row" id="ad"> <!-- 文章页-右侧1 动态广告位 --> <div id="right-1" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_1"> </div> </div> <!-- 文章页-右侧2 动态广告位 --> <div id="right-2" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_2"></div> </div> <!-- 文章页-右侧3 动态广告位 --> <div id="right-3" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_3"></div> </div> </div> </div> </div> </div> </div> <div class="container"> <h4 class="pt20 mb15 mt0 border-top">你可能感兴趣的:(面试总结)</h4> <div id="paradigm-article-related"> <div class="recommend-post mb30"> <ul class="widget-links"> <li><a href="/article/1831136842355929088.htm" title="java正则表达式提取字符串中的序号,BAT大厂面试总结" target="_blank">java正则表达式提取字符串中的序号,BAT大厂面试总结</a> <span class="text-muted">qq_38514574</span> <a class="tag" taget="_blank" href="/search/%E7%A8%8B%E5%BA%8F%E5%91%98/1.htm">程序员</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E7%BB%8F%E9%AA%8C%E5%88%86%E4%BA%AB/1.htm">经验分享</a><a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a> <div>第一个:Alibaba[搜索推荐]一面:算法题:长度为n的数组里放了n+1个大小在[1,n]的数,必然至少有一个重复的数,找出来二面:概率题:求一根绳子被切两刀能组成一个三角形的概率。三面主管面:FM推导,deepfm原理,graphembedding,问了之前的一些项目。四面交叉面:模型上线时应该注意的事,如果请求过高模型服务挂了怎么办,tensorflow和torch的区别,如何降低模型复杂度</div> </li> <li><a href="/article/1827792703228833792.htm" title="护网面试总结" target="_blank">护网面试总结</a> <span class="text-muted">炫彩@之星</span> <a class="tag" taget="_blank" href="/search/%E5%AE%89%E5%85%A8%E9%9D%A2%E8%AF%95%E7%BB%8F%E5%8E%86%E7%B3%BB%E5%88%97/1.htm">安全面试经历系列</a><a class="tag" taget="_blank" href="/search/%E5%AE%89%E5%85%A8%E6%80%A7%E6%B5%8B%E8%AF%95/1.htm">安全性测试</a><a class="tag" taget="_blank" href="/search/web%E5%AE%89%E5%85%A8/1.htm">web安全</a><a class="tag" taget="_blank" href="/search/%E5%AE%89%E5%85%A8/1.htm">安全</a> <div>护网面试总结1.设备误报如何处理?包含有SQL语句和一些危险函数都有可能产生误报来自外网的误报说明安全设备需要进行策略升级,不需要处置。如果是来自内网的误报可以和负责人协商一下看能不能解决,有必要的话添加白名单处理。2.如何区分扫描流量和手工流量?1.扫描流量数据量大,请求流量有规律可循且频率较高,手工流量请求少,间隔略长2.使用工具扫描的流量一般在数据包中有相关特征信息,比如说通过wiresha</div> </li> <li><a href="/article/1827645615505502208.htm" title="前端面试总结——原型和原型链" target="_blank">前端面试总结——原型和原型链</a> <span class="text-muted">旺sir</span> <a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a> <div>1.classclassPeople{constructor(name){this.name=name;}eat(){console.log(this.name+'iseatingsomething')}}constzhangsan=newPeople(张三);console.log(zhangsan.name);zhangsan.eat();classStudentextendsPeople{c</div> </li> <li><a href="/article/1826313816544210944.htm" title="模拟面试总结" target="_blank">模拟面试总结</a> <span class="text-muted">孤独斗士</span> <a class="tag" taget="_blank" href="/search/%E6%A8%A1%E6%8B%9F%E9%9D%A2%E8%AF%95/1.htm">模拟面试</a><a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AF%95%E9%A2%98/1.htm">笔试题</a><a class="tag" taget="_blank" href="/search/1024%E7%A8%8B%E5%BA%8F%E5%91%98%E8%8A%82/1.htm">1024程序员节</a> <div>一轮模拟面试总结:1.模拟面试前先通知大家:自我介绍重点、面试常见技术问题2.面试期间:每人提问三到四个问题。回答不了三个问题就是不通过。百分制70分通过。常见面试问题有:形式可以一次三人(抢答),或者一次一人(一对一)基本数据类型switch分支结构比较相等++--包装类oop常见概念方法重载、方法重写try-catch-finallyfinalizethrowthrows自定义异常异常分类实体</div> </li> <li><a href="/article/1759913089731489792.htm" title="批批网PHP面试总结" target="_blank">批批网PHP面试总结</a> <span class="text-muted">沙蒿同学</span> <div>表现差的点:1、人事评论我比较真实,但不愿意倾听,可能自己话讲得太多,给人事主观上的感觉2、自我介绍语无伦次,不知道要讲什么好,就按着自己的性子讲,多次被打断,然后紧接着问了以下几个问题回答的不好:3、在之前项目中处理过最难的技术问题,我回答架构日志的原因问题排查不好确定,效率不高,被面试官反问这不是技术问题。4、问到我的优势是什么,能力强体现在哪,一时语顿,我说业务解读能力,面试官说这是每个开发</div> </li> <li><a href="/article/1759623980907589632.htm" title="阿里Java技术面试题,我就服这一文!" target="_blank">阿里Java技术面试题,我就服这一文!</a> <span class="text-muted">Java架构007</span> <div>金三银四跳槽季即将到来,作为Java开发者你开始刷面试题了吗?别急,小编整理了阿里技术面试题,看这一文就够了!阿里面试题目目录技术一面(基础面试题目)技术二面(技术深度、技术原理)项目实战(项目模拟面试)JAVA开发技术常问的问题阿里必会知识阿里面试范畴面试总结文章福利(答案获取)一:阿里技术一面(基础掌握牢固)常用的异常类型?sessionjava锁gc原理hashmaplistlinkarra</div> </li> <li><a href="/article/1757545612225560576.htm" title="一个三年Java程序员的面试总结!绝对会对你有所帮助!" target="_blank">一个三年Java程序员的面试总结!绝对会对你有所帮助!</a> <span class="text-muted">java成功之路</span> <div>前言15年毕业到现在也近三年了,最近面试了阿里集团(菜鸟网络,蚂蚁金服),网易,滴滴,点我达,最终收到点我达,网易offer,蚂蚁金服二面挂掉,菜鸟网络一个月了还在流程中...最终有幸去了网易。但是要特别感谢点我达的领导及HR,真的非常非常好,很感谢他们一直的关照和指导。面试整体事项1.简历要准备好,联系方式一定要正确清晰醒目,项目经历按照时间倒序阐述,注意描述自己在项目中承担的职责,简历的模板尽</div> </li> <li><a href="/article/1757146381706870784.htm" title="安卓面试总结——提升" target="_blank">安卓面试总结——提升</a> <span class="text-muted">Alex_ecb1</span> <div>1.热修复的几种方式1.通过更改dex加载顺序实现热修复热修复是基于dex分包方案,和Android虚拟机的类加载器(ClassLoader)实现的在打包apk的时候,会把java文件通过类加载器编译成class文件,然后把class文件组合成class.dex文件,dex文件会把每一个类的id检索起来,存在一个链表里面。将编译好的class文件,拆分成多个dex文件,将应用启动时必须用到的类和这</div> </li> <li><a href="/article/1757010057356132352.htm" title="纯干货!Android性能优化面试题集锦,持续更新中" target="_blank">纯干货!Android性能优化面试题集锦,持续更新中</a> <span class="text-muted">程序员大婕</span> <a class="tag" taget="_blank" href="/search/%E7%A8%8B%E5%BA%8F%E5%91%98/1.htm">程序员</a><a class="tag" taget="_blank" href="/search/Android/1.htm">Android</a> <div>第一次观看我文章的朋友,可以关注、点赞、转发一下,每天分享各种干货技术和程序猿趣事前言随着移动终端的快速发展,Android开发人员也越来越多,Android开发市场也进入了一个饱和的状态,Android开发人员也面临着难找一份好工作的处境。而找工作的第一关就是面试,一个好的面试往往能很好的提高你的入职几率,下面我总结了一些本人在一些大厂的面试总结,希望的观看的小伙伴有所帮助。Android基础&</div> </li> <li><a href="/article/1756617962296459264.htm" title="10年Java面试总结:Java程序员面试必备的面试技巧" target="_blank">10年Java面试总结:Java程序员面试必备的面试技巧</a> <span class="text-muted"></span> <a class="tag" taget="_blank" href="/search/java%E7%A8%8B%E5%BA%8F%E5%91%98%E9%9D%A2%E8%AF%95%E9%9D%A2%E8%AF%95%E9%97%AE%E9%A2%98%E7%BB%8F%E9%AA%8C/1.htm">java程序员面试面试问题经验</a> <div>作为一名资深10年Java技术专家,我参与了无数次的面试,无论是作为面试者还是面试官。在这里,我将分享我的一些面试经历和面试技巧,希望能帮助即将面临面试的Java程序员们。本文已收录于,我的技术网站ddkk.com,有大厂完整面经,工作技术,架构师成长之路,等经验分享我的面试经历回顾我的Java职业生涯,我清晰地记得一次特别的面试经历。那是我申请一家知名科技公司的Java开发岗位。为了这次面试,我</div> </li> <li><a href="/article/1756617027805528064.htm" title="前端面试总结" target="_blank">前端面试总结</a> <span class="text-muted"></span> <a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF%E9%9D%A2%E8%AF%95/1.htm">前端面试</a> <div>一:浏览器事件循环机制个人理解(EventLoop)1:浏览器进程模型要理解浏览器事件循环机制首先要明白浏览器的进程模型,进程就是一个程序运行需要给其分配一块专属的内存空间,可以把这块内存空间简单理解为进程。进程之间是相互独立的,如果进程之间需要通信则需要对方同意。2:线程模型既然分配内存空间有了进程之后就可以运行程序了,程序运行之后总需要有人干活,这是就需要引入线程的概念,程序运行之后会默认开启</div> </li> <li><a href="/article/1756431878501449728.htm" title="数分面试总结3" target="_blank">数分面试总结3</a> <span class="text-muted">悠悠zzz</span> <div>这部分记录面试经历和面后复盘。面试前的准备部分熟悉简历:1.1建议把简历的自我介绍,各个项目的描述细节都写下来,然后多次背诵,要说到顺口,张口就来的程度。这部分不卡壳是很加分的。1.2建议把面试官可能针对简历询问的问题都提前做准备,比如为什么当时选择这个指标,为什么不选择别的,逻辑支撑是什么,指标的前后变化有多少等等。1.3建议把学校背景方面也做一个熟悉。本人曾经在介绍学校的时候把在校时间记混了,</div> </li> <li><a href="/article/1756342315930107904.htm" title="面试总结" target="_blank">面试总结</a> <span class="text-muted">weixin_30511107</span> <a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a> <div>自我介绍:我叫XX,17年七月份毕业于XX大学XX专业,研究方向是JavaWeb,主要做管理方面的一些网站,包括学生选课系统,学生宿舍管理系统,校医院体检系统,16年11月份到17年的4月份之间在百度搜索公司商业服务质量部网盟团队实习,实习的职位是测试开发,测试网盟的大数据产品中的受众数据管理平台DMP,DMP主要是对人群属性和人群行为进行分析,计算出广告投放的最佳目标人群,帮助广告主选择将广告投</div> </li> <li><a href="/article/1755948348893839360.htm" title="京东面试总结" target="_blank">京东面试总结</a> <span class="text-muted">小小少年Boy</span> <div>1数据仓库的概念?和数据库的区别?2hdfs上传文件有哪几种方式?3Hive的优化问题?4Hive的数据倾斜问题?5数据分析?概念和总结6Django源码?7python的浅拷贝和深拷贝?总结:HDFS基本命令总结Hive基本命令总结HBase基本命令总结Hive优化问题?HBase优化问题?出现的问题:大数据开发没有理论支撑,应该可以涉及多一点的应用方面;其次引导面试官提问MapReduce;在</div> </li> <li><a href="/article/1755038535494156288.htm" title="超全前端面试(全!全!全!!!)" target="_blank">超全前端面试(全!全!全!!!)</a> <span class="text-muted">蔡宝儿</span> <div>笔者通过平时面试总结以及面试别人常提的问题,结合自己认为非常重要的前端各技术栈的知识点,总结了这篇中高级前端面试。让需要的小伙伴所阅读,让不在大厂的小伙伴提前了解大厂前端面试官常问的各种常见前端问题。首先拿出我珍藏很久的前端面试题:web前端开发工程师(vue)|智一面初级web前端|智一面Html51、HTML5新特性有哪些?添加了video,radio标签添加了canvas画布和svg,渲染矢</div> </li> <li><a href="/article/1754736025332105216.htm" title="数据库MySQL基本知识及面试总结——全新回归" target="_blank">数据库MySQL基本知识及面试总结——全新回归</a> <span class="text-muted">尚墨1111</span> <a class="tag" taget="_blank" href="/search/Java%E5%90%8E%E7%AB%AF%E9%9D%A2%E8%AF%95%E5%87%86%E5%A4%87/1.htm">Java后端面试准备</a><a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/big/1.htm">big</a><a class="tag" taget="_blank" href="/search/data/1.htm">data</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a> <div>文章目录数据库MySQL基本知识及面试总结1.基本内容1.1数据库三大范式是什么1.2一条sql语句在mysql中如何执行1.3MySQL性能瓶颈1.4数据库调优1.5说一说drop、delete与truncate的区别1.6基本语法1.6.1创建1.6.2逻辑运算符1.6.3通配符1.6.4聚合函数1.6.5过滤分组1.6.6笛卡尔积1.6.7连接查询1.6.8SQL注入2.存储引擎2.1Mys</div> </li> <li><a href="/article/1754666998303834112.htm" title="50w字+的Java技术类校招面试题汇总,BAT大厂面试总结" target="_blank">50w字+的Java技术类校招面试题汇总,BAT大厂面试总结</a> <span class="text-muted">Java范德萨</span> <a class="tag" taget="_blank" href="/search/%E7%A8%8B%E5%BA%8F%E5%91%98/1.htm">程序员</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E7%BB%8F%E9%AA%8C%E5%88%86%E4%BA%AB/1.htm">经验分享</a><a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a> <div>Redis什么是Redis?Redis的数据类型?使用Redis有哪些好处?Redis相比Memcached有哪些优势?Memcache与Redis的区别都有哪些?Redis是单进程单线程的?一个字符串类型的值能存储最大容量是多少?Redis的持久化机制是什么?各自的优缺点?Redis常见性能问题和解决方案:redis过期键的删除策略?Redis的回收策略(淘汰策略)?为什么Redis需要把所有数</div> </li> <li><a href="/article/1754377844894482432.htm" title="Java后端面试总结" target="_blank">Java后端面试总结</a> <span class="text-muted">妳嘚是个瓜怂</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>Java语言具有哪些特点?Java为纯面向对象的语言。它能够直接反应现实生活中的对象。具有平台无关性。java利用Java虚拟机运行字节码,无论是在Windows、Linux还是MacOS等其它平台对Java程序进行编译,编译后的程序可在其它平台运行。Java为解释型语言,编译器把Java代码编译成平台无关的中间代码,然后在JVM上解释运行,具有很好的可移植性。Java提供了很多内置类库。如对多线</div> </li> <li><a href="/article/1753741859315793920.htm" title="java面试总结" target="_blank">java面试总结</a> <span class="text-muted">weixin_30387663</span> <a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a><a class="tag" taget="_blank" href="/search/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/1.htm">操作系统</a> <div>Java基础1、Hashmap是怎么实现的,底层原理?HashMap的底层使用数组+链表/红黑树实现。transientNode[]table;这表示HashMap是Node数组构成,其中Node类的实现如下,可以看出这其实就是个链表,链表的每个结点是一个映射。staticclassNodeimplementsMap.Entry{finalinthash;finalKkey;Vvalue;Node</div> </li> <li><a href="/article/1753661373901979648.htm" title="2024个人前端面试总结(八股文+项目情况)持续更新" target="_blank">2024个人前端面试总结(八股文+项目情况)持续更新</a> <span class="text-muted">歪比巴卜~~</span> <a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/es6/1.htm">es6</a><a class="tag" taget="_blank" href="/search/html/1.htm">html</a><a class="tag" taget="_blank" href="/search/vue.js/1.htm">vue.js</a> <div>JavaScriptJs的数据类型有哪些他们的区别是什么基本数据类型:NumberStringBooleanNullUndefinedSymbol(ES6)(他们直接存储在内存中的,占用固定的内存空间。基本数据类型的赋值是通过将值直接复制给变量来完成的。)引用数据类型:ObjectArrayDateFunction()(它们存储的是对象在内存中的地址,而不是对象本身。引用数据类型的变量实际上存储的</div> </li> <li><a href="/article/1753430547876560896.htm" title="【面试总结系列】在开发 PC 端项目时,需要考虑哪些主流设备浏览器兼容性的问题?" target="_blank">【面试总结系列】在开发 PC 端项目时,需要考虑哪些主流设备浏览器兼容性的问题?</a> <span class="text-muted">八了个戒</span> <a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF%E9%9D%A2%E8%AF%95/1.htm">前端面试</a><a class="tag" taget="_blank" href="/search/%E9%97%AE%E9%A2%98%E8%A7%A3%E5%86%B3/1.htm">问题解决</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/%E5%86%85%E6%A0%B8/1.htm">内核</a><a class="tag" taget="_blank" href="/search/css/1.htm">css</a><a class="tag" taget="_blank" href="/search/html/1.htm">html</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a> <div>一、问题描述在开发PC端项目时,需要考虑哪些兼容性的问题?二、答案详解首先,为什么会出现浏览器兼容问题?各大厂商出于自身利益考虑而设置的种种技术壁垒,都让CSS应用起来比想象得要麻烦;由于各大主流浏览器由不同的厂家开发,所用的核心架构和代码也很难重和,这就为各种莫名其妙的Bug(代码错误)提供了温床。介绍一下目前最流行的五大浏览器以及五大内核浏览器:IE浏览器Firefox(火狐)浏览器Chrom</div> </li> <li><a href="/article/1753091244248023040.htm" title="Java高级进阶面试总结(全面,实时更新)" target="_blank">Java高级进阶面试总结(全面,实时更新)</a> <span class="text-muted">今天背单词了吗980</span> <a class="tag" taget="_blank" href="/search/%E7%9B%B4%E9%9D%A2Java/1.htm">直面Java</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a> <div>Java类加载过程1.加载加载时类加载的第一个过程,在这个阶段,将完成一下三件事情:通过一个类的全限定名获取该类的二进制流。将该二进制流中的静态存储结构转化为方法去运行时数据结构。在内存中生成该类的Class对象,作为该类的数据访问入口。2.验证验证的目的是为了确保Class文件的字节流中的信息不回危害到虚拟机.在该阶段主要完成以下四钟验证:文件格式验证:验证字节流是否符合Class文件的规范,如</div> </li> <li><a href="/article/1753091116246253568.htm" title="Java基础知识面试总结(全面,实时更新)" target="_blank">Java基础知识面试总结(全面,实时更新)</a> <span class="text-muted">今天背单词了吗980</span> <a class="tag" taget="_blank" href="/search/%E7%9B%B4%E9%9D%A2Java/1.htm">直面Java</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a> <div>sleep和wait区别1.sleep方法属于Thread类中的方法释放cpu给其它线程不释放锁资源sleep(1000)等待超过1s被唤醒2.wait方法属于Object类中的方法释放cpu给其它线程,同时释放锁资源wait(1000)等待超过1s被唤醒wait()一直等待需要通过notify或者notifyAll进行唤醒wait方法必须配合synchronized一起使用####锁释放时机代码</div> </li> <li><a href="/article/1753091116997033984.htm" title="JavaMVC框架面试总结(全面,实时更新)" target="_blank">JavaMVC框架面试总结(全面,实时更新)</a> <span class="text-muted">今天背单词了吗980</span> <a class="tag" taget="_blank" href="/search/%E7%9B%B4%E9%9D%A2Java/1.htm">直面Java</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a> <div>谈一下SpringMVC的工作流程1.用户发送请求至前端控制器DispatcherServlet2.DispatcherServlet收到请求调用HandlerMapping处理器映射器。3.处理器映射器找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。4.DispatcherServlet调用HandlerAdapter处理器适配器5.H</div> </li> <li><a href="/article/1753091117831700480.htm" title="Java微服务框架面试总结(全面,实时更新)" target="_blank">Java微服务框架面试总结(全面,实时更新)</a> <span class="text-muted">今天背单词了吗980</span> <a class="tag" taget="_blank" href="/search/%E7%9B%B4%E9%9D%A2Java/1.htm">直面Java</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%BE%AE%E6%9C%8D%E5%8A%A1/1.htm">微服务</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a> <div>常用的微服务架构有哪些1.SpringCloud:基于HTTP(s)的REST服务构建服务体系,SpringCloud能够帮助架构师构建一整套完整的微服务架构技术生态链。2.Dubbo:由阿里巴巴开源的分布式服务化治理框架,通过RPC请求方式访问。Dubbo是在阿里巴巴的电商平台中逐渐探索演进所形成的,经历过复杂业务的高并发挑战,比SpringCloud的开源时间还要早。3.Dropwizard:</div> </li> <li><a href="/article/1752841901448380416.htm" title="Redis精通系列——Pipeline,2021最新大厂高频微服务面试总结" target="_blank">Redis精通系列——Pipeline,2021最新大厂高频微服务面试总结</a> <span class="text-muted">m0_64867047</span> <a class="tag" taget="_blank" href="/search/%E7%A8%8B%E5%BA%8F%E5%91%98/1.htm">程序员</a><a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a> <div>在上述简介中,提到了管道技术优化的是网络传输的耗时时间,这里通过Redis客户端-服务端的一次完整的网络请求来回,深入探索pipeline的本质。客户端调用write将数据写入操作系统内核(kernel)为socket连接分配的发送缓冲区(sendbuffer)客户端操作系统内核将发送缓冲区(sendbuffer)的数据发送到网卡(NIC)网卡(NIC)将数据通过路由(route)将数据送到Red</div> </li> <li><a href="/article/1752540962682322944.htm" title="2022-03-17 面试总结" target="_blank">2022-03-17 面试总结</a> <span class="text-muted">网恋被骗二块二</span> <div>函数颗粒化?函数柯里化?暂时没有看懂案例,大意是通过return一个函数,然后执行fun(x)(y)实现一个快速调用?(待续。。。)memoReact.memo是高阶组件,使用memo有两个参数,一个是需要被控制的组件,一个是一个回调函数(返回true或false)具体原理同vue的beforeUpdate、React的shouldComponentWillUpdate(待实现Demo。。。)参考</div> </li> <li><a href="/article/1752014916031627264.htm" title="秋招面试总结" target="_blank">秋招面试总结</a> <span class="text-muted">秀秀的奇妙旅行</span> <a class="tag" taget="_blank" href="/search/%23/1.htm">#</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF%E9%9D%A2%E8%AF%95%E9%A2%98%E7%9B%AE%E6%B1%87%E6%80%BB/1.htm">前端面试题目汇总</a><a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95%2B%E7%A7%91%E7%A0%94%E7%9A%84%E6%80%BB%E7%BB%93/1.htm">面试+科研的总结</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a><a class="tag" taget="_blank" href="/search/vue.js/1.htm">vue.js</a><a class="tag" taget="_blank" href="/search/1024%E7%A8%8B%E5%BA%8F%E5%91%98%E8%8A%82/1.htm">1024程序员节</a> <div>一、第一次面试刚结束自己的第一个面试,来记录一下这次面试的体验以及需要加强的部分面试前边会根据你的项目提一些问题,比如我用的vue,那开始肯定要提问你vue的问题,所以vue必须要好好掌握一下,而且肯定会结合项目来的(权限管理之类的)后边就直接提问js+css的一些内容(面试官肯定直接根据列的题目提纲问了,这边没啥问题,当然也要防止他再回去结合项目问,)最后还问了对自己的工作有什么期望(提升前端技</div> </li> <li><a href="/article/1751982897583112192.htm" title="前端面试总结七" target="_blank">前端面试总结七</a> <span class="text-muted">猜不到我是谁</span> <a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF%E9%9D%A2%E8%AF%95/1.htm">前端面试</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF%E9%9D%A2%E8%AF%95/1.htm">前端面试</a> <div>1.JS的事件冒泡和事件捕获事件事件是文档和浏览器窗口中发生的特定的交互瞬间。事件是javascript应用跳动的心脏,也是把所有东西黏在一起的胶水,当我们与浏览器中web页面进行某些类型的交互时,事件就发生了。事件可能是用户在某些内容上的点击,鼠标经过某个特定元素或按下键盘上的某些按键,事件还可能是web浏览器中发生的事情,比如说某个web页面加载完成,或者是用户滚动窗口或改变窗口大小。事件流:</div> </li> <li><a href="/article/1751839978595303424.htm" title="2020java面试总结" target="_blank">2020java面试总结</a> <span class="text-muted">暮晓引流软件</span> <a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0%E8%B7%AF%E7%BA%BF/1.htm">学习路线</a><a class="tag" taget="_blank" href="/search/%E9%98%BF%E9%87%8C%E5%B7%B4%E5%B7%B4/1.htm">阿里巴巴</a><a class="tag" taget="_blank" href="/search/android/1.htm">android</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a> <div>博主背景:92年生,渣本毕业,java岗,经验接近6年,base上海本文宗旨:本文旨在将博主最近的面试经历分享给大家,并作些总结,尽量为在准备面试的同学缩小面试准备的范围,或者至少让同学们知道现在企业都问些啥,以及一些面试的注意事项,希望对你有参考作用本次面试情况:2020年7月中开始,持续3周多时间,面了13家,2家没过,1家意外,10家通过,如下:1)拍拍贷,业务岗资深技术专家+基础架构部资深</div> </li> <li><a href="/article/90.htm" title="java观察者模式" target="_blank">java观察者模式</a> <span class="text-muted">3213213333332132</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/1.htm">设计模式</a><a class="tag" taget="_blank" href="/search/%E6%B8%B8%E6%88%8F/1.htm">游戏</a><a class="tag" taget="_blank" href="/search/%E8%A7%82%E5%AF%9F%E8%80%85%E6%A8%A1%E5%BC%8F/1.htm">观察者模式</a> <div>观察者模式——顾名思义,就是一个对象观察另一个对象,当被观察的对象发生变化时,观察者也会跟着变化。 在日常中,我们配java环境变量时,设置一个JAVAHOME变量,这就是被观察者,使用了JAVAHOME变量的对象都是观察者,一旦JAVAHOME的路径改动,其他的也会跟着改动。 这样的例子很多,我想用小时候玩的老鹰捉小鸡游戏来简单的描绘观察者模式。 老鹰会变成观察者,母鸡和小鸡是</div> </li> <li><a href="/article/217.htm" title="TFS RESTful API 模拟上传测试" target="_blank">TFS RESTful API 模拟上传测试</a> <span class="text-muted">ronin47</span> <div>       TFS RESTful API 模拟上传测试。    细节参看这里:https://github.com/alibaba/nginx-tfs/blob/master/TFS_RESTful_API.markdown 模拟POST上传一个图片: curl --data-binary @/opt/tfs.png http</div> </li> <li><a href="/article/344.htm" title="PHP常用设计模式单例, 工厂, 观察者, 责任链, 装饰, 策略,适配,桥接模式" target="_blank">PHP常用设计模式单例, 工厂, 观察者, 责任链, 装饰, 策略,适配,桥接模式</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/1.htm">设计模式</a><a class="tag" taget="_blank" href="/search/PHP/1.htm">PHP</a> <div>// 多态, 在JAVA中是这样用的, 其实在PHP当中可以自然消除, 因为参数是动态的, 你传什么过来都可以, 不限制类型, 直接调用类的方法 abstract class Tiger { public abstract function climb(); } class XTiger extends Tiger { public function climb()</div> </li> <li><a href="/article/471.htm" title="hibernate" target="_blank">hibernate</a> <span class="text-muted">171815164</span> <a class="tag" taget="_blank" href="/search/Hibernate/1.htm">Hibernate</a> <div>main,save Configuration conf =new Configuration().configure(); SessionFactory sf=conf.buildSessionFactory(); Session sess=sf.openSession(); Transaction tx=sess.beginTransaction(); News a=new </div> </li> <li><a href="/article/598.htm" title="Ant实例分析" target="_blank">Ant实例分析</a> <span class="text-muted">g21121</span> <a class="tag" taget="_blank" href="/search/ant/1.htm">ant</a> <div>        下面是一个Ant构建文件的实例,通过这个实例我们可以很清楚的理顺构建一个项目的顺序及依赖关系,从而编写出更加合理的构建文件。           下面是build.xml的代码: <?xml version="1</div> </li> <li><a href="/article/725.htm" title="[简单]工作记录_接口返回405原因" target="_blank">[简单]工作记录_接口返回405原因</a> <span class="text-muted">53873039oycg</span> <a class="tag" taget="_blank" href="/search/%E5%B7%A5%E4%BD%9C/1.htm">工作</a> <div>         最近调接口时候一直报错,错误信息是:       responseCode:405 responseMsg:Method Not Allowed        接口请求方式Post. </div> </li> <li><a href="/article/852.htm" title="关于java.lang.ClassNotFoundException 和 java.lang.NoClassDefFoundError 的区别" target="_blank">关于java.lang.ClassNotFoundException 和 java.lang.NoClassDefFoundError 的区别</a> <span class="text-muted">程序员是怎么炼成的</span> <div>   真正完成类的加载工作是通过调用 defineClass来实现的;  而启动类的加载过程是通过调用 loadClass来实现的;  就是类加载器分为加载和定义   protected Class<?> findClass(String name) throws ClassNotFoundExcept</div> </li> <li><a href="/article/979.htm" title="JDBC学习笔记-JDBC详细的操作流程" target="_blank">JDBC学习笔记-JDBC详细的操作流程</a> <span class="text-muted">aijuans</span> <a class="tag" taget="_blank" href="/search/jdbc/1.htm">jdbc</a> <div>所有的JDBC应用程序都具有下面的基本流程:  1、加载数据库驱动并建立到数据库的连接。  2、执行SQL语句。  3、处理结果。  4、从数据库断开连接释放资源。 下面我们就来仔细看一看每一个步骤: 其实按照上面所说每个阶段都可得单独拿出来写成一个独立的类方法文件。共别的应用来调用。 1、加载数据库驱动并建立到数据库的连接:   Html代码  St</div> </li> <li><a href="/article/1106.htm" title="rome创建rss" target="_blank">rome创建rss</a> <span class="text-muted">antonyup_2006</span> <a class="tag" taget="_blank" href="/search/tomcat/1.htm">tomcat</a><a class="tag" taget="_blank" href="/search/cms/1.htm">cms</a><a class="tag" taget="_blank" href="/search/xml/1.htm">xml</a><a class="tag" taget="_blank" href="/search/struts/1.htm">struts</a><a class="tag" taget="_blank" href="/search/Opera/1.htm">Opera</a> <div>引用 1.RSS标准 RSS标准比较混乱,主要有以下3个系列 RSS 0.9x / 2.0 : RSS技术诞生于1999年的网景公司(Netscape),其发布了一个0.9版本的规范。2001年,RSS技术标准的发展工作被Userland Software公司的戴夫 温那(Dave Winer)所接手。陆续发布了0.9x的系列版本。当W3C小组发布RSS 1.0后,Dave W</div> </li> <li><a href="/article/1233.htm" title="html表格和表单基础" target="_blank">html表格和表单基础</a> <span class="text-muted">百合不是茶</span> <a class="tag" taget="_blank" href="/search/html/1.htm">html</a><a class="tag" taget="_blank" href="/search/%E8%A1%A8%E6%A0%BC/1.htm">表格</a><a class="tag" taget="_blank" href="/search/%E8%A1%A8%E5%8D%95/1.htm">表单</a><a class="tag" taget="_blank" href="/search/meta/1.htm">meta</a><a class="tag" taget="_blank" href="/search/%E9%94%9A%E7%82%B9/1.htm">锚点</a> <div>第一次用html来写东西,感觉压力山大,每次看见别人发的都是比较牛逼的 再看看自己什么都还不会,   html是一种标记语言,其实很简单都是固定的格式   _----------------------------------------表格和表单 表格是html的重要组成部分,表格用在body里面的 主要用法如下; <table> &</div> </li> <li><a href="/article/1360.htm" title="ibatis如何传入完整的sql语句" target="_blank">ibatis如何传入完整的sql语句</a> <span class="text-muted">bijian1013</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/sql/1.htm">sql</a><a class="tag" taget="_blank" href="/search/ibatis/1.htm">ibatis</a> <div>        ibatis如何传入完整的sql语句?进一步说,String str ="select * from test_table",我想把str传入ibatis中执行,是传递整条sql语句。         解决办法: <</div> </li> <li><a href="/article/1487.htm" title="精通Oracle10编程SQL(14)开发动态SQL" target="_blank">精通Oracle10编程SQL(14)开发动态SQL</a> <span class="text-muted">bijian1013</span> <a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a><a class="tag" taget="_blank" href="/search/plsql/1.htm">plsql</a> <div>/* *开发动态SQL */ --使用EXECUTE IMMEDIATE处理DDL操作 CREATE OR REPLACE PROCEDURE drop_table(table_name varchar2) is sql_statement varchar2(100); begin sql_statement:='DROP TABLE '||table_name; </div> </li> <li><a href="/article/1614.htm" title="【Linux命令】Linux工作中常用命令" target="_blank">【Linux命令】Linux工作中常用命令</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/linux%E5%91%BD%E4%BB%A4/1.htm">linux命令</a> <div>不断的总结工作中常用的Linux命令   1.查看端口被哪个进程占用   通过这个命令可以得到占用8085端口的进程号,然后通过ps -ef|grep 进程号得到进程的详细信息   netstat -anp | grep 8085   察看进程ID对应的进程占用的端口号   netstat -anp | grep 进程ID &</div> </li> <li><a href="/article/1741.htm" title="优秀网站和文档收集" target="_blank">优秀网站和文档收集</a> <span class="text-muted">白糖_</span> <a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%AB%99/1.htm">网站</a> <div>集成 Flex, Spring, Hibernate 构建应用程序   性能测试工具-JMeter   Hmtl5-IOCN网站   Oracle精简版教程网站   鸟哥的linux私房菜   Jetty中文文档   50个jquery必备代码片段   swfobject.js检测flash版本号工具</div> </li> <li><a href="/article/1868.htm" title="angular.extend" target="_blank">angular.extend</a> <span class="text-muted">boyitech</span> <a class="tag" taget="_blank" href="/search/AngularJS/1.htm">AngularJS</a><a class="tag" taget="_blank" href="/search/angular.extend/1.htm">angular.extend</a><a class="tag" taget="_blank" href="/search/AngularJS+API/1.htm">AngularJS API</a> <div>angular.extend 复制src对象中的属性去dst对象中. 支持多个src对象. 如果你不想改变一个对象,你可以把dst设为空对象{}: var object = angular.extend({}, object1, object2). 注意: angular.extend不支持递归复制. 使用方法: angular.extend(dst, src); 参数: </div> </li> <li><a href="/article/1995.htm" title="java-谷歌面试题-设计方便提取中数的数据结构" target="_blank">java-谷歌面试题-设计方便提取中数的数据结构</a> <span class="text-muted">bylijinnan</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>网上找了一下这道题的解答,但都是提供思路,没有提供具体实现。其中使用大小堆这个思路看似简单,但实现起来要考虑很多。 以下分别用排序数组和大小堆来实现。 使用大小堆: import java.util.Arrays; public class MedianInHeap { /** * 题目:设计方便提取中数的数据结构 * 设计一个数据结构,其中包含两个函数,1.插</div> </li> <li><a href="/article/2122.htm" title="ajaxFileUpload 针对 ie jquery 1.7+不能使用问题修复版本" target="_blank">ajaxFileUpload 针对 ie jquery 1.7+不能使用问题修复版本</a> <span class="text-muted">Chen.H</span> <a class="tag" taget="_blank" href="/search/ajaxFileUpload/1.htm">ajaxFileUpload</a><a class="tag" taget="_blank" href="/search/ie6/1.htm">ie6</a><a class="tag" taget="_blank" href="/search/ie7/1.htm">ie7</a><a class="tag" taget="_blank" href="/search/ie8/1.htm">ie8</a><a class="tag" taget="_blank" href="/search/ie9/1.htm">ie9</a> <div>jQuery.extend({ handleError: function( s, xhr, status, e ) { // If a local callback was specified, fire it if ( s.error ) { s.error.call( s.context || s, xhr, status, e ); } </div> </li> <li><a href="/article/2249.htm" title="[机器人制造原则]机器人的电池和存储器必须可以替换" target="_blank">[机器人制造原则]机器人的电池和存储器必须可以替换</a> <span class="text-muted">comsci</span> <a class="tag" taget="_blank" href="/search/%E5%88%B6%E9%80%A0/1.htm">制造</a> <div>        机器人的身体随时随地可能被外来力量所破坏,但是如果机器人的存储器和电池可以更换,那么这个机器人的思维和记忆力就可以保存下来,即使身体受到伤害,在把存储器取下来安装到一个新的身体上之后,原有的性格和能力都可以继续维持.....        另外,如果一</div> </li> <li><a href="/article/2376.htm" title="Oracle Multitable INSERT 的用法" target="_blank">Oracle Multitable INSERT 的用法</a> <span class="text-muted">daizj</span> <a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a> <div>转载Oracle笔记-Multitable INSERT 的用法 http://blog.chinaunix.net/uid-8504518-id-3310531.html 一、Insert基础用法 语法:     Insert Into 表名 (字段1,字段2,字段3...)     Values (值1,</div> </li> <li><a href="/article/2503.htm" title="专访黑客历史学家George Dyson" target="_blank">专访黑客历史学家George Dyson</a> <span class="text-muted">datamachine</span> <a class="tag" taget="_blank" href="/search/on/1.htm">on</a> <div>20世纪最具威力的两项发明——核弹和计算机出自同一时代、同一群年青人。可是,与大名鼎鼎的曼哈顿计划(第二次世界大战中美国原子弹研究计划)相 比,计算机的起源显得默默无闻。出身计算机世家的历史学家George Dyson在其新书《图灵大教堂》(Turing’s Cathedral)中讲述了阿兰·图灵、约翰·冯·诺依曼等一帮子天才小子创造计算机及预见计算机未来</div> </li> <li><a href="/article/2630.htm" title="小学6年级英语单词背诵第一课" target="_blank">小学6年级英语单词背诵第一课</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/english/1.htm">english</a><a class="tag" taget="_blank" href="/search/word/1.htm">word</a> <div>always 总是 rice 水稻,米饭 before 在...之前 live 生活,居住   usual 通常的 early 早的 begin 开始 month 月份   year 年 last 最后的 east 东方的 high 高的   far 远的 window 窗户 world 世界 than 比...更   </div> </li> <li><a href="/article/2757.htm" title="在线IT教育和在线IT高端教育" target="_blank">在线IT教育和在线IT高端教育</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/%E6%95%99%E8%82%B2/1.htm">教育</a> <div>codecademy  http://www.codecademy.com codeschool  https://www.codeschool.com teamtreehouse  http://teamtreehouse.com lynda http://www.lynda.com/ Coursera https://www.coursera.</div> </li> <li><a href="/article/2884.htm" title="Struts2 xml校验框架所定义的校验文件" target="_blank">Struts2 xml校验框架所定义的校验文件</a> <span class="text-muted">蕃薯耀</span> <a class="tag" taget="_blank" href="/search/Struts2+xml%E6%A0%A1%E9%AA%8C/1.htm">Struts2 xml校验</a><a class="tag" taget="_blank" href="/search/Struts2+xml%E6%A0%A1%E9%AA%8C%E6%A1%86%E6%9E%B6/1.htm">Struts2 xml校验框架</a><a class="tag" taget="_blank" href="/search/Struts2%E6%A0%A1%E9%AA%8C/1.htm">Struts2校验</a> <div>  >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 蕃薯耀 2015年7月11日 15:54:59 星期六 http://fa</div> </li> <li><a href="/article/3011.htm" title="mac下安装rar和unrar命令" target="_blank">mac下安装rar和unrar命令</a> <span class="text-muted">hanqunfeng</span> <a class="tag" taget="_blank" href="/search/mac/1.htm">mac</a> <div>1.下载:http://www.rarlab.com/download.htm 选择 RAR 5.21 for Mac OS X 2.解压下载后的文件 tar -zxvf rarosx-5.2.1.tar 3.cd rar sudo install -c -o $USER unrar /bin #输入当前用户登录密码 sudo install -c -o $USER rar</div> </li> <li><a href="/article/3138.htm" title="三种将list转换为map的方法" target="_blank">三种将list转换为map的方法</a> <span class="text-muted">jackyrong</span> <a class="tag" taget="_blank" href="/search/list/1.htm">list</a> <div>  在本文中,介绍三种将list转换为map的方法: 1) 传统方法 假设有某个类如下    class Movie { private Integer rank; private String description; public Movie(Integer rank, String des</div> </li> <li><a href="/article/3265.htm" title="年轻程序员需要学习的5大经验" target="_blank">年轻程序员需要学习的5大经验</a> <span class="text-muted">lampcy</span> <a class="tag" taget="_blank" href="/search/%E5%B7%A5%E4%BD%9C/1.htm">工作</a><a class="tag" taget="_blank" href="/search/PHP/1.htm">PHP</a><a class="tag" taget="_blank" href="/search/%E7%A8%8B%E5%BA%8F%E5%91%98/1.htm">程序员</a> <div>在过去的7年半时间里,我带过的软件实习生超过一打,也看到过数以百计的学生和毕业生的档案。我发现很多事情他们都需要学习。或许你会说,我说的不就是某种特定的技术、算法、数学,或者其他特定形式的知识吗?没错,这的确是需要学习的,但却并不是最重要的事情。他们需要学习的最重要的东西是“自我规范”。这些规范就是:尽可能地写出最简洁的代码;如果代码后期会因为改动而变得凌乱不堪就得重构;尽量删除没用的代码,并添加</div> </li> <li><a href="/article/3392.htm" title="评“女孩遭野蛮引产致终身不育 60万赔偿款1分未得”医腐深入骨髓" target="_blank">评“女孩遭野蛮引产致终身不育 60万赔偿款1分未得”医腐深入骨髓</a> <span class="text-muted">nannan408</span> <div>先来看南方网的一则报道: 再正常不过的结婚、生子,对于29岁的郑畅来说,却是一个永远也无法实现的梦想。从2010年到2015年,从24岁到29岁,一张张新旧不一的诊断书记录了她病情的同时,也清晰地记下了她人生的悲哀。   粗暴手术让人发寒   2010年7月,在酒店做服务员的郑畅发现自己怀孕了,可男朋友却联系不上。在没有和家人商量的情况下,她决定堕胎。   12月5日,</div> </li> <li><a href="/article/3519.htm" title="使用jQuery为input输入框绑定回车键事件 VS 为a标签绑定click事件" target="_blank">使用jQuery为input输入框绑定回车键事件 VS 为a标签绑定click事件</a> <span class="text-muted">Everyday都不同</span> <a class="tag" taget="_blank" href="/search/jsp/1.htm">jsp</a><a class="tag" taget="_blank" href="/search/input/1.htm">input</a><a class="tag" taget="_blank" href="/search/%E5%9B%9E%E8%BD%A6%E9%94%AE%E7%BB%91%E5%AE%9A/1.htm">回车键绑定</a><a class="tag" taget="_blank" href="/search/click/1.htm">click</a><a class="tag" taget="_blank" href="/search/enter/1.htm">enter</a> <div>假设如题所示的事件为同一个,必须先把该js函数抽离出来,该函数定义了监听的处理:   function search() { //监听函数略...... }   为input框绑定回车事件,当用户在文本框中输入搜索关键字时,按回车键,即可触发search():   //回车绑定 $(".search").keydown(fun</div> </li> <li><a href="/article/3646.htm" title="EXT学习记录" target="_blank">EXT学习记录</a> <span class="text-muted">tntxia</span> <a class="tag" taget="_blank" href="/search/ext/1.htm">ext</a> <div>  1. 准备   (1) 官网:http://www.sencha.com/   里面有源代码和API文档下载。   EXT的域名已经从www.extjs.com改成了www.sencha.com ,但extjs这个域名会自动转到sencha上。   (2)帮助文档:   想要查看EXT的官方文档的话,可以去这里h</div> </li> <li><a href="/article/3773.htm" title="mybatis3的mapper文件报Referenced file contains errors" target="_blank">mybatis3的mapper文件报Referenced file contains errors</a> <span class="text-muted">xingguangsixian</span> <a class="tag" taget="_blank" href="/search/mybatis/1.htm">mybatis</a> <div>最近使用mybatis.3.1.0时无意中碰到一个问题: The errors below were detected when validating the file "mybatis-3-mapper.dtd" via the file "account-mapper.xml". In most cases these errors can be d</div> </li> </ul> </div> </div> </div> <div> <div class="container"> <div class="indexes"> <strong>按字母分类:</strong> <a href="/tags/A/1.htm" target="_blank">A</a><a href="/tags/B/1.htm" target="_blank">B</a><a href="/tags/C/1.htm" target="_blank">C</a><a href="/tags/D/1.htm" target="_blank">D</a><a href="/tags/E/1.htm" target="_blank">E</a><a href="/tags/F/1.htm" target="_blank">F</a><a href="/tags/G/1.htm" target="_blank">G</a><a href="/tags/H/1.htm" target="_blank">H</a><a href="/tags/I/1.htm" target="_blank">I</a><a href="/tags/J/1.htm" target="_blank">J</a><a href="/tags/K/1.htm" target="_blank">K</a><a href="/tags/L/1.htm" target="_blank">L</a><a href="/tags/M/1.htm" target="_blank">M</a><a href="/tags/N/1.htm" target="_blank">N</a><a href="/tags/O/1.htm" target="_blank">O</a><a href="/tags/P/1.htm" target="_blank">P</a><a href="/tags/Q/1.htm" target="_blank">Q</a><a href="/tags/R/1.htm" target="_blank">R</a><a href="/tags/S/1.htm" target="_blank">S</a><a href="/tags/T/1.htm" target="_blank">T</a><a href="/tags/U/1.htm" target="_blank">U</a><a href="/tags/V/1.htm" target="_blank">V</a><a href="/tags/W/1.htm" target="_blank">W</a><a href="/tags/X/1.htm" target="_blank">X</a><a href="/tags/Y/1.htm" target="_blank">Y</a><a href="/tags/Z/1.htm" target="_blank">Z</a><a href="/tags/0/1.htm" target="_blank">其他</a> </div> </div> </div> <footer id="footer" class="mb30 mt30"> <div class="container"> <div class="footBglm"> <a target="_blank" href="/">首页</a> - <a target="_blank" href="/custom/about.htm">关于我们</a> - <a target="_blank" href="/search/Java/1.htm">站内搜索</a> - <a target="_blank" href="/sitemap.txt">Sitemap</a> - <a target="_blank" href="/custom/delete.htm">侵权投诉</a> </div> <div class="copyright">版权所有 IT知识库 CopyRight © 2000-2050 E-COM-NET.COM , All Rights Reserved. <!-- <a href="https://beian.miit.gov.cn/" rel="nofollow" target="_blank">京ICP备09083238号</a><br>--> </div> </div> </footer> <!-- 代码高亮 --> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shCore.js"></script> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shLegacy.js"></script> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shAutoloader.js"></script> <link type="text/css" rel="stylesheet" href="/static/syntaxhighlighter/styles/shCoreDefault.css"/> <script type="text/javascript" src="/static/syntaxhighlighter/src/my_start_1.js"></script> </body> </html>