搜狐-技术类岗位-面试经验

以下内容来自于应聘者回忆整理

很多同学都想得到搜狐的实习或者校招机会。那从过来人的角度谈谈,要通过搜狐的实习、校招面试,都有哪些经验和注意事项呢?今天就跟大家分享一下。

【电话面试】

1、项目经验

面试官通常会通过简历里的项目经验去考察你的专业知识。面试官会根据你说的内容,看你是否真的做过这个项目,考察你的实际专业知识和逻辑能力是否清晰。你可以选择简历中项目经验部分写的一个最熟悉项目展开去回答。介绍项目主要采用STAR原则去讲解,有过程,有结果。

STAR原则是四个四个英文单词的首字母组合,分别是Situation(情景)、Task(目标)、Action(行动)和Result(结果)。

2、gc 怎么工作,分代实际中怎么使用,jvm 调优

【GC是如何工作的】

GC 只管理那些容器对象,比如 List、Dict、Set 之类,这些对象的创建都是通过 _PyObject_GC_Alloc 实现,GC 则在每次通过这个函数创建之时,试图进行内存回收。当然并不是每次都会触发,内存回收需要满足一定的条件,其中最主要的一条是:

// Modules/gcmodule.c:1971 state->generations[0].count > state->generations[0].threshold

0 代对象总数需要超过阈值: 700,所以内存回收的首要条件是 0 代内存的情况。

【分代实际中如何使用】

分代算法为每个可回收的堆内存对象记录年龄(每个对象在被创建时初始年龄为0, 之后每经历一次GC, 如果未被回收掉就把它的年龄加1).

对于年龄小于某个固定值(JAVA中默认是15岁, 不是现实中成年人的18岁哈)的对象被认为是属于年轻代(Young). 对于年轻代内的对象使用复制算法进行内存回收, 这里有个假设是年轻代的对象一般非常不稳定, 每次GC都能回收掉其中的决大部分, 根据经验这个假设在现实生活中基本是成立的.

对于年龄高过这个固定值的对象被认为是属于老年代(Old). 对于老年代的对象使用标记整理算法, 这里也有个假设是老年代的对象一般比较稳定, 内存空间紧张, 这个假设也基本是成立的.

【jvm调优】

第1步:分析GC日志及dump文件,判断是否需要优化,确定瓶颈问题点;

第2步:确定JVM调优量化目标;

第3步:确定JVM调优参数(根据历史JVM参数来调整);

第4步:调优一台服务器,对比观察调优前后的差异;

第5步:不断的分析和调整,直到找到合适的JVM参数配置;

第6步:找到最合适的参数,将这些参数应用到所有服务器,并进行后续跟踪。

3、分布式了解多少,说说你知道的

分布式系统一定是由多个节点组成的系统。其中,节点指的是计算机服务器,而且这些节点一般不是孤立的,而是互通的。这些连通的节点上部署了我们的节点,并且相互的操作会有协同。不同的业务模块部署在不同的服务器上或者同一个业务模块分拆多个子业务,部署在不同的服务器上,解决高并发的问题,提供可扩展性以及高可用性,业务中使用分布式的场景主要有分布式存储以及分布式计算。分布式存储中可以将数据分片到多个节点上,不仅可以提高性能(可扩展性),同时也可以使用多个节点对同一份数据进行备份。

分布式环境的特点

(1)分布性:服务部署空间具有多样性

(2)并发性:程序运行过程中,并发性操作是很常见的。比如同一个分布式系统中的多个节点,同时访问一个共享资源。数据库、分布式存储

(3)无序性:进程之间的消息通信,会出现顺序不一致问题

4、cookie 的安全性

Cookie的目的是为用户带来方便,为网站带来增值,一般情况下不会造成严重的安全威胁。 Cookie文件不能作为代码执行,也不会传送病毒,它为用户所专有并只能由创建它的服务器来读取。 另外,浏览器一般只允许存放300个Cookie,每个站点最多存放20个Cookie,每个Cookie的大小限制为4KB,因此,Cookie不会塞满硬盘,更不会被用作"拒绝服务"攻击手段。

5、spring mvc 好处

(1)清晰的角色划分:控制器(controller)、验证器(validator)、命令对象(command obect)、表单对象(form object)、模型对象(model object)、Servlet分发器(DispatcherServlet)、处理器映射(handler mapping)、试图解析器(view resoler)等等。每一个角色都可以由一个专门的对象来实现。

(2)强大而直接的配置方式:将框架类和应用程序类都能作为JavaBean配置,支持跨多个context的引用,例如,在web控制器中对业务对象和验证器validator)的引用。

(3)可适配、非侵入:可以根据不同的应用场景,选择何事的控制器子类(simple型、command型、from型、wizard型、multi-action型或者自定义),而不是一个单一控制器(比如Action/ActionForm)继承。

(4)可重用的业务代码:可以使用现有的业务对象作为命令或表单对象,而不需要去扩展某个特定框架的基类。

(5)可定制的绑定(binding)和验证(validation):比如将类型不匹配作为应用级的验证错误,这可以保证错误的值。再比如本地化的日期和数字绑定等等。在其他某些框架中,你只能使用字符串表单对象,需要手动解析它并转换到业务对象。

(6)可定制的handler mapping和view resolution:Spring提供从最简单的URL映射,到复杂的、专用的定制策略。与某些web MVC框架强制开发人员使用单一特定技术相比,Spring显得更加灵活。

(7)灵活的model转换:在Springweb框架中,使用基于Map的键/值对来达到轻易的与各种视图技术集成。

(8)可定制的本地化和主题(theme)解析:支持在JSP中可选择地使用Spring标签库、支持JSTL、支持Velocity(不需要额外的中间层)等等。

(9)简单而强大的JSP标签库(Spring Tag Library):支持包括诸如数据绑定和主题(theme)之类的许多功能。他提供在标记方面的最大灵活性。

(10)JSP表单标签库:在Spring2.0中引入的表单标签库,使用在JSP编写表单更加容易。

(11)Spring Bean的生命周期可以被限制在当前的HTTp Request或者HTTp Session。准确的说,这并非Spring MVC框架本身特性,而应归属于Spring MVC使用的WebApplicationContext容器。

6、模拟情景:抓取一个网站会含有很多 url 的新闻,新闻有重复的,重复率有百分之 10-20,如何知道这些 新闻是见到过还是没见到过的。

7、反问

想要更多搜狐实习、校招的机会,请点击这里

  • 1、刺猬实习遵循行业规范,任何转载的稿件都会明确标注作者和来源
  • 2、刺猬实习的原创文章,请转载时务必注明"来源:刺猬实习",不尊重原创的行为刺猬实习或将追究责任
  • 3、作者投稿可能会经刺猬实习编辑修改或补充。

相关推荐