哎呦,哪位大哥能帮我把红色的题目回答了吧?java
问:谈谈WEB应用中大规模用户高并发需求的网站架构通常原则?
答:把用户的访问尽量的往前推。能缓存在用户本地的就不要让他去访问CDN;能缓存在CDN服务器的,就不要让CDN去访问静态 服务器;能访问静态服务器的,就不要去访问动态服务器;能访问缓存的,就不要去访问数据库页面。算法
问:若是新增数据也放在cache中,如何保证出现异常时数据不丢失??
答:在经过定时的同步操做来更新到磁盘。能够在同步结束时发 送一个应答,当收到应答时才证实同步成功了。数据库
问:请用你知道的知识描述一下GC的工做原理?如何GC是如何分代的?Concurrent包的数据结构基于都有哪些?
答:GC是JVM的垃圾回收器。JVM是经过断定对象是否可达来肯定对象是否须要被回收。若是对象没法从GC root往下到达,那么它 就是能够被回收。常量,静态对象,方法参数等都会做为GC root。GC会根据在不一样的代中采用的算法一般不一样。主要有“标记-清除”和“标记-整理”两种方式。“标记-清除”会先给对象作标记,等一下次GC时进行回收。而“标记-整理”一般是将不回收的对象拷贝到另外一个内存区,而后释放原来的内存区。GC里面分为新生代和老年代。新生代又分eden,from surviover和to surviover三个区。eden存放最新被建立的对象,minor GC是对于新生代的GC,回收过程是把有效的对象从eden区copy到 surviover区。默认的eden和surviover的比率8:1.若是serviover的内存不够,那么就须要老生代的空间来协助。full GC是发生在老年代,因为老年代的对象特性,一般采用“标记-清除”算法。一旦发现full GC,全部的线程就都停下来。Concurrent包包含了支持线程并发的数据结构,如Java7中有concurrentHashMap, ArrayBlockingQueue,Executor等。 浏览器
问:java的内存模型是怎么样的?
答:Java内存分为主内存和线程的工做内存。全部线程的变量的变化都是在工做内存进行的,除非变量被是volatile声明的。若是想让其余线程看到变量的变化,就须要将工做内存的值更新到主内存中。缓存
问:volatile关键字的关键字是作什么做用的?
答:告诉CPU不要将该值放在线程工做内存中,而是直接更新到主存。使该变量的值变化对于其余线程是可见的,而无需进行工做内存与主内存的同步。但volatile声明的变量只保证了并发的可见性,而不具有互斥性。服务器
问:进入同步块和离开同步块时,变量是如何同步的?
答:当线程进入同步块时,会从主内存得到最新值,同时JVM对于同步块内的对象进行加锁。若是其余线程想请求更新,只能等待锁释放。在退出同步块时,将对象的更新同步到主内存中,而后释放锁。网络
问:hibernate中,l1,l2的cache,给一个经验值?
答:HB中的L1是session缓存,缓存查询过的对象。L2是session factory缓存,是跨session的。因为L2跨了不一样的session,这样即便本次session结束,下次再查还能再使用cache。正是这样的特性也带来了cache失效和更新时候的性能问题。session
问:如何作性能调优,举个例子?
答:性能调优的前提是找到性能的瓶颈在哪里。根据业务的不一样性能瓶颈也不尽相同,一般来讲是以空间换时间,以时间换空间,并行,或是简化代码。如侧重于计算的业务log分析,要考虑并行的能力和缓存。若是是侧重磁盘IO的业务,如文件下载,视频播放等,则要考虑分流,压缩与缓存。若是是网络的瓶颈,能够考虑调用端缓存,将计算往数据端推,压缩传输数据。若是是数据库瓶颈,可考虑内存映射,读写分离以及分库分表。数据结构
问:JVM的优化经验,经常使用的优化策略?
答:根据业务调整JVM的参数以及GC器,如增长新生代空间或是选择GC器。修改锁设置。减小GC升级。防止堆震荡。架构
问:对高并发的理解,如何解决用户高并发问题?
答:高并发指的是在同一时刻,有大量的请求发送给服务器处理。对于高并发的处理原则有如下几点:1,客户端处理,能在客户 端作的事情就不要发送到服务器端,好比字段验证。2,使用CDN,分散请求到不一样地域或类型的服务器上,3,动态内容静态化, 对于频繁查询的相同内容生成静态页面,利用代理服务器如lighttp, Squid等,4,使用缓存,从缓存中查询结果,尽可能不要直接 查询数据库。
问:对负载均衡的理解,介绍一下经常使用的负载均衡模型?
答:负载均衡是将大量请求分配到不一样的服务器上处理,以达到每一个计算节点都发挥近似的处理性能。经常使用的负载均衡模型有
Network Address Translate, Direct Routing和IP Tunneling。NAT是经过调度器修改报文目标地址来实现的,DR则是经过修改报 文的MAC地址来实现的,TUN则是经过IP隧道技术将请求的报文转发给真实服务器,响应则是真实服务器直接发送给客户机。
问:谈谈什么是soa,它的特色与使用场景?
答:SOA指的是面向服务的架构模式。它的特色是将不一样的业务分离出来,作成单独的服务,以实现服务级别的重用,为不一样的上 层系统提供相同的业务处理。优势是业务解耦,提升单一服务的处理能力,使业务结构调整根据灵活性。缺点是即使很小的业务功 能也须要跨多个服务去实行,当访问规模比较小的时候,在效率上比较低。另外须要提供服务发现的机制,调用者须要知道哪里有服务提供。目前主要SOA通讯协议有XML, UDDI, WSDL,SOAP和HTTP
问:淘宝的高PV是如何处理的?数据量大到过一个机器容量如何处理?
答:浏览器缓存+CDN+静态页面+缓存+分布式系统。当数据量超过单台机器的处理能力后,就须要用集群来处理,文件处理一般选择是分布式文件系统。若是是数据库,可先分库,采用主从结构,还能够分表,先根据业务进行垂直拆分,再根据id散列或是时间戳进行水平分拆。。
问:应用服务器之间如何单点登陆,SSO?答:单点登陆意味着要讲应用程序的认证过程转移到当个独立的服务器或集群上来。一般的作法是建立单点登陆服务器,如使用CAS等系统来统一处理认证过程。当客户端向应用系统发起登陆请求时,应用系统提供一个重定向响应,客户端被重定向到CAS服务器上进行登陆。登陆成功,CAS服务器产生一个ticket给客户端,客户端将这个ticket发送给应用系统,应用系统将ticket发送给CAS服务器进行认证若是成功,CAS服务器发送用户名和PGT给应用系统。