精华内容
下载资源
问答
  • 单向度-赫伯特·马尔库塞 著.pdf 单向度-赫伯特·马尔库塞 著.pdf
  • Neo4j教程网盘下载

    千次阅读 2019-03-16 21:36:24
    网盘下载地址:https://u18103887.ctfile.com/fs/18103887-311624004 1.1 为什么要有Neo4j 为什么要使用图形数据库呢?或者更具体地说,Neo4j是你的数据库的 正确选择吗?正如前面所提到的,对于人们试图使用逻辑的...

    网盘下载地址:https://u18103887.ctfile.com/fs/18103887-311624004
    1.1 为什么要有Neo4j

    为什么要使用图形数据库呢?或者更具体地说,Neo4j是你的数据库的
    正确选择吗?正如前面所提到的,对于人们试图使用逻辑的方法,并用类似
    于图形的结构和概念对他们特殊问题的领域进行建模和描述那是很自然的,
    尽管他们最终可能并不是以图型数据库存储数据。选择正确的数据库(或者
    是在存储领域中已有的多种语言版本的数据库中选择多种数据库)存储数据
    可以使应用程序的运行速度大大加快,正像如果选错了数据库就会使程序完
    全崩溃一样。

    对于这个问题可以使用一个例子来做出很好说明。取一个非常适合于用
    图形数据库解决的问题,看看怎样应用Neo4j解决,并与使用另一个不同数
    据库的存储做出对比。为了便于比较,我们将使用传统的关系数据库作为比
    较对象,因为这是在一般情况下大多数人涉及的存储对比的选择。更重要的
    是,这也是大多数人在目前,也可能以后仍然会在解决问题时选择的关系数
    据库模型。

    我们要探讨的例子是一个社交网络,一组可能相互之间是朋友的用户。
    图1-1显示了该社交网络,用箭头连接的用户之间是朋友关系。

    注意

    要使语义正确,朋友的关系应该是双向的。在Neo4j中,双向性是使用
    两个关系建立的,以每一个关系建立一个方向(在Neo4j中,每个关系必须
    要明确定义一个方向,但以后会定义多个方向)。因此,你应该会看到每对
    朋友之间都有两个独立的朋友关系,在每个方向上有一个关系。为简单起
    见,我们建立了单向直接的朋友关系。在第2章和第3章中你将会了解为什么
    这种数据模型在Neo4j中实际上是非常高效的。
    让我们来看看关系数据库如何存储用户及他们的朋友。
    1.2 关系数据库中的图形数据

    在关系数据库中,通常使用两个具有关系的表格存储社交网络的数据:
    一个用于存储用户信息,而另一个用于存储用户之间的关系(参见图1-2)。

    图1-1 以图形数据结构描述的用户与他们的朋友
    图1-2 描述用户及其朋友数据的SQL图表

    程序1-1显示了在MySQL数据库中用SQL脚本语言创建的表。

    【程序1-1】 SQL脚本语言定义的社交网络数据表

    表t_user包含着用户信息的列,而表t_user_friend只有两列,用外键关系
    引用表t_user。主键和外键具有索引,以便进行快速查找操作。索引是关系
    数据库中使用的典型查找技术。

    使用MySQL查询图形数据

    你会如何去查询一个关系数据库呢?获取一个特定用户的直接朋友数是
    相当简单的。如下的基本select查询就可以实现这一目的:

    注意

    我们在所有的例子中计算所有的朋友数量,因此,不能通过加载实际的
    数据而使CPU或内存超载。

    如何找到一个用户的朋友的所有朋友?通常,在查询前,典型的做法是
    将表t_user_friend与它自身联接起来。

    流行的社交网络通常具有从你的具有一定分离度或深度的朋友圈推荐潜
    在的朋友或联系人的功能。如果你想做某一些相似的事情以寻找某一个用户
    的朋友的朋友的朋友,你仅仅需要另外的一个join操作。

    同样,要做一个四层关系的循环,就需要四个join操作。要获得著名的
    六度分离问题的所有连接,将需要6个join操作。
    对于这种做法,没有什么不正常的,但是有一个潜在的问题:尽管你只
    关心单一用户的朋友的朋友,但你必须对表t_user_friend中的所有数据做一
    个join操作,然后丢弃你不再感兴趣的所有行。对于一个小的数据集,这将
    不会是一个大的问题。但是,如果这个社交网络不断发展壮大,你可能开始
    遇到一些严重的性能问题。正如你将看到的,这将会给关系型数据引擎带来
    巨大的压力。

    为了说明这种查询的性能,在一个具有1000个用户的小数据集上运行几
    次朋友的朋友查询,并在每次调用和记录每次的查询结果的同时,增加搜索
    的深度。在一个具有1000用户的小数据集中,平均每一个用户具有50个朋
    友。表t_user包含了1000条记录,而表t_user_friend包含了1000×50=50000条
    记录。

    在每个深度上运行了10次查询,这仅仅是在任何情况下都能帮助提高性
    能的一个开始,记录下在每一深度上的最快运行时间。除在程序1-1中用
    SQL脚本语言对数据库的列定义索引外,不对数据库进行其他的性能调整。
    表1-1给出了实验的结果。

    表1-1 使用MySQL数据库引擎对一个有1000个用户的数据库使用多个join查
    询的运行时间

    注意

    所有的实验均在Intel i7-CPU、8GB内存的商用笔记本电脑上完成,本书
    的写作也是在这台笔记本电脑上完成的。

    注意

    在深度为3、4、5时均返回数值999,这是由于数据集太小,数据库中的
    每一个用户都相互关联着。

    正如你能够看到的,MySQL处理查询的深度为2和3时,其表现相当不
    错。关系数据库的join操作并非不常见,而是很通常的操作。因此很多数据
    库引擎都把这种操作作为默认的设计。使用数据库相关列上的索引也能帮助
    关系数据库最大化其执行join查询操作的性能。

    然而,在深度为4和5时,性能显著下降:涉及深度4的查询需要10秒以
    上才能完成,而在深度5时,尽管计数结果没有改变,但执行的时间就更长
    了,超过了一分半钟。这说明了当处理图形数据时MySQL所受到的限制:
    深度图形需要多个join操作时,关系数据库通常表现得不太好。

    SQL的join操作的低效率性
    要在深度5查找一个用户的所有朋友,关系数据库引擎需要产生
    t_user_friend表的笛卡儿积五次。对于一个拥有50000个记录的表,所得到的
    数据集将有500005行(102.4×1021),这需要相当长的时间和计算能力来做
    出这些计算。最后只返回了你感兴趣的不到1000条的记录,而放弃了超过
    99%的计算结果!

    正如你所看到的,关系数据库并不擅长多对多关系的数据模型,尤其是
    在大型数据集时。而相反,Neo4j正好擅长多对多的关系,因此,让我们来
    看看Neo4j是如何使用相同的数据集来实现的。不是使用表、列和外键,而
    是通过将用户作为节点、朋友关系作为节点之间的关系来建立模型的。

    展开全文
  • 金山快盘关闭了,大家有什么网盘推荐? 题主需要的是一个同步网盘! 利益相关,自我推荐,理由如下: 1. 安全稳定: 自建服务器 坚果云从2011年创立之初,就采用自建服务器的方式。 我们知道,对于SaaS...

    金山快盘关闭了,大家有什么网盘推荐?

     

    题主需要的是一个同步网盘!

    利益相关,自我推荐,理由如下:

     

    1. 安全稳定:

     

    自建服务器

    坚果云从2011年创立之初,就采用自建服务器的方式。

    我们知道,对于SaaS公司和其他提供互联网服务的公司来说,有两种选择:自建或者依托于AWS、阿里云这些云计算服务提供商。将AWS、阿里云等作为计算平台,按需使用其提供的计算能力,对于高速增长的初创公司来说,是一个节省时间、节省财务成本的选择。但是这种方式也会带来一定的问题。毕竟将自己绝大多数的用户流量、用户数据寄托在一家第三方云服务商,一旦服务器发生问题或出现与底层云服务商的业务冲突,会影响产品的运营并对业务带来不良后果。以前几年的顺丰和菜鸟网络的数据接口风波和双十一阿里云服务优先保障天猫、淘宝的稳定运行争论为代表,这里不再赘述。

    除了提高安全性、稳定性、可控性之外,当用户规模增长到一定规模之后,自建服务器还能很大程度上节约成本。

    “谷歌之所以获得巨大成功,不仅仅是因为它创建了一个很出色的互联网搜索引擎,也是因为它创建了支持该搜索引擎大规模运行的底层技术——以及其他很多服务。”

    Dropbox原先采用搭建在AWS底层云服务上的方式,在2016年开始逐步弃用亚马逊AWS的公有云服务。

    关于Dropbox弃用AWS,知乎上有一个讨论:顺丰和菜鸟网络的数据接口风波

    不会说倒就倒

    2013年的时候,国内开始兴起网盘,各大企业争相加入,而唯一的卖点就放在容量上,用大容量粗暴的圈地。当时的几大网盘的大致容量是这样的:

    · 360云盘提供无限容量,37T起步;

    · 百度云下载手机客户端提供2T;

    · 腾讯微云提供10T,上不封顶;

    · 金山快盘2T;

    · ......

    360网盘和金山快盘的关闭,已经宣告了这种靠容量粗暴圈地的方式是不可行的。而现如今,腾讯微云也通过限制每日上传下载的流量,百度网盘通过上传下载速度的限制来控制用户的空间。

    总体来说,在这场“补贴大战”中,企业和用户都是受害者,就像房地产商摊大饼的烂尾楼一样,经不住市场的考验,难免“鬼城”的结局。而今,网盘跑马圈地后的流量变现,其商业模式的可行性已经被历史证明难有支撑,云存储市场逐渐趋于“理性”。

    而坚果云一开始就主打收费,努力转化免费用户,这样才能实现盈利,才能生存下去,不至于说倒就倒。

    数据安全

    坚果云同步网盘采用了国际顶尖的 256-bit AES SSL/TLS 的加密算法和冗余备份技术,保证您的数据高度隐私。

    文件分块加密:

    您的文件在离开您的电脑前,就会被切成多个文件块,并利用Https加密传输到云端的不同服务器中。坚果云服务器收到文件块后,会根据文件的数据特征和用户身份, 自动生成密钥,将不同的文件块利用AES算法加密存储。这些文件块加密密钥是通过不可恢复的单向哈希计算得来,只有获取用户身份后才可以再次计算获得该密钥,从而保证其他人无法访问用户数据。AES算法是目前获得普遍认可的最安全的加密算法, 被军方和金融行业广泛使用.

    冗余备份:

    您的每一个文件块传输到服务器上后,经过算术编码存储在多个不同的故障单元中。不同的故障单元彼此隔离, 出现重复故障的几率非常小,从而最大程度保证该数据的可靠性。

    国外著名的非商业机构Qualys SSL Labs对采用 SSL 加密传输数据的网站,坚果云A评级、某度网盘也仅为C。

    并且坚果云支持 Google Authenticator或微信、手机号等二次验证的方式进一步增加文件安全。

     

    2. 自动同步

     

    自动同步功能,一直是坚果云的优势。全平台跨设备实时自动同步,任意文件夹右键即可同步,不改变电脑操作习惯。

    您还可以分别设置每个同步文件夹的访问权限,灵活管理自己的文件。

    如下图,右击您电脑上的任意文件夹,选择“坚果云”->“同步该文件夹”,创建一个私有的同步文件夹:

    你也可以邀请同事共享文件夹,让协同工作这联系更紧密。

    ·

    智能增量同步:

     

    坚果云是国内独家支持智能增量技术的同步盘。当你修改文件后,同步时只上传文件中宏修改过的部分,有效节约文件同步时间和流量。

     

    局域网同步加速:

     

    当多个用户在同一局域网内共享文件时,客户端可进行点对点局域网传输,无需通过公网下载,下载速度可提高10倍以上。

     

    国内外稳定传输:

     

    坚果云在美国东部、美国西部、德国、澳大利亚、英国、日本、巴西、新加坡、香港、印度等地均部署了数据中心,我们可以为全世界除了南极洲以外的区域提供单个用户单个文件40Mb/s的稳定下载和上传速度,并且支持在线编辑。

     

    1. 优质软件生态圈

     

    坚果云是国内极少数支持 WebDAV 的云盘,通过 WebDAV 我们与许多优质的软件建立联系,打造一个“开放”的环境,提升用户的使用场景,让更多的用户享受到云同步服务的益处。

    例如,KeePass、WPS、Zotero、Documents、Solid Explorer、PDF Expert、Keynote、Notability、OneNote、纯纯写作和 FolderSync 等几十款国内外优质软件,涉及笔记、密码、文件管理、文献管理等众多领域。

     

    以Zotero为例。用zotero,文献下载导出,自动联动坚果云,所有的文档都整齐排在云端。方便的很。 1+1>2 !

     

    除此之外,坚果云也有共享文件恢复历史版本、一键分享、在线编辑等功能。

     

    4. 免费高效的生产力工具

     

    同步盘的作用绝不仅是文件的实时同步,我们以坚果云为核心,打造一站式生产力工具合集,帮您应对各种职场需求,提高效率。

     

    目前,坚果云已有坚果云扫描、坚果云绘图、坚果云大纲笔记、坚果云Markdown、坚果云思维导图、坚果云收件箱和坚果云在线offiece等十余款高效免费应用,让团队协作变得轻松高效。

    例如:

    坚果云绘图:创作可应用于各行各业的图表,完全免费的在线设计工具。

    坚果云大纲笔记 :真正的“提纲挈领”,超好用的思维辅助工具。

    坚果云收件箱:一键发布文件收集链接,自动保存至指定文件夹,比传统邮件收取文件更简单、更便捷。

    结合以上几点,我相信坚果云是可以代替金山快盘的的同步盘!

     

    展开全文
  • 2017年4月12-13日,2017亚太CDN峰会在北京召开,在13日上午的视频云论坛上,百度系统部副总监刘宁发表了《云智时代的CDN平台》主题报告。百度系统部副总监刘宁用户需求趋向对C...

    2017年4月12-13日,2017亚太CDN峰会在北京召开,在13日上午的视频云论坛上,百度系统部副总监刘宁发表了《云智时代的CDN平台》主题报告。

    百度系统部副总监刘宁

    用户需求趋向对CDN提出新的需求

    用户需求趋向的改变带给了整个CDN行业发展的动力,体现在通信社交、消费需求、个性化以及kill time等已经变成了用户的需求,同时还包括泛信息、泛娱乐。这些用户需求的典型特点是富媒体化,对于视频点播、视频直播包括短视频行业对这些方面有了更多的需求,也给CDN行业提出了很多的要求。

    越来越多的用户无论是内部用户还是外部用户,在用户体验方面都提出了非常高的要求,不光是可用性、质量还有更低的成本、技术上更快更好的研发和对接,用户还对云厂商人工智能、大数据的能力提出了相应的要求。

    ABC+CDN:云+智+数+CDN合力为企业发展赋能

    百度云的CDN平台实际上在推出产品之前也在百度内部打磨了七年多的时间,百度云内部从各个层面上有非常多的经验和技术积累,比如说网络层,在多级CDN的覆盖、多线的源站、BGP的源站及非常多的小运营商peer等等;在软件层面比如流量的调度、GSLB、4 7层负载均衡以及热点的负载均衡、缓存系统的优化、AI、黄反识别、视频标签等都有非常丰富的经验。通过监控平台可以实时发现百度云上出现了什么问题,及时做调度。百度云的配置管理方便用户快速做配置变更,在基础服务层面包括文件上传、内容刷新、推流、转码以及数据的分析;同时在解决方案上,百度云给用户提供了相对比较全面的解决方案,比如存储的分发、大文件的分发、小文件分发、视频的解决方案等等。

    百度的CDN平台以及百度云通过借助百度的AI和BIG DATA可以给用户提供更高的价值。

    精细打磨CDN产品能力,提供高品质CDN服务

    高品质的CDN平台通常要满足三点要素:首先是可用性,再者要求更高的性能,并且要求更好的用户体验。百度的CDN平台在内部一直承载着搜索业务、图片业务以及网盘类型的业务,即能满足搜索类型业务极其严格的可以性和质量要求,也能满足网盘对存储容量和承载能力的严格要求。

    在稳定性方面,百度在做CDN节点选择的时候会做非常严格的节点准入。实际上在运营商不同层级的节点上CDN质量差别非常大,而且即便是一个层级上的节点,还是有很大差别。百度还建立了全国质量感知网络,通过建设全国监控网,通过不同的维度监控业务问题,比如服务端、客户端、第三方监测等等。每天通过千亿级PV在服务器后端发现问题,也可以通过百度做业务打点进行错误检测。通过这样的方式可以比较实时发现问题在哪儿然后做及时的调度切换。

    CDN是一个重度依赖硬盘和SSD的服务,对硬盘健康性的把握直接影响CDN的服务质量和可用性。一个CDN节点,当服务器越少的时候,一块硬盘出现质量问题如果没有及时发现,所导致影响就越大,很可能造成一个节点百分之零点几的可用性影响,这对一个超过4个9可用性的CDN平台是不可接受的。百度云刘宁总监介绍道:百度采用监控故障扇区、磁头马达等硬件错误、设备报错、设备文件不可访问、进程D状态、盘符缺失、SmartFail等数据,运用GBDT(Gradient Boosting Decision Tree)、SVM等算法 + 神经网络构建故障预测模型,不仅可以做到故障不漏发现,还可提前48小时预测故障,准确率>90%,一旦预测到磁盘故障将要发生,会提前迁移盘上的热点数据,同时提前剔除故障磁盘,并自动报修。

    在性能方面,一方面从网络以及节点的布局设计上考虑,在运营商骨干节点上建立了大量的超级节点,单个节点存储超级结点可以达到3个P的存储,有助于缓存持久化。同时单个节点带宽达到160G或者更高的级别的时候就可以应对云时代业务中很多突发、攻击,应对较为复杂的情况。这样的结构超级节点加上更广泛覆盖的边缘节点,可以提升命中率。另外还在自研的负载均衡、DNS、自研交换机上做了大量的优化工作,百度在负载均衡上基于DBDK开发了40G单机能力的负载均衡,它可以帮助百度很容易设计建设一些超级节点。

    在速度优化方面,百度云做了非常多调优。一方面是通过节点的覆盖,通过精准的CDN角度302调度,同时在算法上做了大量工作。尤其在协议栈的优化上,在去年一年就线上迭代了近100个版本,使得协议栈的拥塞算法的性能大幅超过标准cubic以及google BBR在internet上的表现。

    百度云的独特优势在于以下几点:

    1.质量感知:百度用户基数大、使用密集、质量数据实时、细腻,基于访问质量的自动实时调度

    2.大数据:服务器故障大数据,硬盘故障预测并自动踢出,杜绝带病运行

    3.骨干节点:运营商骨干节点数100+,边缘节点200+,三级节点缓存

    4.BGP接入:BGP接入超过30家运营商

    5.节点测试:严格的节点准入测试

    百度云在做各方面技术的打磨、产品的打磨的时候,更多是希望给用户提供更好的产品和解决方案以及更好的性能。

    百度云的解决方案

    1.安全解决方案

    演讲中,刘宁跟大家分享了几个百度的解决方案。整个中国的互联网劫持非常严重,通常业务可以达到1%以上的劫持率,所以搜索业务前几年就开始做全站的切换,百度在很早就开始做全站的HTTPS的切换。在这个过程中,一方面SRE团队做了SSL接入层面优化,另一方面百度也开发了SSL offload异步集群,通过硬件加速的集群降低性能开销,最终达到了理想的效果。百度能够提供证书托管服务业、Keyless的https服务,同时也提供客户httpDNS服务解决在DNS请求方面的劫持。

    2.存储分发方案

    百度在提供CDN分发的同时也提供了很完整的存储分发解决方案。百度的存储分发解决方案是基于网盘近些年产品的积累和技术的打磨,百度网盘实际上是为解决过亿用户千PB的存储问题。百度云的存储方案给用户提供数据的上传、备份、存储和处理的工作,用户可以简单的开启其数据分发同时进行智能数据分级,大规模降低用户存储的成本。

    3.P2P加速解决方案

    P2P加速解决方案能够节约30%带宽费用,降低企业成本。体验:用户体验好,卡顿比小于5%,首画面时间小于1s;SDK:支持多平台的SDK,资源占用少,丰富的控制接口;分享率:全天分享率大于35%,热门文件的分享率达到80%以上;成本:降低30%以上。

    4.视频解决方案

    百度的视频云解决方案既提供基础视频云服务,也提供基于百度深度学习算法、百度大脑AI的能力,同时提供百度大数据支撑也帮助客户建设视频索引系统、视频搜索系统。百度的视频基础云是基于百度自研的视频点播VOD及视频直播系统研发的,百度在视频点播、直播上做了大量优化工作,从推流、拖流到源站,整个链路上没有采用开源的方案,而是采取百度自己的私有协议做了大量的优化工作。百度视频直播云在1-3毫秒延时的情况下可以提供3%以内的卡顿率。百度的视频点播云一方面为客户提供视频播放、视频分发网络、转码以及存储,另一方面直播平台也给用户提供单向的LSS直播以及双向的互动直播,还可以做直播录制。

    百度的视频基础云背靠百度AI和大数据,致力于给用户提供精准的内容理解。百度在内容审核方面可以给用户提供非常高准召率的色恐的审核,包括人物的审核,政治敏感度人物的审核,版权审核、播控审核、智能缩略图、字幕的生成等等。,利用视频AI提供的视频结构化标签,结合百度视频大数据的能力可以帮助用户快速构建起视频推荐系统以及视频内容的索引系统。如果用户没有很好的用户画像,百度大数据也会为其提供用户画像的冷启动,从而快速构建他的视频推荐系统,建设用户视频模型及视频特征模型。

    关于在内容生产方面百度可以帮用户做什么,刘宁答道一方面是用户的生产辅助,比如长精彩片段的提取、字幕的辅助生成,百度视频结构化标签的准召率非常高,通常的结构化标注范围比较少、标签的维度也比较少,但是用百度的AI则可以做到非常丰富的标签。

    在视频流量方面,百度竭力帮助用户解决两个关键的问题:一个人找视频的场景,另一个是视频找人的场景。人找视频场景通常是广电侧的场景,可以结合视频的输出和百度搜索帮助用户快速构建起站内搜索能力;视频的推荐主要侧重于UGC的场景,在视频内容模型和用户行为上帮助用户快速构建起站内更为精准的推荐。

    用户还可以结合百度的百家号和百度视频提供更好的内容的曝光。在营销方面可以帮助UP主以及内容生产方快速建立起来粉丝和舆情管理、用户画像。比如一个UP主肯定非常想关注到他所有的粉丝是什么样的年龄群体、年龄段,什么样的职业背景、什么样的家庭背景,更喜欢什么方面的内容,这样才有助于指导UP主生产内容。在视频流量变现方面,一方面百度云可以帮助用户快速搭建广告平台,另一方面也可以通过视频DSP、联盟视频广告快速帮助用户实现变现。

    点击“阅读原文”,了解更多智能视频和百度云CDN产品动态的信息。

    百度云

    微信:baidu_cloud

    https://cloud.baidu.com

    长按二维码关注

    展开全文
  • Java面试资源:百度“Java面试题”前200页都在这里了2017-11-17 Java编程来源:tangyouhua (唐尤华)github.com/tangyouhua/program-resource/blob/master/program-interview/java-baidu-200.md基本概念操作系统中 ...
    Java面试资源:百度“Java面试题”前200页都在这里了
    2017-11-17 Java编程
    来源:tangyouhua (唐尤华)
    github.com/tangyouhua/program-resource/blob/master/program-interview/java-baidu-200.md

    基本概念

    • 操作系统中 heap 和 stack 的区别
    • 什么是基于注解的切面实现
    • 什么是 对象/关系 映射集成模块
    • 什么是 Java 的反射机制
    • 什么是 ACID
    • BS与CS的联系与区别
    • Cookie 和 Session的区别
    • fail-fast 与 fail-safe 机制有什么区别
    • get 和 post请求的区别
    • Interface 与 abstract 类的区别
    • IOC的优点是什么
    • IO 和 NIO的区别,NIO优点
    • Java 8 / Java 7 为我们提供了什么新功能
    • 什么是竞态条件? 举个例子说明。
    • JRE、JDK、JVM 及 JIT 之间有什么不同
    • MVC的各个部分都有那些技术来实现?如何实现?
    • RPC 通信和 RMI 区别
    • 什么是 Web Service(Web服务)
    • JSWDL开发包的介绍。JAXP、JAXM的解释。SOAP、UDDI,WSDL解释。
    • WEB容器主要有哪些功能? 并请列出一些常见的WEB容器名字。
    • 一个”.java”源文件中是否可以包含多个类(不是内部类)?有什么限制
    • 简单说说你了解的类加载器。是否实现过类加载器
    • 解释一下什么叫AOP(面向切面编程)
    • 请简述 Servlet 的生命周期及其相关的方法
    • 请简述一下 Ajax 的原理及实现步骤
    • 简单描述Struts的主要功能
    • 什么是 N 层架构
    • 什么是CORBA?用途是什么
    • 什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”
    • 什么是正则表达式?用途是什么?哪个包使用正则表达式来实现模式匹配
    • 什么是懒加载(Lazy Loading)
    • 什么是尾递归,为什么需要尾递归
    • 什么是控制反转(Inversion of Control)与依赖注入(Dependency Injection)

    关键字

    finalize

    • 什么是finalize()方法

    1. finalize()方法什么时候被调用
    2. 析构函数(finalization)的目的是什么
    3. final 和 finalize 的区别
    4. final

    • final关键字有哪些用法

    1. final 与 static 关键字可以用于哪里?它们的作用是什么
    2. final, finally, finalize的区别
    3. final、finalize 和 finally 的不同之处?

    • 能否在运行时向 static final 类型的赋值

    1. 使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变
    2. 一个类被声明为final类型,表示了什么意思
    3. throws, throw, try, catch, finally分别代表什么意义

    Java 有几种修饰符?分别用来修饰什么

    volatile

    • volatile 修饰符的有过什么实践
    • volatile 变量是什么?volatile 变量和 atomic 变量有什么不同
    • volatile 类型变量提供什么保证?能使得一个非原子操作变成原子操作吗
    • 能创建 volatile 数组吗?

    transient变量有什么特点
    super什么时候使用
    public static void 写成 static public void会怎样
    说明一下public static void main(String args[])这段声明里每个关键字的作用
    请说出作用域public, private, protected, 以及不写时的区别
    sizeof 是Java 的关键字吗
    static

    • static class 与 non static class的区别
    • static 关键字是什么意思?Java中是否可以覆盖(override)一个private或者是static的方法
    • 静态类型有什么特点
    • main() 方法为什么必须是静态的?能不能声明 main() 方法为非静态
    • 是否可以从一个静态(static)方法内部发出对非静态(non-static)方法的调用
    • 静态变量在什么时候加载?编译期还是运行期?静态代码块加载的时机呢
    • 成员方法是否可以访问静态变量?为什么静态方法不能访问成员变量

    switch

    • switch 语句中的表达式可以是什么类型数据
    • switch 是否能作用在byte 上,是否能作用在long 上,是否能作用在String上
    • while 循环和 do 循环有什么不同

    操作符

    • &操作符和&&操作符有什么区别?
    • a = a + b 与 a += b 的区别?
    • 逻辑操作符 (&,|,^)与条件操作符(&&,||)的区别
    • 3*0.1 == 0.3 将会返回什么?true 还是 false?
    • float f=3.4; 是否正确?
    • short s1 = 1; s1 = s1 + 1;有什么错?

    数据结构

    基础类型(Primitives)

    • 基础类型(Primitives)与封装类型(Wrappers)的区别在哪里
    • 简述九种基本数据类型的大小,以及他们的封装类
    • int 和 Integer 哪个会占用更多的内存? int 和 Integer 有什么区别?parseInt()函数在什么时候使用到
    • float和double的默认值是多少
    • 如何去小数四舍五入保留小数点后两位
    • char 型变量中能不能存贮一个中文汉字,为什么

    类型转换

    • 怎样将 bytes 转换为 long 类型
    • 怎么将 byte 转换为 String
    • 如何将数值型字符转换为数字
    • 我们能将 int 强制转换为 byte 类型的变量吗?如果该值大于 byte 类型的范围,将会出现什么现象
    • 能在不进行强制转换的情况下将一个 double 值赋值给 long 类型的变量吗
    • 类型向下转换是什么

    数组

    • 如何权衡是使用无序的数组还是有序的数组
    • 怎么判断数组是 null 还是为空
    • 怎么打印数组? 怎样打印数组中的重复元素
    • Array 和 ArrayList有什么区别?什么时候应该使用Array而不是ArrayList
    • 数组和链表数据结构描述,各自的时间复杂度
    • 数组有没有length()这个方法? String有没有length()这个方法

    队列

    • 队列和栈是什么,列出它们的区别
    • BlockingQueue是什么
    • 简述 ConcurrentLinkedQueue LinkedBlockingQueue 的用处和不同之处。

    ArrayList、Vector、LinkedList的存储性能和特性
    String
    StringBuffer

    • ByteBuffer 与 StringBuffer有什么区别

    HashMap

    • HashMap的工作原理是什么
    • 内部的数据结构是什么
    • HashMap 的 table的容量如何确定?loadFactor 是什么? 该容量如何变化?这种变化会带来什么问题?
    • HashMap 实现的数据结构是什么?如何实现
    • HashMap 和 HashTable、ConcurrentHashMap 的区别
    • HashMap的遍历方式及效率
    • HashMap、LinkedMap、TreeMap的区别
    • 如何决定选用HashMap还是TreeMap
    • 如果HashMap的大小超过了负载因子(load factor)定义的容量,怎么办
    • HashMap 是线程安全的吗?并发下使用的 Map 是什么,它们内部原理分别是什么,比如存储方式、 hashcode、扩容、 默认容量等

    HashSet

    • HashSet和TreeSet有什么区别
    • HashSet 内部是如何工作的
    • WeakHashMap 是怎么工作的?

    Set

    • Set 里的元素是不能重复的,那么用什么方法来区分重复与否呢?是用 == 还是 equals()? 它们有何区别?
    • TreeMap:TreeMap 是采用什么树实现的?TreeMap、HashMap、LindedHashMap的区别。TreeMap和TreeSet在排序时如何比较元素?Collections工具类中的sort()方法如何比较元素?
    • TreeSet:一个已经构建好的 TreeSet,怎么完成倒排序。
    • EnumSet 是什么

    Hash算法

    • Hashcode 的作用
    • 简述一致性 Hash 算法
    • 有没有可能 两个不相等的对象有相同的 hashcode?当两个对象 hashcode 相同怎么办?如何获取值对象
    • 为什么在重写 equals 方法的时候需要重写 hashCode 方法?equals与 hashCode 的异同点在哪里
    • a.hashCode() 有什么用?与 a.equals(b) 有什么关系
    • hashCode() 和 equals() 方法的重要性体现在什么地方
    • Object:Object有哪些公用方法?Object类hashcode,equals 设计原则? sun为什么这么设计?Object类的概述
    • 如何在父类中为子类自动完成所有的 hashcode 和 equals 实现?这么做有何优劣。
    • 可以在 hashcode() 中使用随机数字吗?

    LinkedHashMap

    • LinkedHashMap 和 PriorityQueue 的区别是什么

    List

    • List, Set, Map三个接口,存取元素时各有什么特点
    • List, Set, Map 是否继承自 Collection 接口
    • 遍历一个 List 有哪些不同的方式

    • LinkedList

    1. LinkedList 是单向链表还是双向链表
    2. LinkedList 与 ArrayList 有什么区别
    3. 描述下 Java 中集合(Collections),接口(Interfaces),实现(Implementations)的概念。LinkedList 与 ArrayList 的区别是什么?
    4. 插入数据时,ArrayList, LinkedList, Vector谁速度较快?

    • ArrayList

    1. ArrayList 和 HashMap 的默认大小是多数
    2. ArrayList 和 LinkedList 的区别,什么时候用 ArrayList?
    3. ArrayList 和 Set 的区别?
    4. ArrayList, LinkedList, Vector的区别
    5. ArrayList是如何实现的,ArrayList 和 LinkedList 的区别
    6. ArrayList如何实现扩容
    7. Array 和 ArrayList 有何区别?什么时候更适合用Array
    8. 说出ArraList,Vector, LinkedList的存储性能和特性

    Map

    • Map, Set, List, Queue, Stack
    • Map 接口提供了哪些不同的集合视图
    • 为什么 Map 接口不继承 Collection 接口

    Collections

    • 介绍Java中的Collection FrameWork。集合类框架的基本接口有哪些
    • Collections类是什么?Collection 和 Collections的区别?Collection、Map的实现
    • 集合类框架的最佳实践有哪些
    • 为什么 Collection 不从 Cloneable 和 Serializable 接口继承
    • 说出几点 Java 中使用 Collections 的最佳实践?
    • Collections 中 遗留类 (HashTable、Vector) 和 现有类的区别

    什么是 B+树,B-树,列出实际的使用场景。

    接口

    • Comparator 与 Comparable 接口是干什么的?列出它们的区别

    对象

    拷贝(clone)

    • 如何实现对象克隆
    • 深拷贝和浅拷贝区别
    • 深拷贝和浅拷贝如何实现激活机制
    • 写clone()方法时,通常都有一行代码,是什么

    比较

    • 在比较对象时,”==” 运算符和 equals 运算有何区别
    • 如果要重写一个对象的equals方法,还要考虑什么
    • 两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对

    构造器

    • 构造器链是什么
    • 创建对象时构造器的调用顺序

    不可变对象

    • 什么是不可变象(immutable object)
    • 为什么 Java 中的 String 是不可变的(Immutable)
    • 如何构建不可变的类结构?关键点在哪里
    • 能创建一个包含可变对象的不可变对象吗

    如何对一组对象进行排序

    方法

    • 构造器(constructor)是否可被重写(override)
    • 方法可以同时即是 static 又是 synchronized 的吗
    • abstract 的 method是否可同时是 static,是否可同时是 native,是否可同时是synchronized
    • Java支持哪种参数传递类型
    • 一个对象被当作参数传递到一个方法,是值传递还是引用传递
    • 当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递
    • 我们能否重载main()方法
    • 如果main方法被声明为private会怎样

    GC

    概念

    • GC是什么?为什么要有GC
    • 什么时候会导致垃圾回收
    • GC是怎么样运行的
    • 新老以及永久区是什么
    • GC 有几种方式?怎么配置
    • 什么时候一个对象会被GC? 如何判断一个对象是否存活
    • System.gc() Runtime.gc()会做什么事情? 能保证 GC 执行吗
    • 垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机进行垃圾回收?
    • Minor GC 、Major GC、Young GC 与 Full GC分别在什么时候发生
    • 垃圾回收算法的实现原理
    • 如果对象的引用被置为null,垃圾收集器是否会立即释放对象占用的内存?
    • 垃圾回收的最佳做法是什么

    GC收集器有哪些

    • 垃圾回收器的基本原理是什么?
    • 串行(serial)收集器和吞吐量(throughput)收集器的区别是什么
    • Serial 与 Parallel GC之间的不同之处
    • CMS 收集器 与 G1 收集器的特点与区别
    • CMS垃圾回收器的工作过程
    • JVM 中一次完整的 GC 流程是怎样的? 对象如何晋升到老年代
    • 吞吐量优先和响应优先的垃圾收集器选择

    GC策略

    • 举个实际的场景,选择一个GC策略
    • JVM的永久代中会发生垃圾回收吗

    收集方法

    • 标记清除、标记整理、复制算法的原理与特点?分别用在什么地方
    • 如果让你优化收集方法,有什么思路

    JVM

    参数

    • 说说你知道的几种主要的jvm 参数
    • -XX:+UseCompressedOops 有什么作用

    类加载器(ClassLoader)

    • Java 类加载器都有哪些
    • JVM如何加载字节码文件

    内存管理

    • JVM内存分哪几个区,每个区的作用是什么
    • 一个对象从创建到销毁都是怎么在这些部分里存活和转移的
    • 解释内存中的栈(stack)、堆(heap)和方法区(method area)的用法
    • JVM中哪个参数是用来控制线程的栈堆栈小
    • 简述内存分配与回收策略
    • 简述重排序,内存屏障,happen-before,主内存,工作内存
    • Java中存在内存泄漏问题吗?请举例说明
    • 简述 Java 中软引用(SoftReferenc)、弱引用(WeakReference)和虚引用

    • 内存映射缓存区是什么

    1. jstack,jstat,jmap,jconsole怎么用
    2. 32 位 JVM 和 64 位 JVM 的最大堆内存分别是多数?32 位和 64 位的 JVM,int 类型变量的长度是多数?
    3. 怎样通过 Java 程序来判断 JVM 是 32 位 还是 64 位
    4. JVM自身会维护缓存吗?是不是在堆中进行对象分配,操作系统的堆还是JVM自己管理堆
    5. 什么情况下会发生栈内存溢出
    6. 双亲委派模型是什么

    多线程

    基本概念

    • 什么是线程
    • 多线程的优点

    • 多线程的几种实现方式
    1. 用 Runnable 还是 Thread

    • 什么是线程安全

    1. Vector, SimpleDateFormat 是线程安全类吗
    2. 什么 Java 原型不是线程安全的
    3. 哪些集合类是线程安全的

    • 多线程中的忙循环是什么
    • 如何创建一个线程
    • 编写多线程程序有几种实现方式
    • 什么是线程局部变量
    • 线程和进程有什么区别?进程间如何通讯,线程间如何通讯
    • 什么是多线程环境下的伪共享(false sharing)
    • 同步和异步有何异同,在什么情况下分别使用他们?举例说明

    Current

    • ConcurrentHashMap 和 Hashtable的区别
    • ArrayBlockingQueue, CountDownLatch的用法
    • ConcurrentHashMap的并发度是什么

    CyclicBarrier 和 CountDownLatch有什么不同?各自的内部原理和用法是什么
    Semaphore的用法
    Thread

    • 启动一个线程是调用 run() 还是 start() 方法?start() 和 run() 方法有什么区别
    • 调用start()方法时会执行run()方法,为什么不能直接调用run()方法
    • sleep() 方法和对象的 wait() 方法都可以让线程暂停执行,它们有什么区别
    • yield方法有什么作用?sleep() 方法和 yield() 方法有什么区别
    • Java 中如何停止一个线程
    • stop() 和 suspend() 方法为何不推荐使用
    • 如何在两个线程间共享数据
    • 如何强制启动一个线程
    • 如何让正在运行的线程暂停一段时间
    • 什么是线程组,为什么在Java中不推荐使用
    • 你是如何调用 wait(方法的)?使用 if 块还是循环?为什么

    生命周期

    • 有哪些不同的线程生命周期
    • 线程状态,BLOCKED 和 WAITING 有什么区别
    • 画一个线程的生命周期状态图

    ThreadLocal 用途是什么,原理是什么,用的时候要注意什么
    ThreadPool

    • 线程池是什么?为什么要使用它
    • 如何创建一个Java线程池
    • ThreadPool用法与优势
    • 提交任务时,线程池队列已满时会发会生什么
    • newCache 和 newFixed 有什么区别?简述原理。构造函数的各个参数的含义是什么,比如 coreSize, maxsize 等
    • 线程池的实现策略
    • 线程池的关闭方式有几种,各自的区别是什么
    • 线程池中submit() 和 execute()方法有什么区别?

    线程调度

    • Java中用到的线程调度算法是什么
    • 什么是多线程中的上下文切换
    • 你对线程优先级的理解是什么
    • 什么是线程调度器 (Thread Scheduler) 和时间分片 (Time Slicing)

    线程同步

    • 请说出你所知的线程同步的方法
    • synchronized 的原理是什么
    • synchronized 和 ReentrantLock 有什么不同
    • 什么场景下可以使用 volatile 替换 synchronized
    • 有T1,T2,T3三个线程,怎么确保它们按顺序执行?怎样保证T2在T1执行完后执行,T3在T2执行完后执行
    • 同步块内的线程抛出异常会发生什么
    • 当一个线程进入一个对象的 synchronized 方法A 之后,其它线程是否可进入此对象的 synchronized 方法B
    • 使用 synchronized 修饰静态方法和非静态方法有什么区别
    • 如何从给定集合那里创建一个 synchronized 的集合


    • Java Concurrency API 中 的 Lock 接口是什么?对比同步它有什么优势
    • Lock 与 Synchronized 的区别?Lock 接口比 synchronized 块的优势是什么
    • ReadWriteLock是什么?
    • 锁机制有什么用
    • 什么是乐观锁(Optimistic Locking)?如何实现乐观锁?如何避免ABA问题
    • 解释以下名词:重排序,自旋锁,偏向锁,轻量级锁,可重入锁,公平锁,非公平锁,乐观锁,悲观锁
    • 什么时候应该使用可重入锁
    • 简述锁的等级方法锁、对象锁、类锁
    • Java中活锁和死锁有什么区别?
    • 什么是死锁(Deadlock)?导致线程死锁的原因?如何确保 N 个线程可以访问 N 个资源同时又不导致死锁
    • 死锁与活锁的区别,死锁与饥饿的区别
    • 怎么检测一个线程是否拥有锁
    • 如何实现分布式锁
    • 有哪些无锁数据结构,他们实现的原理是什么

    • 读写锁可以用于什么应用场景

    1. Executors类是什么? Executor和Executors的区别
    2. 什么是Java线程转储(Thread Dump),如何得到它
    3. 如何在Java中获取线程堆栈
    4. 说出 3 条在 Java 中使用线程的最佳实践
    5. 在线程中你怎么处理不可捕捉异常
    6. 实际项目中使用多线程举例。你在多线程环境中遇到的常见的问题是什么?你是怎么解决它的
    7. 请说出与线程同步以及线程调度相关的方法
    8. 程序中有3个 socket,需要多少个线程来处理
    9. 假如有一个第三方接口,有很多个线程去调用获取数据,现在规定每秒钟最多有 10 个线程同时调用它,如何做到
    10. 如何在 Windows 和 Linux 上查找哪个线程使用的 CPU 时间最长
    11. 如何确保 main() 方法所在的线程是 Java 程序最后结束的线程
    12. 非常多个线程(可能是不同机器),相互之间需要等待协调才能完成某种工作,问怎么设计这种协调方案
    13. 你需要实现一个高效的缓存,它允许多个用户读,但只允许一个用户写,以此来保持它的完整性,你会怎样去实现它

    异常

    基本概念

    • Error 和 Exception有什么区别
    1. UnsupportedOperationException是什么
    2. NullPointerException 和 ArrayIndexOutOfBoundException 之间有什么相同之处

    • 什么是受检查的异常,什么是运行时异常
    • 运行时异常与一般异常有何异同
    • 简述一个你最常见到的runtime exception(运行时异常)

    finally

    • finally关键词在异常处理中如何使用
    1. 如果执行finally代码块之前方法返回了结果,或者JVM退出了,finally块中的代码还会执行吗
    2. try里有return,finally还执行么?那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后
    3. 在什么情况下,finally语句不会执行

    throw 和 throws 有什么区别?
    OOM你遇到过哪些情况?你是怎么搞定的?
    SOF你遇到过哪些情况?
    既然我们可以用RuntimeException来处理错误,那么你认为为什么Java中还存在检查型异常
    当自己创建异常类的时候应该注意什么
    导致空指针异常的原因
    异常处理 handle or declare 原则应该如何理解
    怎么利用 JUnit 来测试一个方法的异常
    catch块里别不写代码有什么问题
    你曾经自定义实现过异常吗?怎么写的
    什么是 异常链
    在try块中可以抛出异常吗

    JDBC

    • 通过 JDBC 连接数据库有哪几种方式
    • 阐述 JDBC 操作数据库的基本步骤
    • JDBC 中如何进行事务处理
    • 什么是 JdbcTemplate
    • 什么是 DAO 模块
    • 使用 JDBC 操作数据库时,如何提升读取数据的性能?如何提升更新数据的性能
    • 列出 5 个应该遵循的 JDBC 最佳实践

    IO

    File

    • File类型中定义了什么方法来创建一级目录
    • File类型中定义了什么方法来判断一个文件是否存在


    • 为了提高读写性能,可以采用什么流
    • Java中有几种类型的流
    • JDK 为每种类型的流提供了一些抽象类以供继承,分别是哪些类
    • 对文本文件操作用什么I/O流
    • 对各种基本数据类型和String类型的读写,采用什么流
    • 能指定字符编码的 I/O 流类型是什么

    序列化

    • 什么是序列化?如何实现 Java 序列化及注意事项
    • Serializable 与 Externalizable 的区别

    Socket

    • socket 选项 TCP NO DELAY 是指什么
    • Socket 工作在 TCP/IP 协议栈是哪一层
    • TCP、UDP 区别及 Java 实现方式

    说几点 IO 的最佳实践
    直接缓冲区与非直接缓冲器有什么区别?
    怎么读写 ByteBuffer?ByteBuffer 中的字节序是什么
    当用System.in.read(buffer)从键盘输入一行n个字符后,存储在缓冲区buffer中的字节数是多少
    如何使用扫描器类(Scanner Class)令牌化

    面向对象编程(OOP)

    • 解释下多态性(polymorphism),封装性(encapsulation),内聚(cohesion)以及耦合(coupling)
    • 多态的实现原理
    • 封装、继承和多态是什么
    • 对象封装的原则是什么?

    1. 获得一个类的类对象有哪些方式
    2. 重载(Overload)和重写(Override)的区别。重载的方法能否根据返回类型进行区分?
    3. 说出几条 Java 中方法重载的最佳实践

    • 抽象类
    1. 抽象类和接口的区别
    2. 抽象类中是否可以有静态的main方法
    3. 抽象类是否可实现(implements)接口
    4. 抽象类是否可继承具体类(concrete class)

    • 匿名类(Anonymous Inner Class)
    1. 匿名内部类是否可以继承其它类?是否可以实现接口

    • 内部类
    1. 内部类分为几种
    2. 内部类可以引用它的包含类(外部类)的成员吗
    3. 请说一下 Java 中为什么要引入内部类?还有匿名内部类

    • 继承
    1. 继承(Inheritance)与聚合(Aggregation)的区别在哪里
    2. 继承和组合之间有什么不同
    3. 为什么类只能单继承,接口可以多继承
    4. 存在两个类,B 继承 A,C 继承 B,能将 B 转换为 C 么?如 C = (C) B
    5. 如果类 a 继承类 b,实现接口c,而类 b 和接口 c 中定义了同名变量,请问会出现什么问题

    • 接口
    1. 接口是什么
    2. 接口是否可继承接口
    3. 为什么要使用接口而不是直接使用具体类?接口有什么优点

    泛型

    • 泛型的存在是用来解决什么问题
    • 泛型的常用特点
    • List能否转为List

    工具类

    日历

    • Calendar Class的用途
    • 如何在Java中获取日历类的实例
    • 解释一些日历类中的重要方法
    • GregorianCalendar 类是什么
    • SimpleTimeZone 类是什么
    • Locale类是什么
    • 如何格式化日期对象
    • 如何添加小时(hour)到一个日期对象(Date Objects)
    • 如何将字符串 YYYYMMDD 转换为日期

    Math

    • Math.round()什么作用?Math.round(11.5) 等于多少?Math.round(-11.5)等于多少?

    XML

    • XML文档定义有几种形式?它们之间有何本质区别?解析XML文档有哪几种方式?DOM 和 SAX 解析器有什么不同?
    • Java解析XML的方式
    • 用 jdom 解析 xml 文件时如何解决中文问题?如何解析
    • 你在项目中用到了 XML 技术的哪些方面?如何实现

    动态代理

    • 描述动态代理的几种实现方式,分别说出相应的优缺点

    设计模式

    • 什么是设计模式(Design Patterns)?你用过哪种设计模式?用在什么场合
    • 你知道哪些商业级设计模式?
    • 哪些设计模式可以增加系统的可扩展性

    • 单例模式
    1. 除了单例模式,你在生产环境中还用过什么设计模式?
    2. 写 Singleton 单例模式
    3. 单例模式的双检锁是什么
    4. 如何创建线程安全的 Singleton
    5. 什么是类的单例模式
    6. 写出三种单例模式实现

    • 适配器模式
    1. 适配器模式是什么?什么时候使用
    2. 适配器模式和代理模式之前有什么不同
    3. 适配器模式和装饰器模式有什么区别

    • 什么时候使用享元模式
    • 什么时候使用组合模式
    • 什么时候使用访问者模式
    • 什么是模板方法模式
    • 请给出1个符合开闭原则的设计模式的例子

    开放问题

    • 用一句话概括 Web 编程的特点
    • Google是如何在一秒内把搜索结果返回给用户
    • 哪种依赖注入方式你建议使用,构造器注入,还是 Setter方法注入
    • 树(二叉或其他)形成许多普通数据结构的基础。请描述一些这样的数据结构以及何时可以使用它们
    • 某一项功能如何设计
    • 线上系统突然变得异常缓慢,你如何查找问题
    • 什么样的项目不适合用框架
    • 新浪微博是如何实现把微博推给订阅者
    • 简要介绍下从浏览器输入 URL 开始到获取到请求界面之后 Java Web 应用中发生了什么
    • 请你谈谈SSH整合
    • 高并发下,如何做到安全的修改同一行数据
    • 12306网站的订票系统如何实现,如何保证不会票不被超卖
    • 网站性能优化如何优化的
    • 聊了下曾经参与设计的服务器架构
    • 请思考一个方案,实现分布式环境下的 countDownLatch
    • 请思考一个方案,设计一个可以控制缓存总体大小的自动适应的本地缓存
    • 在你的职业生涯中,算得上最困难的技术挑战是什么
    • 如何写一篇设计文档,目录是什么
    • 大写的O是什么?举几个例子
    • 编程中自己都怎么考虑一些设计原则的,比如开闭原则,以及在工作中的应用
    • 解释一下网络应用的模式及其特点
    • 设计一个在线文档系统,文档可以被编辑,如何防止多人同时对同一份文档进行编辑更新
    • 说出数据连接池的工作机制是什么
    • 怎么获取一个文件中单词出现的最高频率
    • 描述一下你最常用的编程风格
    • 如果有机会重新设计你们的产品,你会怎么做
    • 如何搭建一个高可用系统
    • 如何启动时不需输入用户名与密码
    • 如何在基于Java的Web项目中实现文件上传和下载
    • 如何实现一个秒杀系统,保证只有几位用户能买到某件商品。
    • 如何实现负载均衡,有哪些算法可以实现
    • 如何设计一个购物车?想想淘宝的购物车如何实现的
    • 如何设计一套高并发支付方案,架构如何设计
    • 如何设计建立和保持 100w 的长连接
    • 如何避免浏览器缓存。
    • 如何防止缓存雪崩
    • 如果AB两个系统互相依赖,如何解除依
    • 如果有人恶意创建非法连接,怎么解决
    • 如果有几十亿的白名单,每天白天需要高并发查询,晚上需要更新一次,如何设计这个功能
    • 如果系统要使用超大整数(超过long长度范围),请你设计一个数据结构来存储这种超大型数字以及设计一种算法来实现超大整数加法运算)
    • 如果要设计一个图形系统,请你设计基本的图形元件(Point,Line,Rectangle,Triangle)的简单实现
    • 如果让你实现一个并发安全的链表,你会怎么做
    • 应用服务器与WEB 服务器的区别?应用服务器怎么监控性能,各种方式的区别?你使用过的应用服务器优化技术有哪些
    • 大型网站在架构上应当考虑哪些问题
    • 有没有处理过线上问题?出现内存泄露,CPU利用率标高,应用无响应时如何处理的
    • 最近看什么书,印象最深刻的是什么
    • 描述下常用的重构技巧
    • 你使用什么版本管理工具?分支(Branch)与标签(Tag)之间的区别在哪里
    • 你有了解过存在哪些反模式(Anti-Patterns)吗
    • 你用过的网站前端优化的技术有哪些
    • 如何分析Thread dump
    • 你如何理解AOP中的连接点(Joinpoint)、切点(Pointcut)、增强(Advice)、引介(Introduction)、织入(Weaving)、切面(Aspect)这些概念
    • 你是如何处理内存泄露或者栈溢出问题的
    • 你们线上应用的 JVM 参数有哪些
    • 怎么提升系统的QPS和吞吐量

    知识面

    • 解释什么是 MESI 协议(缓存一致性)
    • 谈谈 reactor 模型
    • Java 9 带来了怎样的新功能
    • Java 与 C++ 对比,C++ 或 Java 中的异常处理机制的简单原理和应用
    • 简单讲讲 Tomcat 结构,以及其类加载器流程
    • 虚拟内存是什么
    • 阐述下 SOLID 原则
    • 请简要讲一下你对测试驱动开发(TDD)的认识
    • CDN实现原理
    • Maven 和 ANT 有什么区别
    • UML中有哪些常用的图

    • Linux
    1. Linux 下 IO 模型有几种,各自的含义是什么。
    2. Linux 系统下你关注过哪些内核参数,说说你知道的
    3. Linux 下用一行命令查看文件的最后五行
    4. 平时用到哪些 Linux 命令
    5. 用一行命令输出正在运行的 Java 进程
    6. 使用什么命令来确定是否有 Tomcat 实例运行在机器上

    • 什么是 N+1 难题
    • 什么是 paxos 算法
    • 什么是 restful,讲讲你理解的 restful
    • 什么是 zab 协议
    • 什么是领域模型(domain model)?贫血模型(anaemic domain model) 和充血模型(rich domain model)有什么区别
    • 什么是领域驱动开发(Domain Driven Development)
    • 介绍一下了解的 Java 领域的 Web Service 框架
    • Web Server、Web Container 与 Application Server 的区别是什么
    • 微服务(MicroServices)与巨石型应用(Monolithic Applications)之间的区别在哪里
    • 描述 Cookie 和 Session 的作用,区别和各自的应用范围,Session工作原理
    • 你常用的持续集成(Continuous Integration)、静态代码分析(Static Code Analysis)工具有哪些
    • 简述下数据库正则化(Normalizations)
    • KISS,DRY,YAGNI 等原则是什么含义
    • 分布式事务的原理,优缺点,如何使用分布式事务?
    • 布式集群下如何做到唯一序列号

    • 网络
    1. HTTPS 的加密方式是什么,讲讲整个加密解密流程
    2. HTTPS和HTTP的区别
    3. HTTP连接池实现原理
    4. HTTP集群方案
    5. Nginx、lighttpd、Apache三大主流 Web服务器的区别

    • 是否看过框架的一些代码
    • 持久层设计要考虑的问题有哪些?你用过的持久层框架有哪些
    • 数值提升是什么
    • 你能解释一下里氏替换原则吗
    • 你是如何测试一个应用的?知道哪些测试框架
    • 传输层常见编程协议有哪些?并说出各自的特点

    编程题

    计算加班费

    加班10小时以下加班费是时薪的1.5倍。加班10小时或以上,按4元/时算。提示:(一个月工作26天,一天正常工作8小时)

    • 计算1000月薪,加班9小时的加班费
    • 计算2500月薪,加班11小时的加班费
    • 计算1000月薪,加班15小时的加班费

    卖东西

    一家商场有红苹果和青苹果出售。(红苹果5元/个,青苹果4元/个)。

    • 模拟一个进货。红苹果跟青苹果各进200个。
    • 模拟一个出售。红苹果跟青苹果各买出10个。每卖出一个苹果需要进行统计。

    提示:一个苹果是一个单独的实体。

    日期提取

    有这样一个时间字符串:2008-8-8 20:08:08 , 请编写能够匹配它的正则表达式,并编写Java代码将日期后面的时分秒提取出来,即:20:08:08

    线程

    • 8设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。
    • 用Java写一个多线程程序,如写四个线程,二个加1,二个对一个变量减一,输出
    • wait-notify 写一段代码来解决生产者-消费者问题

    数字

    • 判断101-200之间有多少个素数,并输出所有素数
    • 用最有效率的方法算出2乘以17等于多少
    • 有 1 亿个数字,其中有 2 个是重复的,快速找到它,时间和空间要最优
    • 2 亿个随机生成的无序整数,找出中间大小的值
    • 10 亿个数字里里面找最小的 10 个
    • 1到1亿的自然数,求所有数的拆分后的数字之和,如286 拆分成2、8、6,如1到11拆分后的数字之和 => 1 + … + 9 + 1 + 0 + 1 + 1
    • 一个数如果恰好等于它的因子之和,这个数就称为 “完数 “。例如6=1+2+3.编程 找出1000以内的所有完数
    • 一个数组中所有的元素都出现了三次,只有一个元素出现了一次找到这个元素
    • 一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在 第10次落地时,共经过多少米?第10次反弹多高?
    • 求100-1000内质数的和
    • 求1到100的和的平均数
    • 求s=a+a+aaa+aaaa+aa…a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。 求出1到100的和

    • 算出1到40的质数,放进数组里
    1. 显示放组里的数
    2. 找出第[5]个数
    3. 删除第[9]个数,再显示删除后的第[9]个

    • 有 3n+1 个数字,其中 3n 个中是重复的,只有 1 个是不重复的,怎么找出来。
    • 有一组数1.1.2.3.5.8.13.21.34。写出程序随便输入一个数就能给出和前一组数字同规律的头5个数
    • 计算指定数字的阶乘
    • 开发 Fizz Buzz
    • 给定一个包含 N 个整数的数组,找出丢失的整数
    • 一个排好序的数组,找出两数之和为m的所有组合
    • 将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
    • 打印出所有的 “水仙花数 “,所谓 “水仙花数 “是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个 “水仙花数 “,因为153=1的三次方+5的三次方+3的三次方
    • 原地交换两个变量的值
    • 找出4字节整数的中位数
    • 找到整数的平方根
    • 实现斐波那契

    网络

    • 用Java Socket编程,读服务器几个字符,再写入本地显示

    反射

    • 反射机制提供了什么功能?
    • 反射是如何实现的
    • 哪里用到反射机制
    • 反射中 Class.forName 和 ClassLoader 区别
    • 反射创建类实例的三种方式是什么
    • 如何通过反射调用对象的方法
    • 如何通过反射获取和设置对象私有字段的值
    • 反射机制的优缺点

    数据库

    • 写一段 JDBC 连Oracle的程序,并实现数据查询

    算法

    • 50个人围坐一圈,当数到三或者三的倍数出圈,问剩下的人是谁,原来的位置是多少
    • 实现一个电梯模拟器用
    • 写一个冒泡排序
    • 写一个折半查找
    • 随机产生20个不能重复的字符并排序
    • 写一个函数,传入 2 个有序的整数数组,返回一个有序的整数数组
    • 写一段代码在遍历 ArrayList 时移除一个元素
    • 古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第四个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少
    • 约瑟芬环游戏

    正则

    • 请编写一段匹配IP地址的正则表达式
    • 写出一个正则表达式来判断一个字符串是否是一个数字

    字符串

    • 写一个方法,入一个文件名和一个字符串,统计这个字符串在这个文件中出现的次数。
    • 写一个程序找出所有字符串的组合,并检查它们是否是回文串
    • 写一个字符串反转函数,输入abcde转换成edcba代码
    • 小游戏,倒转句子中的单词
    • 将GB2312编码的字符串转换为ISO-8859-1编码的字符串
    • 请写一段代码来计算给定文本内字符“A”的个数。分别用迭代和递归两种方式
    • 编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 但是要保证汉字不被截半个,如“我ABC”4,应该截为“我AB”,输入“我ABC汉DEF”,6,应该输出为“我ABC”而不是“我ABC+汉的半个”
    • 给定 2 个包含单词列表(每行一个)的文件,编程列出交集
    • 打印出一个字符串的所有排列
    • 将一个键盘输入的数字转化成中文输出(例如:输入1234567,输出:一百二拾三万四千五百六拾七)
    • 在Web应用开发过程中经常遇到输出某种编码的字符,如从 GBK 到 ISO8859-1等,如何输出一个某种编码的字符串

    日期

    • 计算两个日期之间的差距

    展开全文
  • 智能商业20讲--曾明.听后感悟

    万次阅读 2018-11-29 10:35:14
    生产时间2017年7月29日,内容保鲜期18个月,内容省略5%, 内容类型:干货型。内容制作视角:全开放。文案状态:持续迭代,不断更新。 1月11日更新。 我发现最近自从跨年演讲之后,这篇文章点赞量激增...
  • 我的大学四年到毕业工作5年的学习路线资源汇总

    千次阅读 多人点赞 2020-03-31 13:37:10
    以下是我对大学四年和工作5年左右的一个学习路线整理,并将所有资料按照大一、大二…到工作五年,分别汇总到网盘里,以便不至于将资料弄到一堆,根本没法看。因为分享链接总是失效,可以通过关注公众号:bugstack...
  • Java菜鸟到大牛学习路线培训教程 百度网盘下载
  • Java从零到精通学习路线培训教程 百度网盘下载
  • Vue.js高仿饿了么外卖App学习记录

    千次阅读 2020-02-06 21:48:06
    这是mvc的简单调用流程,mvc模式是单向的数据绑定,view视图层调用model层,要通过中间层controller来实现。 mvvm模式是双向数据绑定,view,model,vm进行数据的绑定和事件的监听,对view和model进行监听,当有一方...
  • 平台模式与传统企业运营模式的不同之处在于,它并非仅是直线性、 单向价值链中的一个环节而已。平台企业是价值的整合者、多边群体的连接 者,更是生态圈的主导者。也正因如此,它以通过挖掘多方数据来拟定多层 级的...
  • 下载地址:百度网盘 大纲: 第1阶段(Java程序员) - Java语言基础 第2阶段(Java初级软件工程师) - JSP、Servlet、HTML、CSS、JS、Bootstrap、XML、AJAX、MySQL、SQL Server、Oracle 第3阶段(Java中级软件...
  • 实用软件

    千次阅读 2020-09-22 10:13:18
    百度网盘 功能 应用卸载 进入软件搜索软件卸载 文件粉碎 进入软件右上角工具箱内 拖拽文件到界面即可 创建还原点 设置栏–>系统还原 导出电脑的软件目录 设置栏–>导出软件列表 剪贴板 Ditto...
  • 百度网盘下载这是一套java菜鸟到大牛学习路线培训教程,由工作了10年的资深Java架构师整理。主要分5个阶段:Java程序员->Java初级软件工程师->Java中级软件工程师->Java高级软件工程师->Java系统架构师...
  • 有些图片没有显示,可以在百度网盘里边找到 链接:https://pan.baidu.com/s/1KnQHMjvwF41M4zmImUI8iQ 提取码:ltbu 小米 B+树 结构上 (1)B树中关键字集合分布在整棵树中,叶节点中不包含任何关键字信息,而B+树...
  • 工作越久,发现身边比自己年纪小的越多,我也时常在想,那些同龄或者比我大的都去哪里了,也许有些忙于家庭生活不亦乐乎,有些因为公司上市拿到可观的收入转行了,也许有在大公司做起了管理工作
  • HTTP权威指南pdf

    2018-02-28 09:51:00
    下载地址:网盘下载内容简介······超文本转移协议(Hypertext Transfer Protocol,HTTP)是在万维网上进行通信时所使用的协议方案。HTTP有很多应用,但最著名的是用于web浏览器和web服务器之间的双工通信。...
  • 通常,这些方法使用注意力集中在上下文的一小部分,并用一个固定的大小向量对其进行总结,暂时地耦合注意力,和/或经常形成单向注意力。本文介绍了双向注意流(bidaf)网络,它是一个多阶段的层次化过程,它在不同的...
  • 大学四年到毕业工作5年的学习路线资源汇总

    千次阅读 多人点赞 2020-11-24 08:26:35
    以下是我对大学四年和工作5年左右的一个学习路线整理,并将所有资料按照大一、大二…到工作五年,分别汇总到网盘里,以便不至于将资料弄到一堆,根本没法看。因为分享链接总是失效,可以通过关注博客:虚幻私塾,...
  • 还在被Java NIO虐?该试试Netty了!

    千次阅读 2020-07-02 21:32:04
    Netty的创始是韩国trustin lee,他现在韩国line公司工作,早前应用较多的Mina也是这牛人的作品。 Netty目前的项目leader是德国Norman maurer(之前在Redhat,全职开发Netty),也是《Netty in action》
  • 答:我想这是大部分看到这个标题都会问的问题.因为作为一个男人,我喜欢长一点,也不喜欢分割成几个部分.一家就要在一起,整整齐齐.好吧,正经点,其实整篇前言可以说都是在回答这个问题.你可以选择先看完前言,再决定...
  • 狂神redis学习笔记-整理

    千次阅读 多人点赞 2020-09-10 09:49:52
    阿里、百度:Redis + memecache 文档型数据库(bson格式 和json一样): MongoDB (一般必须要掌握) MongoDB 是一个基于分布式文件存储的数据库,C++ 编写,主要用来处理大量的文档! MongoDB 是一个介于关系型...
  • 每天晚上,当父母像平常一样很早催你上床睡觉时,你可能还想与好朋友交流思想、发现、小秘密、传闻、笑话和梦想,没有可以责备你,毕竟,渴望交流是大多数的天性。 当你们卧室还亮着灯时,你和你的好朋友可以临窗...
  • 本文来源于鲜枣课程今天我们所处的移动互联网时代,手机成了每个的生活标配。这些手机里,安装了形形色色的APP,提供了各种服务,彻底改变了我们的生活。这些服务里面,就包括我们今天的主角...
  • HTML5+CSS3

    万次阅读 多人点赞 2020-02-09 18:20:26
    1. 浏览器内核 五大浏览器四大内核 浏览器:IE(edge), 火狐, Safari, ...注1: 提到Chrome浏览器,一般会认为使用的Webkit内核(移动设备多),这种说法不完全确。Chrome发布于2008年,使用的渲染内核是Chromium...
  • 2020最新版java学习路线

    千次阅读 多人点赞 2020-04-01 10:15:05
    Java 基础 并发 JVM Java8 新特性 ...《Head First Java》(推荐,豆瓣评分 8.7,1.0K+评价): 可以说是我的 Java 启蒙书籍了,特别适合新手读当然也适合我们用来温故 Java 知识点。 《Java 核心技术卷 1+...
  • 本文总结了2011年上半年上线的或者关注相对较高的国内优秀的初创企业,主要是Web2.0Share周刊中介绍过的初创企业,如有遗漏,可以通过微博:@web20share 或者邮箱联系:watsonxu{at}web20share.com 本文PDF版本...
  • 本文所使用的资料已上传到百度网盘 【点击下载(209.31MB)】 ,提取码:6reh ,请在开始之前下载好所需资料。 【博主使用的python版本:3.6.2】 文章目录 【中文】【吴恩达课后编程作业】Course 5 - 序列...

空空如也

空空如也

1 2 3 4 5 6
收藏数 120
精华内容 48
关键字:

单向度的人百度网盘