arp 局域网arp攻击检测 为毛arp -a查到的ip物理地址一样 怎么解决致我我被局域网arp攻击检测的次数多,别人才几次

您所在位置: &
&nbsp&&nbsp&nbsp&&nbsp
 智能手机安全——有关WIFI安全探讨.doc 6页
本文档一共被下载:
次 ,您可全文免费在线阅读后下载本文档。
下载提示
1.本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。
2.该文档所得收入(下载+内容+预览三)归上传者、原创者。
3.登录后可充值,立即自动返金币,充值渠道很便利
需要金币:200 &&
你可能关注的文档:
··········
··········
智能手机安全——有关WiFi连接安全探讨
姓名:冯劢
摘要: WIFI的电磁波辐射传输方式让其安全密保问题显得尤为突出,所以,确保数据安全和完整是WIFI技术需要迫切解决的问题之一。那么,本文对WIFI技术应用进行了分析。从其加密算法上进行探讨,寻求可以解决WIFI无线网络安全的方法,结合分析,给出了一些可行性的建议。
关键词: WIFI,安全隐患,安全防范,WEP,WAP
1.WiFi的基本介绍
WIFI是IEEE定义的一个无线网络通信的工业标准IEEE802.11。可以将个人电脑、手持设备(IPDA、手机)等终端通过无线方式互相连接的技术。第二次世界大战后,无线通讯因在军事上应用的成功而受到重视,但缺乏广泛的通讯标准。于是,IEEE(美国电气和电子工程师协会)在1997年为无线局域网制定了第一个标准一一IEEE802.1l。IEEE 802.11标准最初主要用于解决办公室局域网和校园网中用户的无线接入,其业务主要限于数据存取,速率最高只能达到2Mbps。随着技术的发展,自从1997年无线局域网标准诞生以来,WIFI的发展已经有了十多年了。
最初开发无线局域网的目的是对有线LAN进行无线扩展,通过无线通信的方式实现有线LAN的功能,网络安装和维护更加方便,主要用于企业和家庭网络。但是,随着无线局域网技术的发展,出现了与电信网络融合提供公共无线局域网服务的趋势,这也极大地拓展了无线局域网的应用空间。虽然WIFI具有传输速度高、覆盖范围广等特点,其自身也存在着某些不足,如安全性差等方面问题都是需要考虑的问题。需要强调的是,尤其安全问题仍是WiFi而临的最大挑战。本文对WIFI网络技术做了初步的探讨,并对WIFI安全问题做了分析。由于WIFI以电磁波为载体来实现对数据的传输,数据通过电磁波在空中辐射传播的过程中,在接入点覆盖的范围之内,所有的无限终端都能接收到其信号,因此,这种WIFI的电磁波辐射传输方式让其安全密保问题显得尤为突出,所以,确保数据安全和完整是WIFI技术需要迫切解决的问题之一。那么,WIFI技术应用究竟存在着哪些安全隐患呢?其安全措施又有哪些?
WiFi网络的安全隐患
目前,许多公共场所,如飞机场、大型商场、餐饮店甚至公交车上等都提供了可供上网的免费WiFi服务,一般现在的无线上网步骤,一种是先打开无线网络,点击并连接某一个无线网络,然后打开IE浏览器,输入任意网址,浏览器会自动转入该无线的业务首页。然后根据提示输入手机号码,并点击“发送上网验证码” 随后,手机会收到一个上网验证码的短信,这时再打开浏览器,输入收到的验证码,点击“连接上网”就可以成功上网了。另外一种就更为简单了,直接连接上无线网络,然后输入店家提供的连接密码,就可以上网了。那么我们需要仔细的想一想,这些地方用WiFi上网究竟安全吗?
WiFi上网的安全隐患中,最最重要的还是在连接了无线网络后的个人信息的丢失。黑客是如何在公共场所盗取用户信息的呢?目前来看,黑客在公共场所盗取信息主要有三种方式。其中,搭建个假的WIFI,诱骗大家去点击是最常见的手段。黑客会在通常有无线网络的公共场所,只要一台Win7系统电脑、一套无线网络及一个网络包分析软件,设置一个无线热点AP,就能轻松搭建出一个WIFI网络同时为了让更多的手机用户被欺骗连接到该网络,该虚假的WIFI的命名会和周围免费无线网络的名称相同或者相似,且不设密码,可以轻松接人。周围的人群一般会拿出手机上网,这时会同时搜索到周围安全WIFI和虚假的WiFi网,因为后者不需要密码,而且和安全的无线网络的名称差不多,很多用户会首先连接它。那么接下来,黑客就可以用软件把连着虚假无线网络的用户的用户数据全部复制下来,然后利用专门的软件进行‘破译’,这样无论用户在手机或者手提电脑上浏览了哪些网站,这些网站又给你回复了哪些数据,比如文字啊,图片啊,以及用户登录时的用户名,密码等包括网银密码、炒股账号密码等,都可以分析出来。第二种方法是黑客向连结虚假WiFi的终端设备发送含有病毒的网页或是封邮件等等。如果用户打开了该病毒文件,那么如手机等终端就可能被安装木马程序,然后黑客就会盗取手机里的信息。还有一种方法就是给软件或是网站种植病毒程序,现在的智能手机是可以通过网络装载各种游戏、软件的,所以,黑客可能会瞄准这类网站,比如安卓系统有Android市场网站,苹果有Apple Store等。黑客把病毒和木马植入在这些程序里面,当你下载下来安装,打开后,就会中病毒,黑客在以此获取用户信息。
与有线网络相比,WLAN由于其物理上的公开性,经常遇到各方面的威胁:
正在加载中,请稍后...
81页15页11页21页71页126页90页114页11页26页本站之所有未作特别说明的内容均使用 .
POWERED_BY_MT_3.2面试心得分享 - 乔布简历
&面试心得分享
管理员:乔小堂
Hi,大家好,我是乔布简历的HRM 张君莉,大家叫我Lily姐就可以啦~~先自我介绍一下,我是85后的女汉子,辣妈一枚。
2008年毕业于武汉大学公共事业管理专业,先后在上市公司、外企、创业公司做HR。有过2年薪酬福利管理经验及5年招聘配置管理经验,重度HR爱好者。
~~哈哈,招聘经验让我阅人无数,有些许心得和感受,欢迎大家来探讨交流~
今天的分享的主题是针对大家对于求职应聘比较关心的是两个问题,一个是简历,另一个是面试 。
在这里我想先和大家分享一下HR是怎么筛选简历的?怎么样让自己的简历第一时间抓住HR眼球。
1、Hr是怎么筛选简历的?
HR筛选简历的时间会非常短,当天平均30秒左右,在校园招聘环节,海量简历铺天盖地,筛选简历的时间可能会更短。
举个例子,我2013年在西安做过一次校园招聘,当时是晚上7点在西安交大做的宣讲会,当时到场人数有630多人,宣讲结束后大约600人现场投递了简历.
这些简历我们需要当晚做好筛选通知第二天的面试,所以,看简历的时间真的很有限, 很多千篇一律的简历,浏览时间基本上会控制在10秒以内。
在筛选简历的时候,我比较喜欢看逻辑清晰、亮点鲜明的简历,在校园招聘环节,有几个信息是我非常希望第一眼能看到的。
1、基本信息:主要是学校、专业、性别、期望工作地点。
2、实习实践经历:与应聘岗位相关的实习实践经历(这部分能写的比较专业就很抢眼)。
3、获奖经历:这里1个是奖学金,另一个是反映专业能力的获奖经历。
说了HR是怎么筛选简历的,接下来再谈谈什么样的简历,会让hr眼前一亮。
2、什么样的简历,会让hr眼前一亮。
额,这个嘛,如果从视觉效果上来看,每个HR的审美观会各不相同。
所以,以样式、花哨等视觉效果取胜的简历不见得能让所有HR都眼前一亮;但是,逻辑清晰、专业突出、亮点鲜明的简历,肯定能抓住大多数识货HR的眼球哦。
所以,怎样写一份逻辑更清晰,专业更突出,亮点更鲜明的简历,请上乔布简历小组吧,有太多干货了,亲们,我只能帮到这里了,哈哈。
Ok,聊过hr喜欢的简历,接下来我们聊聊什么样的简历,hr会直接pass过去。
3、什么样的简历,hr会直接pass过去
呵呵,我能说空白简历么??
或者约等于空白简历,如果HR想知道的信息什么都没有,而且逻辑还很混乱,估计是个HR,都会Pass掉的。
比如我拿到了一份简历,在看基本信息的时候,我在第一行看到了学校,结果专业信息就得到最后一行去找了;想招个美女行政专员,但是性别只能从名字上去猜想~~这样的简历,我不会浪费时间的啦。
说完了简历,接下来,我们来聊聊面试,哈哈,我其实比较喜欢聊这个。
关于面试嘛,请大家先给我一点时间先balabala一下前言哈,主要是帮助大家更清楚、更系统滴认识招聘和面试~~~~
其实招聘这个工作呢,说白了就是要实现人岗匹配~这是招聘妹子的终极目标啊。
其实招聘这个工作说白了就是要实现人岗匹配~面试官手里会握着2杆称。
1杆是岗位要求,1杆是人的特质,面试官的工作就是需要通过面试考察方法对人的特质做出评价,看看这个人是不是适合这个岗位的,最终实现把合适的人放在合适的岗位上发光发热的终极目标~~
所以,招聘是个技术活哈,这门技术有道有术,道是方法论,术是具体方法,道的层面我给大家讲一个耳熟能详的“冰山模型“。
很多人力资源管理类专业的童鞋估计第一堂专业课可是学的这个吧~~
冰山模型告诉我们,人的特质分为表层素质(冰山以上)以及深层潜质(冰山以下的部分)。表层素质易被观察、评价、改造,如知识、技能等;深层潜质包括社会角色、自我形象、特质和动机,是人内在的、难以测量的部分。
它们不太容易通过外界的影响而得到改变,但却对人员的行为与表现起着关键性的作用。
所以,HR招聘评价的各类技术也是在这个模型的指导下去开展的,有些技术用来考察表层素质,如技术笔试、案例分析面试等;有些技术用来考察深层潜质,如各类人才测评,面试的过程中也基本是这2个方向的评价上来开展。
所以面试环节中,有些问题可能是考察你的知识和技能的,有些问题可能是考察你的特质和行为动机的,HR会通过面试过程中的你的表述,甚至你的表情动作等肢体语言来考察以上2个方向是否匹配招聘的岗位。
在术的层面,有太多面试方法和工具啦,大家去百度吧!!!我觉得对于应届生同学比较有帮助的是机构化面试,大家按照机构化面试的思路去准备面试简直就是反侦察神器,所以,大家可以重点去关注一下结构化面试啦~~
另外,我一般会把面试过程分为3个阶段。
第1个是暖场阶段,面试是跟陌生人产生交互,所以需要让对方放松警惕,消除紧张感,才能展现出ta最真实最原本的特质。
第2个阶段是考察评价阶段,知识技能考察,个人特质,行为动机考察2个方面去对候选人做出评价。
第3个阶段是确认、收尾的阶段,这个阶段一方面是把第2阶段评价有疑问的地方再确认一遍,另一方面是收尾工作,包括对公司的介绍、解答候选的疑问等等,我们可以把这个简称面试3段论哈~~~
三、面试中的常见问题
1、自我介绍到底怎么说才好,hr通过自我介绍想考验求职者哪些素质?
按照我刚刚介绍的面试3段论,我觉得自我介绍主要还是是第1阶段的东西,面试官希望通过你的自我介绍来缓和紧张气氛,做个小暖场,为后面的正式面试做好准备。当然,从自我介绍也能一定程度上看到候选人的某些技能和特质,比如表达能力、逻辑条理等。
当然,对于童鞋们来讲,一个出彩的自我介绍也很重要,因为面试有个首轮效应,第一印象好很重要哦,所以大家还是好好准备一下自我介绍吧!
再来回答大家提出的问题:自我介绍怎么说才好呢??我想说,提前准备,条理清晰,简明扼要;表诉清楚,语速得当;适量幽默,突出新意;态度诚恳,落落大方,就能让面试官过目不忘啦!!
2、面试时,hr经常问哪些问题?具体想考察求职者哪些?
这个问题,我想我前面提到的招聘之道的层面已经提到过了,万变不离其宗,HR面试过程中所有问的问题都离不开考察知识和技能,以及考察行为动机和个人特质这两个方面!
所以想知道这个问题的答案,必须得需要提前做足功课哦。你得提前了解自己所应聘的岗位,岗位有什么的知识和技能要求,做好这个岗位的工作需要有什么的行为特质。
比如,应聘财务岗位,需要对数字敏感,踏实稳重,而应聘销售岗位,需要主动积极外向;不同的岗位,要求的特质不一样,面试官要考察的点自然也就不一样了。
总体来讲,一个比较nice的面试官的问题肯定是起于你简历上的内容,但是不止简历上的内容。
他们可能会聊起你曾参加过的一次实践活动,但是会问到STAR全方面的信息,包括当时的外在环境与条件的背景,你的任务目标,你的行动过程,以及你最终实现的结果。
通过这些描述,他们可能会考察你的逻辑思维能力,或你的谈判能力,或你的团队协作能力等等~~看岗位需要哪些特质能力了~~
3、面试时,哪些因素能博得hr好感?
额,我能重复一下刚刚的口诀吗?提前准备,条理清晰,简明扼要;表诉清楚,语速得当;适量幽默,突出新意;态度诚恳,落落大方,就能让面试官过目不忘啦!
4、面试时,求职者问哪些问题,会显的很low?
最好不要问:请问我面试通过了没??这样让HR当场做判断的问题会让HR比较困扰,因为有些公司在校园招聘环节会有面试结束之后的综合会审,就是参与面试的面试官会在所有面试结束后根据各自的面试comments做最后判定,再决定出offer名单,所以,你懂的。
如果想知道接下来的环节与进程,可以礼貌性问一下:接下来是否还有其他环节,大概会在什么时候收到新的通知等等~~
我一般会告诉童鞋,由于童鞋比较多,所以没有进入下一轮的童鞋,抱歉我们无法一一通知了,如果有一下轮的安排,我们大约会在X天给出更新的通知,请耐心等待 。
还有一个问题,就是询问面试官,我的表现怎么样,还有什么需要改善的,其实这个问题也会让面试官比较尴尬。
因为校园招聘过程中,HR的工作量是很大的,我之前做过的校园招聘,基本上上每天连续都是到晚上2点多,一天面试60多人。所以面试的时间比较宝贵,他可能不太能有时间再继续帮你谈改进,所以,如果确定需要了解这个,可以等到所有面试结束之后再找面试官聊一下,会更有效果。
5、面试时,出现什么情况,会让hr直接在心里pass这个人?
这个主要也是看岗位情况吧,不同的岗位有不同的喜好和忌讳,HR选择Pass一个候选人,90%还是因为这个人的某些特质不适合某个岗位或者某个组织文化。
当然面试是一个主观性比较强的过程,HR也会有个人的主观判断。
我个人喜好来讲,我不太喜欢过于消极,一出现问题就把所有原因归结到外在环境的人,这样的人我会直接pass,对我们创业团队来讲,正能量和积极的工作态度特别重要;另外,迟到也是很大的减分项哦。
6、面试要注意哪些细节的东西?
着装会是一个比较重要的细节吧,得体的着装比较重要,具体可以参见职业小组的着装专题。
另外,其实面试并不是一个爆发性的东西,冰冻三尺非一日之寒,面试也是需要提前做很多功夫的,从远到近,应该做以下功课。
1、早规划,提前规划职业生涯,有针对性的去参加实习实践,让自己的经历以及简历丰满起来吧,面试时才有足够的资本去向面试官展示。
2、早准备,面试开始之前,需要提前了解应聘岗位的要求以及公司的企业文化,有针对性滴做好面试准备。
比如,应聘HR助理,最好把之前做过的HR相关的实习实践总结一下,如果缺乏实践经验,就按照之前学习的HR理论知识梳理一下自己参加的社会活动,有哪些是可以用HR专业的方法去总结或者改进。
另外,平时也需要有意识的去练习自己的表达、沟通能力,包括演讲、辩论或者与陌生人的沟通等等,帮助自己在面试的时候不会怯场。
………………………请叫我分隔线…………………………
Q: 面试最后hr 会问一句,对我们你有什么问题。这个时候问哪种能够加分呢。如果直接问薪资待遇会不会不好 ?
A:这个时候其实最加分的还是问问关于组织文化、关于培训和发展机会之类的问题最加分,如果这个过程中顺势谈一谈你对行业的见解(前提是你得做好功课,对行业真的有了解),肯定会加分不少。
比如应聘招聘助理,你可以问问:我最近有关注到出现了很多新的招聘渠道,比如乔布简历,他是一个专注校园招聘的平台,我入职之后有机会去接触更多的招聘渠道吗?诸如此类的~~
Q:老师您好!我是大三一名学生,我上次面试一家大公司的人事助理,来了一位面试官和我聊了20分钟左右,后来又来一个HR聊了15分钟,之后又来了第三位hr聊了15分钟,他们问的问题好多类似的,我以为他们想录我 的,后来我也没收到录取消息。我想知道是哪里有欠缺 才导致我面试的失败?
A:这个问题有太多不确定,可能没办法回答你,没有收到录取消息,有可能是你的面试表现不好,也有可能是因为他们的招聘有些调整,比如老大心情不好,不让HR招HR助理了~~
Q:我想问的是在签约后,然后还可以谈一下工资福利吗?
A:一般正规的校园招聘,在发offer的时候肯定会详细写明工资福利等待遇的,如果没有写明,可以问HR 。
Q:如果实习企业跟未来职业目标方向无关,但是企业超级好,该不该去?
A:呵呵,这位幸福的童鞋,如果没有其他的机会,建议你去试一试,正好通过实习检验一下自己的职业目标是否真的是自己喜欢的方向 。
Q什么叫个人特质?什么又叫行为动机?那么怎样的行为动机是受青睐的?
A:我们笑然姐姐是华师大的心理学硕士,关于个人特质,她的见解肯定更科学,另外,大家百度也可以脑补这个科普知识,在招聘层面,行为动机很简单啊,正向的行为动机肯定是受HR欢迎的,比如主动进取等,这点在任何岗位上都受青睐 。
Q:我想请问一下老师,如果企业有意向,想进一步了解,谈到了你的薪酬期望?这方面面试者如何与企业谈判?因为期望 太高,很容易被刷掉,而期望低了,又让自身价值不能用薪酬体现出来,从而使自己在涨工资的路上起点低。我们知道可以用行业职位平均水平来衡量,但是每个地区,每个行业以及每个企业都有不同的标准,这方面如何去把握这个找到适合的薪酬期望值。
A:一般来讲,企业在校园招聘上都会有自己的薪酬预算,所以offer大部分不是谈判出来的,HR不会因为你要8k而给你8k,不会因为你只要2k而只给你2k,建议大家可以根据同岗位,同学校的同学拿到的offer做参照,合理提出自己的期望(特别牛的没有参考意义) 。
Q: 您好,我想请问一下在面试过程中什么时候提问薪酬和福利会合适些呢?该如何问才不会引起面试官的反感?谢谢~
A:在面试结束之后,可以向HR如实说出你的期望,当然,这个大家可以从自己该岗位给我的发展空间~~等等 。
Q:谢谢lily姐的分享,我的职业目标也是人资管理,但是专业是经济学,做过几个月的猎头顾问,但是在面试中我的专业知识明显是很大的缺陷,而且我现在大三,其实很难做到很快就把人资知识补上,那请问我在面试时体现哪些优点可以弥补下专业不对口问题呢?
A:猎头顾问是一段不错实习经历啊,这个对招聘比较有帮助,建议你从招聘助理入手,慢慢拓展到HR全局~~期间也需要快速补充HR的理论知识哦 。
Q:Lily姐,请问在面试过程中 问哪些问题可以帮助自己更好地了解公司 同时也给自己加分,谢谢Lily姐,辛苦了 。
A: 比如了解一下公司的氛围啊,组织文化啊,行业地位,职业空间,培训发展等等,如果顺带能谈一下你的行业的了解和见解,逼格就更高啦,绝对加分~~~
Q:HR问我我有什么特长?我本人没有什么特别突出的地方,这个我应该怎么回答比较合适呢?
A:有个笑话,什么特长,腿特长算吗??我觉得,其实可以算~~哈哈 所以特长这个东西,可能不一定是要很明显的有成绩的地方,比如特别能坚持,每天坚持跑步或者坚持上晚自习,在我看来,这些都能算特长,为自己找点优势吧~~
Q:请问对于薪资问题 该怎么回答呢?在自我介绍环节中出除了自己的基本信息,实践经历外,还需要加什么会更好 ?
A: 如果HR主动问道薪资问题,就如实说出你的期望好了,当然,这个大家可以从自己应聘的岗位,同学们拿到的offer来做一定的参考,但是,说完期望之后,最好也加上:薪资只是我考虑的一个方面,我可能更看重该岗位给我的发展空间~~等等
Q:ily姐好,策划类和行政类岗位面试时需要具备哪些知识或者技能,经验是否很重要?
A:策划类和行政类岗位需要的知识和技能,请参考职位JD,每家公司对这个职位要求各有不同,可以仔细阅读一下职位JD,对于校园招聘来讲,经验是加分项,有好的实习实践经验,会更有优势。
Q:很多素质可能并不具备,但有意识的表现出来,这样却是不自然的,还是应该刻意表现吗?比如面试文案,没有实践经验,有哪些尽可能多的弥补方式?上门提交简历拜访合适吗?
A:你说的很对,是否应该刻意表现,应该不同岗位区别对待,比如销售岗位,面对客户,有时候确实需要你控制自己的表现,所以你是否擅长控制自己,可以表现,HR也会有观察和评价。
所以,是否应该刻意表现,取决于你喜欢什么样的工作,选你所爱,赴汤蹈火啊~~另外,如果没有实践经验,这点乔布简历已经交大家很多了。
有句俗话是:没吃过猪肉,可以见过猪跑~~呵呵,应聘文案,虽然没有文案经验,但是可以去关注很多段子手的经典作品,面试的时候侃侃这些作品也是极好的呀~~
Q:请问lily姐
,对于无领导小组讨论能具体谈下,如何表现自己才是王道?
A: 关于群面的表现,我想说3点:
1是第一个发言的会有优势,因为面试官会觉得你在态度上比较主动积极,敢于表现自己,这对大部分岗位是一个正向的特质
2是不要冒失发言,这个意思是有梳理好发言内容,没有准备好,就等准备好了再发言(所以要快速运转,快速准备哈),一旦发言,保证自己的表达流利,观点清晰
3是不是任何时候都积极主动就好,还是要审时度势,不要把积极主动变现成攻击性,那样就变成负面印象啦~~~
Q:请问,在招聘时,如果应的岗位与专业不对口,那么HR会更看重什么呢?
A:其实专业真心不是大问题,HR招聘的时候,专业也只是参照,比如我是学公共事业管理专业的,但是我在大二的时候就考了人力资源专业资格证书,大三的时候就申请了去企业的HR部门实习,同时在大学的一段兼职是组织同学组团帮助电信做一些市场调研。
这个过程中我要负责同学的招募,流程的培训,兼职工资的核算等等,其实这些都是根据本专业专业课以外学习的HR理论知识去梳理的,这些梳理结果体现到简历上,HR基本上会忽略你的专业,而去关注你的HR相关实习实践经验 。
Q:女生做人力的话会不会没有发展空间,以前一个人说女生做人力时间久的话容易感性,不利于公司招到合适的人 ?
A: 这个绝对不会的。
Q:你好,没有获过相关奖励也没有实践经历是不是就代表跟面试机会无缘了?
A:奖励和实习实践肯定是加分项,如果没有,也不代表能力差,只要面试的时候能展现出来相关的能力和潜力就可以。
Q:好!我想问下,我是非人力资源专业的大专生,下个月即将去实习。我想找一份关于人力资源方面的实习工作并打算在此领域长期发展。可是我在网申时发现,人力资源或人事方面的工作需要本科以上学历或有经验的人士。那我应该怎么为这种工作的面试以及后来的职业发展作准备呢?
A:可能很多知名公司对学历和经验有较高的要求,建议可以从非知名企业入手~~
Q:@天津-人力-宋伟: hr职业生涯的一个好的规划是怎样的?是不是大多数企业做到总监就不能再升了。对于如果我想继续做企业的管理层,应该怎样转型,还是在hr这条路上继续走下午也会有出路?
A:其实HR做到高层是企业战略实现的重要支持者与实践者,也是企业业务发展的很重要角色,无论从价值实现还是薪酬回报上,都不会输给业务类岗位,也绝对是企业的管理层,所以HR和业务岗位一样,殊途同归,最重要的还是你为组织带来的价值。
首先感谢一下若涵姐姐,不然就没有这个内推的资格来这一轮阿里巴巴的校园招聘打酱油了,8月底的时候据说个人简历通过了最初的审核,然后通知去参加了9月3号晚上在浙大玉泉校区搞的沙龙。赶到会场的时候刚好是通知的6点半,结果发现会场爆满!满到座无虚席之外还有好多在插蜡烛的!当时就震惊了,还好当时遇到个工作人员帮我搬了个椅子,后来才知道有好多没有被邀请的小蝌蚪也来凑热闹了,瞎。
本来以为只是听听他们在台上嚼舌头而已,结果到8点的时候开始说要做卷子了 - - 原来带笔的目的是在这里啊。当初报的时候分了研发、算法、前端三类,我义无反顾选了算法。卷子的话研发算法是一样的,前端是另一套。题目很少,就两道,一道题一面A4纸,时限40分钟。我凭印象简单概括一下吧。
第一题:就是说淘宝上每周都有很多浏览数据,每条PV日志都存一个1到2^63-1的数字表示浏览商品的ID。现在有10亿条PV日志文件,已知商品库中有5亿个不重复的商品,给你一台内存为2GB的电脑,让你找出哪些商品没有被浏览过。
当初看完题就掏出手机来按计算器了,看下存储10亿条数据占用多大的内存:
10^9 * 64 / 8 / 1024 / 1024 / 1024 = 7.45GB
好吧,给个8GB的内存好不好,现在内存也不贵啊。不过既然存不下,就只能乱搞了。
首先就是对10亿条PV日志进行一个预处理,商品才5亿个,浏览数据有10亿条,说明冗余非常之大,果断要去掉重复。去重看起来简单但是对10亿来说就困难了,必须要先排序,可是各种排序都得先把数据存进内存才行吧。所以我一装逼就想到了B+树,虽然我从来没写过B+也没用过,但不代表我不认识它对吧,这样就可以在硬盘上操作并维护了!接下来的工作就相对简单一点,如果删去冗余之后可以建起一张hashmap的话那么一切都搞定了,如果内存限制的缘故不能建hashmap,那么就充分利用2GB来建一张索引表,这样在遍历5亿个商品时尽可能地接近O(1)的查询时间复杂度。
第二题:给你一个wordsList,包含很多英文词组,然后再给你一个description,让你判断是否有wordsList中的词组在description中出现过。
这题有2个子问题,第一个问题是给你一个函数头,让你实现,比如c++的是:
bool check(list&string& wordsList, string description);
这个没什么好说的,暴力找出所有子串然后挨个去跟链表里的比较,应该就看一下各位童鞋的coding功底吧。
第二个子问题就是让你优化了,并且给出优化后的时间复杂度。
我的解法就是对wordsList进行重构,把它建成一棵字典树(trie树),然后利用KMP的模式匹配算法来拟对。这么一看不就是AC自动机的玩意儿了么,可是一没带模板二没仔细渗透研究过AC自动机,还是放弃了。相比起考后周围很多同学在讨论用hashmap优化的时候,我这个字典树应该能挣更多的分才对吧。最后的时间复杂度是O(NlogM),hash优化应该是O(NM),而时间开销主要是wordsList的大小M上面。
-----------------------------------卖萌的分割线(⊙o⊙)------------------------------------
然后就是今天早上10点赶去一淘的办公楼面试了!一大早怒打了好多个哈欠之后待在面试休息室里呆,休息室有水果零食可乐什么的,没多大欲望。中间看到各种人初面完被通知说回家等通知的,目测都是直接被抛弃了好悲惨,因为之前网上做了功课知道阿里巴巴的面试是初面通过之后马上终面的。
11点多才轮到我,屁股都坐麻了好么。给我初面的是一个目测40来岁的中年人,先是让我自我介绍然后让我讲解了下昨天笔试的题目,最后居然问了我这么一个问题:TCP/IP协议有哪几层,如果在浏览器输入则会用到什么协议。我在脑子里挖了好久终于把5层模型报出来了,然后简单说了下HTTP、DNS、TCP、IP这几个协议。我还在想我面的是算法工程师,怎么这么苦逼要回答这种东西。这时候这面试官说,其实我不怎么懂算法的,我帮你换一个面试官吧!我含泪跟他说谢谢然后心里暗骂WTF。
又是等了半个钟头啊,据说是给换了个考算法的面试官了。进去还是自我介绍然后讲昨天的笔试题,这讲两遍很累的好伐。然后这个很犀利的面试官给我出了两道题,第一题是本周淘宝上有5亿个商品成交数据,让你找出销量最高的10000个商品。
听完题目我就笑了,这不是我之前发的那篇日志里的最后一题么!虽然后来ycc大牛给了一个更快的算法,不过都是STL的东西不太好讲,反正才取10000个,那么还是优先队列搞起。先建表统计每个商品的成交数量,然后建一个长度为10000的优先队列,如果当前商品销量比队列中最少的要多,那么该商品入队并让原本最少的出队(队首),这样维护之后最后得到的就是销量最好的前10000个并且有序,时间复杂度为O(nlogm),n为总的元素个数,m为优先队列长度。
那面试官不知道怎么地会心一笑让我有点发麻,然后给我出了第二题:阿里旺旺里人和人之间交流产生了很多个商业群,要我找出一共有多少个不同的群。这个问题看起来就更简单了,想都没想就说了并查集,然后简单讲了下并查集是怎么工作的,时空复杂度是多少,就没了。接下来面试官就问了我一些别的,什么php啊android开发之类,酱油了一下就说我通过初面了。
---------------------------------秀节操的分割线(⊙o⊙)--------------------------------
初面完已经快12点了,出来让我去楼下吃个工作餐然后等下午的终试。本来以为有很多人吃饭的结果转了半天没找到吃饭的地方!太丢脸了问了下扫地的大妈,然后大妈指了指原来是在个小办公室里,两个之前在楼上见过的漂亮HR MM在那里吃饭,进去之后好尴尬地被热情欢呼着去领盒饭了 - - 我知道你们想要照片,可是我没有嗯哼。然后两HR就说一上午过初面的就6个,下午终面是三个面试官一起面的,1个半钟头,让我做好心理准备来着。这是打算把我吓出翔么?HR什么心态 -.- 两HR吃完早早地走了,我吃完,回到楼上继续坐着干等,然后我就对着这门一坐就是两个钟头。。。。。。
---------------------------------节操散落的分割线(⊙o⊙)--------------------------------
3点多终于被喊进去终面了!吃完中饭靠着窗户坐了两个钟头,我感觉自己已经处于一个半睡眠的状态了。进去之后看见两中年男人跟一个年轻男人,一个是一淘技术总监,一个是淘宝的,一个是支付宝的HR,顿时压力满满 - - 开始还是惯例先介绍了自己,然后那个做前端的死抓着我问Android,我在想我Android就这么点水平再被问下去就要出事了啊!果断扭转话题到ACM上面,终面没有那种考你智商的问题了,技术层面的反倒是谈了下MVC框架和一些设计模式,看来搞算法也不能是研发白痴。剩下大多问的是你未来的发展方向,薪水要求,最后我问了个问题是ACM的学习对进阿里巴巴工作有多大的影响,结果我大ACM怒被黑出翔 -.- 终面1个多钟头还是挺快的,最后在愉快的谈话氛围中结束了,说9月底等最终结果通知。Good luck~
查看更多面试内容请点击
阿里的内推相比校招通道要容易很多,反馈也很及时,基本面试30分钟内就会有进度更新。3.9投的简历,当天通过审核,3.16号一面,3.18二面和HR面。简单的分享下面经,说实话自己也没想到就能这么通过。真是非常的幸运。
一面是在晚上9.30左右接到电话通知的,面到了10.25吧,大概面了一个小时。面试的人说实话貌似不是特别专业,但是很耐心,很负责。一面主要针对的内容是简历上的项目,需要你对简历项目了解的十分透彻。下面是根据先后排序的个人简历项目部分。
个人简历:
1、产品策划、设计部分。会问的很详细,需要了解设计产品解决的需求,及各个功能。个人展开了一些校园社交,所以面试的主线就是社交。
2、实习经历,个人实习经历 创业邦DEMO8,不过面试官好像之前没听过,所以个人发挥了很多东西。
3、嘿邦团队,虽然团队是公众号,但也是一个产品。功能菜单如同产品功能,每个功能的设计点,解决什么问题。
4、歪楼产品。这部分问的比较少,问了做这个的原因。
5、PM求职宝典 众包写书, 问的较少
6、水果说 简单引入问了下
常规问题:
1、手机里有什么app,最常用什么app?
2、手淘的使用场景?
3、手淘如果让你加入社交,你怎么加?
4、手淘有哪些改进的地方?
常规问题都穿插在个人项目经历里,所以自己尽量引导面试官,我主要把面试官往社交方面引,说了很多他不知道的app。
其他的一些一面问题:
1、什么是产品经理,为什么要做产品经理?
2、你觉得淘宝搜索的产品经理每天干嘛?
3、你做的项目讲讲。
4、你还有什么问题要问我的么?
二面是视频面,面我的是个大叔。明显比一面要高冷而且专业很多,问题大致就是:
1、你理解的产品经理。
2、如何看待数据?
3、你平时用手淘么,介绍下。
4.手淘在交互上有什么改进。
5.如何预估你的产品风险?
6.有什么要问我的?
我问PM大叔的问题就是:您是如何评估一个应届生适不适合做PM的?大叔跟我说了三点,我概括了下就是:有经历、热爱、抠细节。
然后就是针对简历问了一些犀利的问题,因为之前自己确实没想过,比如你们众包写书项目是打算怎么推广的,目标用户是谁,当然这都比较好说。然后问我火的那篇文章是偶然因素还是必然因素等等,最无语的是记得说了句,你的简历上还有什么和产品相关的。大叔太高冷。不过还好过了。
三面(HR面)
HR面一般都是面试的最后一道关卡,基本上就是问一些平常的问题。看看你的性格神马的。面我的大致就是:
1、自我介绍。
2、为什么做产品经理?
3、产品经理在公司是什么价值?
4、为什么不读研?
5、工科生适不适合做PM?
6、接触的人中有木有特别棒的PM。
7、自己决定做PM的历程。
8、你觉得你和周边人有什么不一样的地方?
9、个人的一些项目。
10、遇到的最大的困难。
我问了HR姐姐同样的问题,您是如何评估一个应届生适不适合做PM的?HR姐姐hold住全场的赶脚,比大叔还犀利这时候,我总结了4点:理解基本职能、热情、敏锐洞察力、大量的实践经历。
总之感觉对经验还是很看重的,大家一定要多实践。同时,表述能力一定要到位、一定要敢说,多说。
来源于互联网
更多新鲜的阿里巴巴校招资讯请戳
阿里今年放出了一个职位叫安全运营专员,感觉就是为我设置的,于是我毫不犹豫投递了它,就在网申快要截止的时候,我突然对自己非法本非法硕的背景能否通过产生怀疑,于是临时改成了运营专员。
事实证明这个改动很重要,因为今年北京地区的安全运营专员一个offer都没发,我的朋友面试到最后一轮通知回去等电面,半个月过去都没接到电话,最后得知说这个岗位招满了,不再面试了。
笔试是五道主观题,在线,两小时。
大概是问什么大学时做过什么之类的,对于这个笔试题的筛选标准我不太清楚,所以就不多说了。之前面试百度的时候写过一份简单的产品分析报告,笔试时候就把报告写上去了。
大厅里,大概有五六群人,同时群面,一群人大概十个左右,两个面试官,面试者两个桌子都没有,讲话声音要大才能听见。
当时我们的题目是“冬天要来了,将’暖男’这个概念落地到一件产品上”,我们组十来个人被分成了两组,分别讨论,我们组只有四个人,时间只有十五分钟。
讨论之初,有两个小伙伴提出建议是把落地到暖宝宝上,我当时提出我们是来面互联网不是面沃尔玛,建议落地到一个APP,于是给出了一个思路,因为时间紧急,我当时略强势。
我心里已经有了一个粗略的APP框架和推广方案,所以很努力的在说服大家,很感谢当时的一个队友帮助我说服了大家,最后大家都赞同了这个想法,我抛出APP框架和推广大致方案后,就在白纸上开始写下大致框架图,同时小伙伴们接着完善具体的细节,我边听边记录,最后我进行了总结。
之后HR问了每个人两个问题,第一个问题是讲讲你最近看的一本书以及收获。我当时回答的是《浪潮之巅》,并把里面的什么基因伦啊应时而变啊什么的往阿里上面靠了靠。
忘记了HR问的第二个问题是什么……抱歉……
出了门就在系统里刷到了面试通过的状态了,很开心,因为当时觉得群面通过就是最大的鼓励了。
怀着尽最大努力,做最坏打算的心情。我还是做了很多准备:
群面之前就改过很多次简历了,单面之前又重新改了一次,加起来不能说改了八遍,但至少大的改动有三次,小的修改就更多了。简历上的每一句话我都斟酌过,每段经历改放在哪个位置我都有考虑过。
正如第一面时候面试官问我的,为什么你有好多经历都没有写在简历上,我觉得来应聘互联网的产品运营,你可以把你的简历就当做一个产品,这个产品的目标受众就是面试官,他的需求首先就是要在最短的时间看到你在运营方面的能力和潜力,一天面试这么忙,谁有空看你二十多年不相干的成长经历。
根据这个需求再修改简历,大刀阔斧的砍,不要舍不得你那些奖学金,差不多就得了,不要舍不得你那些项目经历描述,简明扼要的概括能力很重要。这样砍砍砍,就会有一个简单清爽有针对性的简历。总而言之,就是面试官要什么你就给什么。
2、梳理经历
我用XMIND将自己的每段经历做了思维导图,确保简历上的每段经历每个细节都经得起深挖。事实证明这个方法很有用,而且一劳永逸。面试官无论问到哪一个细节,就按照思维导图上的逻辑说就可以了。
3、准备了一份阿里某产品分析
大家都喜欢用心的人,如果用心研究过阿里某个产品,可以写份报告带过去。这份报告我用了两天的时间,两天睡了7个小时。
这里要特别感谢一位同学,因为这个产品刚上线不久,了解的人很少,我在知乎上想找点相关提问的时候发现只有一个知友回答过,于是私信了他,他很快给了回复并加了微信,给了我很多建议和严厉的批评,半夜两点加班回来看到我的报告初稿打电话把我训了一顿哈哈。非常感谢他~
基于以上准备,我就带上这三份东西区参加了单面。
阿里的面试官都很nice。第一轮面试很顺利的通过,只聊了十几分钟,聊简历。
第二轮面试明显比第一轮严苛了很多,也是一个女面试官,不知道是什么级别的,总之看起来很厉害,这段面试过程虽然很严苛,但我觉得并没有到压力面的地步,也许是因为面试官的level比较高,看问题的深度和角度也与我们不一样,而且面试官确实给了我很多启发。
之前说了,我准备了很多材料,二面的面试官看到我的材料只聊了几句简历就说,我们抛开材料来聊,每当我想把话题绕到我的材料的时候,她就说我们不聊这个,最后说我有些回答的没有关于简历方面的回答的好,是不是没有准备,我坦诚说是。我以为她会把我刷掉,没想到最后把我要去了她的部门。
第三轮面试是一个男面试官,又是聊简历,其实聊着聊着我感觉面试官对我没什么兴趣了,最后让我问问题,我问,你觉得运营专员需要什么能力,然后说在您回答之前,我想说下自己的看法。
这个问题我确实之前是没有仔细想过,临时按照运营专员的主要工作内容需要的能力做了梳理,没想到他突然眼睛BLING了一下说,你能有这样的回答让我很惊喜。所以说,不到最后一秒千万不要放弃面试,因为你下一秒的表现可能就会打动面试官。
这时候已经八点多了,我已经连续面了五个小时,面试官也饿了,开始吃他桌子上的小面包,我默默的说我也好饿,然后他给了我两个好丽友,结束了面试。
面完第三面,一直没吃饭一直在讲话,我已经要累吐了。然后工作人员反馈HR现在也很累,于是决定先回去,第二天再HR面。
HR面的时候,领我过去的工作人员恰好和我是校友,说帮我挑个好过些的HR,带我去了一个男HR那里。HR一拿到我的简历就说,咦你是不是三月面过我们的实习生?这个HR竟然就是当时群面时的HR,而我群面就被刷了,他竟然还记得我……我都不记得他了,果然HR还是很有专业素养的!
这一面还是聊简历,聊了工作地点等等。有一个比较大的失误就是HR当时问我想做什么样的运营,意思是问我想去哪个部门,我脑抽跟他讲了一堆运营是什么。后来回想起来很懊恼,但凡事总有遗憾嘛。
出来之后,我的校友工作人员帮我瞄了一眼评分表,第一轮是A+,其余都是A。于是我就回去等通知了,没想到一等就是一个月,之后收到了offer,各方面还都比较满意。算是拿到了dream offer 。
最后总结一下,找工作这种事。
1、首先,要有自己明确的目标。我不赞成海投,因为我懒,而且毫无准备的去面100家公司真的不如认认真真准备5家公司。最终只能有一个工作,所以找准心仪的offer,尽最大努力。
2、其次,有找工作小伙伴,大家有同样的兴趣,相互交换信息资源,是一件水涨船高的事情,相互帮助才能共赢呀。
3、最后,在自己心仪的公司面试到来之前,要多面几场练练手,这个跟第一条真的不矛盾啊!不要懒惰,一有机会就去参加笔试面试,积累经验,这样才能在心仪的公司来的时候准备好自己。
(原文来自网站 应届生论坛)
更多更详细关于阿里校招/实习的攻略,请移步:
A、在线面试
Q1、商业设计的一个特点是它的目的性非常强 , 精准直接快速的传达信息是它要实现的目的 , 现在如果需要设计一个配有宣传语的图片广告 , 下面是一个最简单的工作流程 , 但顺序已经被打乱了 , 请重新理顺工作步骤 , 如果对步骤有所补充 , 欢迎添加。
明确宣传目的
策划宣传语
与需求方沟通
Q2、你知道无印良品这个日本的品牌么 , 说说它在的产品在视觉上是如何做到与众不同的 , 如果不知道 , 找一个你熟悉的出众的牌子来说 , 阐述其特点以及你对这个品牌的理解或是看法.
Q3、我们现在需要做一个宣传一款只有简单通话功能的非智能手机的平面广告 , 但是又不想使用手机的图片做为主体 , 能帮我们想出一个方案么 , 用文字简单描述它 ,另外 , 用几个字概括你思考的出发点吧 , 还有其他的 “ 点 ” 么,有的话多说几个加分。
Q4、请吐槽一个网络产品的缺点 , 描述让你觉得最不满意的地方 , 视觉设计的缺陷也好、功能缺陷也好,说明理由并给出改进建议 .[ 提示:建议候选产品有新浪微博、淘宝首页、微信、旺旺、 QQ 、 Facebook 等,或者你自己选定的一个产品 ]
分组,分别自我介绍
给五个课题让小组研究,确定要做哪个课题,选出一名课题的组长,一分钟后给他答复,然后就围圈讨论着,确定好课题。三十分钟的时间讨论该课题的内容模块和功能模块。还有策划、开发、上线。30分钟后要找出一个发言人来对这次讨论做发言演说。
面试结束,把手里的两张纸写上名字,在一张纸的背面写上谁在讨论中贡献最大,谁的贡献最小。
查看更多面试内容请点击
1、说一说java的垃圾回收机制
Java的堆是一个运行时数据区,类的实例(对象)从中分配空间。Java虚拟机(JVM)的堆中储存着正在运行的应用程序所建立的所有对象,这些对象通 过new、newarray、anewarray和multianewarray等指令建立,但是它们不需要程序代码来显式地释放。一般来说,堆的是由垃 圾回收 来负责的,尽管JVM规范并不要求特殊的垃圾回收技术,甚至根本就不需要垃圾回收,但是由于内存的有限性,JVM在实现的时候都有一个由垃圾回收所管理的 堆。垃圾回收是一种动态存储管理技术,它自动地释放不再被程序引用的对象,按照特定的垃圾收集算法来实现资源自动回收的功能。
垃圾收集的意义
在C++中,对象所占的内存在程序结束运行之前一直被占用,在明确释放之前不能分配给其它对象;而在Java中,当没有对象引用指向原先分配给某个对 象的内存时,该内存便成为垃圾。JVM的一个系统级线程会自动释放该内存块。垃圾收集意味着程序不再需要的对象是&无用信息&,这些信息将被丢弃。当一个 对象不再被引用的时候,内存回收它占领的空间,以便空间被后来的新对象使用。事实上,除了释放没用的对象,垃圾收集也可以清除内存记录碎片。由于创建对象 和垃圾收集器释放丢弃对象所占的内存空间,内存会出现碎片。碎片是分配给对象的内存块之间的空闲内存洞。碎片整理将所占用的堆内存移到堆的一端,JVM将 整理出的内存分配给新的对象。
垃圾收集能自动释放内存空间,减轻编程的负担。这使Java 虚拟机具有一些优点。首先,它能使编程效率提高。在没有垃圾收集机制的时候,可能要花许多时间来解决一个难懂的存储器问题。在用Java语言编程的时候, 靠垃圾收集机制可大大缩短时间。其次是它保护程序的完整性, 垃圾收集是Java语言安全性策略的一个重要部份。
垃圾收集的一个潜在的缺点是它的开销影响程序性能。Java虚拟机必须追踪运行程序中有用的对象, 而且最终释放没用的对象。这一个过程需要花费处理器的时间。其次垃圾收集算法的不完备性,早先采用的某些垃圾收集算法就不能保证100%收集到所有的废弃 内存。当然随着垃圾收集算法的不断改进以及软硬件运行效率的不断提升,这些问题都可以迎刃而解。
垃圾收集的算法分析
Java语言规范没有明确地说明JVM使用哪种垃圾回收算法,但是任何一种垃圾收集算法一般要做2件基本的事情:(1)发现无用信息对象;(2)回收被无用对象占用的内存空间,使该空间可被程序再次使用。
大多数垃圾回收算法使用了根集(root set)这个概念;所谓根集就量正在执行的Java程序可以访问的引用变量的集合(包括局部变量、参数、类变量),程序可以使用引用变量访问对象的属性和 调用对象的方法。垃圾收集首选需要确定从根开始哪些是可达的和哪些是不可达的,从根集可达的对象都是活动对象,它们不能作为垃圾被回收,这也包括从根集间 接可达的对象。而根集通过任意路径不可达的对象符合垃圾收集的条件,应该被回收。下面介绍几个常用的算法。
1、引用计数法(Reference Counting Collector)
引用计数法是唯一没有使用根集的垃圾回收的法,该算法使用引用计数器来区分存活对象和不再使用的对象。一般来说,堆中的每个对象对应一个引用计数器。 当每一次创建一个对象并赋给一个变量时,引用计数器置为1。当对象被赋给任意变量时,引用计数器每次加1当对象出了作用域后(该对象丢弃不再使用),引用 计数器减1,一旦引用计数器为0,对象就满足了垃圾收集的条件。
基于引用计数器的垃圾收集器运行较快,不会长时间中断程序执行,适宜地必须 实时运行的程序。但引用计数器增加了程序执行的开销,因为每次对象赋给新的变量,计数器加1,而每次现有对象出了作用域生,计数器减1。
2、tracing算法(Tracing Collector)
tracing算法是为了解决引用计数法的问题而提出,它使用了根集的概念。基于tracing算法的垃圾收集器从根集开始扫描,识别出哪些对象可 达,哪些对象不可达,并用某种方式标记可达对象,例如对每个可达对象设置一个或多个位。在扫描识别过程中,基于tracing算法的垃圾收集也称为标记和 清除(mark-and-sweep)垃圾收集器.
3、compacting算法(Compacting Collector)
为了解决堆碎片问题,基于tracing的垃圾回收吸收了Compacting算法的思想,在清除的过程中,算法将所有的对象移到堆的一端,堆的另一 端就变成了一个相邻的空闲内存区,收集器会对它移动的所有对象的所有引用进行更新,使得这些引用在新的位置能识别原来 的对象。在基于Compacting算法的收集器的实现中,一般增加句柄和句柄表。
4、copying算法(Coping Collector)
该算法的提出是为了克服句柄的开销和解决堆碎片的垃圾回收。它开始时把堆分成 一个对象 面和多个空闲面, 程序从对象面为对象分配空间,当对象满了,基于coping算法的垃圾 收集就从根集中扫描活动对象,并将每个 活动对象复制到空闲面(使得活动对象所占的内存之间没有空闲洞),这样空闲面变成了对象面,原来的对象面变成了空闲面,程序会在新的对象面中分配内存。
一种典型的基于coping算法的垃圾回收是stop-and-copy算法,它将堆分成对象面和空闲区域面,在对象面与空闲区域面的切换过程中,程序暂停执行。
5、generation算法(Generational Collector)
stop-and-copy垃圾收集器的一个缺陷是收集器必须复制所有的活动对象,这增加了程序等待时间,这是coping算法低效的原因。在程序设 计中有这样的规律:多数对象存在的时间比较短,少数的存在时间比较长。因此,generation算法将堆分成两个或多个,每个子堆作为对象的一代 (generation)。由于多数对象存在的时间比较短,随着程序丢弃不使用的对象,垃圾收集器将从最年轻的子堆中收集这些对象。在分代式的垃圾收集器 运行后,上次运行存活下来的对象移到下一最高代的子堆中,由于老一代的子堆不会经常被回收,因而节省了时间。
6、adaptive算法(Adaptive Collector)
在特定的情况下,一些垃圾收集算法会优于其它算法。基于Adaptive算法的垃圾收集器就是监控当前堆的使用情况,并将选择适当算法的垃圾收集器。 透视Java垃圾回收
1、命令行参数透视垃圾收集器的运行
2、使用System.gc()可以不管JVM使用的是哪一种垃圾回收的算法,都可以请求Java的垃圾回收。在命令行中有一个参数-verbosegc可以查看Java使用的堆内存的情况,它的格式如下:
java -verbosegc classfile
可以看个例子:
class TestGC
public static void main(String[] args)
new TestGC();
System.gc();
System.runFinalization();
在这个例子中,一个新的对象被创建,由于它没有使用,所以该对象迅速地变为可达,程序编译后,执行命令: java -verbosegc TestGC 后结果为:
[Full GC 168K-&97K(1984K), 0.0253873 secs]
机器的环境为,Windows 2000 + JDK1.3.1,箭头前后的数据168K和97K分别表示垃圾收集GC前后所有存活对象使用的内存容量,说明有168K-97K=71K的对象容量被回 收,括号内的数据1984K为堆内存的总容量,收集所需要的时间是0.0253873秒(这个时间在每次执行的时候会有所不同)。
2、finalize方法透视垃圾收集器的运行
在JVM垃圾收集器收集一个对象之前 ,一般要求程序调用适当的方法释放资源,但在没有明确释放资源的情况下,Java提供了缺省机制来终止化该对象心释放资源,这个方法就是finalize()。它的原型为:
protected void finalize() throws Throwable
在finalize()方法返回之后,对象消失,垃圾收集开始执行。原型中的throws Throwable表示它可以抛出任何类型的异常。
之所以要使用finalize(),是由于有时需要采取与Java的普通方法不同的一种方法,通过分配内存来做一些具有C风格的事情。这主要可以通 过&固有方法&来进行,它是从Java里调用非Java方法的一种方式。C和C++是目前唯一获得固有方法支持的语言。但由于它们能调用通过其他语言编写 的子程序,所以能够有效地调用任何东西。在非Java代码内部,也许能调用C的malloc()系列函数,用它分配存储空间。而且除非调用了 free(),否则存储空间不会得到释放,从而造成内存&漏洞&的出现。当然,free()是一个C和C++函数,所以我们需要在finalize()内 部的一个固有方法中调用它。也就是说我们不能过多地使用finalize(),它并不是进行普通清除工作的理想场所。
在普通的清除工作中,为清除一个对象,那个对象的用户必须在希望进行清除的地点调用一个清除方法。这与C++&破坏器&的概念稍有抵触。在C++中, 所有对象都会破坏(清除)。或者换句话说,所有对象都&应该&破坏。若将C++对象创建成一个本地对象,比如在堆栈中创建(在Java中是不可能的),那 么清除或破坏工作就会在&结束花括号&所代表的、创建这个对象的作用域的末尾进行。若对象是用new创建的(类似于Java),那么当程序员调用C++的 delete命令时(Java没有这个命令),就会调用相应的破坏器。若程序员忘记了,那么永远不会调用破坏器,我们最终得到的将是一个内存&漏洞&,另 外还包括对象的其他部分永远不会得到清除。
相反,Java不允许我们创建本地(局部)对象--无论如何都要使用new。但在Java中,没有&delete&命令来释放对象,因为垃圾收集器会 帮助我们自动释放存储空间。所以如果站在比较简化的立场,我们可以说正是由于存在垃圾收集机制,所以Java没有破坏器。然而,随着以后学习的深入,就会 知道垃圾收集器的存在并不能完全消除对破坏器的需要,或者说不能消除对破坏器代表的那种机制的需要(而且绝对不能直接调用finalize(),所以应尽 量避免用它)。若希望执行除释放存储空间之外的其他某种形式的清除工作,仍然必须调用Java中的一个方法。它等价于C++的破坏器,只是没后者方便。
下面这个例子向大家展示了垃圾收集所经历的过程,并对前面的陈述进行了总结。
class Chair {
static boolean gcrun =
static boolean f =
static int created = 0;
static int finalized = 0;
if(created == 47)
System.out.println(&Created 47&);
protected void finalize() {
if(!gcrun) {
System.out.println(&Beginning to finalize after & + created + & Chairs have been created&);
if(i == 47) {
System.out.println(&Finalizing Chair #47, & +&Setting flag to stop Chair creation&);
finalized++;
if(finalized &= created)
System.out.println(&All & + finalized + & finalized&);
public class Garbage {
public static void main(String[] args) {
if(args.length == 0) {
System.err.println(&Usage: \n& + &java Garbage before\n or:\n& + &java Garbage after&);
while(!Chair.f) {
new Chair();
new String(&To take up space&);
System.out.println(&After all Chairs have been created:\n& + &total created = & + Chair.created +
&, total finalized = & + Chair.finalized);
if(args[0].equals(&before&)) {
System.out.println(&gc():&);
System.gc();
System.out.println(&runFinalization():&);
System.runFinalization();
System.out.println(&bye!&);
if(args[0].equals(&after&))
System.runFinalizersOnExit(true);
上面这个程序创建了许多Chair对象,而且在垃圾收集器开始运行后的某些时候,程序会停止创建Chair。由于垃圾收集器可能在任何时间运行,所以我们 不能准确知道它在何时启动。因此,程序用一个名为gcrun的标记来指出垃圾收集器是否已经开始运行。利用第二个标记f,Chair可告诉main()它 应停止对象的生成。这两个标记都是在finalize()内部设置的,它调用于垃圾收集期间。另两个static变量--created以及 finalized--分别用于跟踪已创建的对象数量以及垃圾收集器已进行完收尾工作的对象数量。最后,每个Chair都有它自己的(非 static)int i,所以能跟踪了解它具体的编号是多少。编号为47的Chair进行完收尾工作后,标记会设为true,最终结束Chair对象的创建过程。
关于垃圾收集的几点补充
经过上述的说明,可以发现垃圾回收有以下的几个特点:
(1)垃圾收集发生的不可预知性:由于实现了不同的垃圾收集算法和采用了不同的收集机制,所以它有可能是定时发生,有可能是当出现系统空闲CPU资源 时发生,也有可能是和原始的垃圾收集一样,等到内存消耗出现极限时发生,这与垃圾收集器的选择和具体的设置都有关系。
(2)垃圾收集的精确性:主要包括2 个方面:(a)垃圾收集器能够精确标记活着的对象;(b)垃圾收集器能够精确地定位对象之间的引用关系。前者是完全地回收所有废弃对象的前提,否则就可能 造成内存泄漏。而后者则是实现归并和复制等算法的必要条件。所有不可达对象都能够可靠地得到回收,所有对象都能够重新分配,允许对象的复制和对象内存的缩 并,这样就有效地防止内存的支离破碎。
(3)现在有许多种不同的垃圾收集器,每种有其算法且其表现各异,既有当垃圾收集开始时就停止应用程序的运行,又有当垃圾收集开始时也允许应用程序的线程运行,还有在同一时间垃圾收集多线程运行。
(4)垃圾收集的实现和具体的JVM 以及JVM的内存模型有非常紧密的关系。不同的JVM 可能采用不同的垃圾收集,而JVM 的内存模型决定着该JVM可以采用哪些类型垃圾收集。现在,HotSpot 系列JVM中的内存系统都采用先进的面向对象的框架设计,这使得该系列JVM都可以采用最先进的垃圾收集。
(5)随着技术的发展,现代垃圾收集技术提供许多可选的垃圾收集器,而且在配置每种收集器的时候又可以设置不同的参数,这就使得根据不同的应用环境获得最优的应用性能成为可能。
针对以上特点,我们在使用的时候要注意:
(1)不要试图去假定垃圾收集发生的时间,这一切都是未知的。比如,方法中的一个临时对象在方法调用完毕后就变成了无用对象,这个时候它的内存就可以被释放。
(2)Java中提供了一些和垃圾收集打交道的类,而且提供了一种强行执行垃圾收集的方法--调用System.gc(),但这同样是个不确定的方 法。Java 中并不保证每次调用该方法就一定能够启动垃圾收集,它只不过会向JVM发出这样一个申请,到底是否真正执行垃圾收集,一切都是个未知数。
(3)挑选适合自己的垃圾收集器。一般来说,如果系统没有特殊和苛刻的性能要求,可以采用JVM的缺省选项。否则可以考虑使用有针对性的垃圾收集器, 比如增量收集器就比较适合实时性要求较高的系统之中。系统具有较高的配置,有比较多的闲置资源,可以考虑使用并行标记/清除收集器。
(4)关键的也是难把握的问题是内存泄漏。良好的编程习惯和严谨的编程态度永远是最重要的,不要让自己的一个小错误导致内存出现大漏洞。
(5)尽早释放无用对象的引用。大多数程序员在使用临时变量的时候,都是让引用变量在退出活动域(scope)后,自动设置为null,暗示垃圾收集器来收集该对象,还必须注意该引用的对象是否被监听,如果有,则要去掉监听器,然后再赋空值。
一般来说,Java开发人员可以不重视JVM中堆内存的分配和垃圾处理收集,但是,充分理解Java的这一特性可以让我们更有效地利用资源。同时要注 意finalize()方法是Java的缺省机制,有时为确保对象资源的明确释放,可以编写自己的finalize方法。
查看更多面试内容请点击
2、指针,new和malloc 的区别
(1)malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。
(2)对于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。由于malloc/free是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强加于malloc/free。
(3)因此C++语言需要一个能完成动态内存分配和初始化工作的运算符new,以一个能完成清理与释放内存工作的运算符delete。注意new/delete不是库函数。
(4)C++程序经常要调用C函数,而C程序只能用malloc/free管理动态内存。
(5)new可以认为是malloc加构造函数的执行。new出来的指针是直接带类型信息的。而malloc返回的都是void指针。
3、数组和链表的区别是什么
数组是将元素在内存中连续存放,由于每个元素占用内存相同,可以通过下标迅速访问数组中任何元素。但是如果要在数组中增加一个元素,需要移动大量元素,在内存中空出一个元素的空间,然后将要增加的元素放在其中。同样的道理,如果想删除一个元素,同样需要移动大量元素去填掉被移动的元素。如果应用需要快速访问数据,很少或不插入和删除元素,就应该用数组。
链表恰好相反,链表中的元素在内存中不是顺序存储的,而是通过存在元素中的指针联系到一起。比如:上一个元素有个指针指到下一个元素,以此类推,直到最后一个元素。如果要访问链表中一个元素,需要从第一个元素开始,一直找到需要的元素位置。但是增加和删除一个元素对于链表数据结构就非常简单了,只要修改元素中的指针就可以了。如果应用需要经常插入和删除元素你就需要用链表数据结构了。
C++语言中可以用数组处理一组数据类型相同的数据,但不允许动态定义数组的大小,即在使用数组之前必须确定数组的大小。而在实际应用中,用户使用数组之前有时无法准确确定数组的大小,只能将数组定义成足够大小,这样数组中有些空间可能不被使用,从而造成内存空间的浪费。链表是一种常见的数据组织形式,它采用动态分配内存的形式实现。需要时可以用new分配内存空间,不需要时用delete将已分配的空间释放,不会造成内存空间的浪费。
(1) 从逻辑结构角度来看
a、数组必须事先定义固定的长度(元素个数),不能适应数据动态地增减的情况。当数据增加时,可能超出原先定义的元素个数;当数据减少时,造成内存浪费。
b、链表动态地进行存储分配,可以适应数据动态地增减的情况,且可以方便地插入、删除数据项。(数组中插入、删除数据项时,需要移动其它数据项)
(2)从内存存储角度来看
a、(静态)数组从栈中分配空间, 对于程序员方便快速,但自由度小。
b、链表从堆中分配空间, 自由度大但申请管理比较麻烦.
查看更多面试内容请点击
4、进程和线程的区别
这问题,估计计算机专业的同学在找研发等工作的时候都会遇到过。前几天某老牌软件厂商的电话面试就提到了这一经典问题,今天招聘会上又有不少同学说在面试的时候被问到这点。在这里我就起个头,大家有啥想法意见等都欢迎回帖交流。
要了解二者的区别与联系,首先得对进程与线程有一个宏观上的了解。
进程,是并发执行的程序在执行过程中分配和管理资源的基本单位,是一个动态概念,竟争计算机系统资源的基本单位。每一个进程都有一个自己的地址空间,即进程空间或(虚空间)。进程空间的大小 只与处理机的位数有关,一个 16 位长处理机的进程空间大小为 216 ,而 32 位处理机的进程空间大小为 232 进程至少有 5 种基本状态,它们是:初始态,执行态,等待状态,就绪状态,终止状态。
线程,在网络或多用户环境下,一个服务器通常需要接收大量且不确定数量用户的并发请求,为每一个请求都创建一个进程显然是行不通的,——无论是从系统资源开销方面或是响应用户请求的效率方面来看因此,操作系统中线程的概念便被引进了。线程,是进程的一部分,一个没有线程的进程可以被看作是单线程的。线程有时又被称为轻权进程或轻量级进程,也是 CPU 调度的一个基本单位。
说到这里,我们对进程与线程都有了一个大体上的印象,现在开始说说二者大致的区别。
进程的执行过程是线状的,尽管中间会发生中断或暂停,但该进程所拥有的资源只为该线状执行过程服务。一旦发生进程上下文切换,这些资源都是要被保护起来的。这是进程宏观上的执行过程。而进程又可有单线程进程与多线程进程两种。
我们知道,进程有 一个进程控制块 PCB ,相关程序段 和 该程序段对其进行操作的数据结构集 这三部分,单线程进程的执行过程在宏观上是线性的,微观上也只有单一的执行过程;而多线程进程在宏观上的执行过程同样为线性的,但微观上却可以有多个执行操作(线程),如不同代码片段以及相关的数据结构集。
线程的改变只代表了 CPU 执行过程的改变,而没有发生进程所拥有的资源变化。出了 CPU 之外,计算机内的软硬件资源的分配与线程无关,线程只能共享它所属进程的资源。与进程控制表和 PCB 相似,每个线程也有自己的线程控制表 TCB ,而这个 TCB 中所保存的线程状态信息则要比 PCB 表少得多,这些信息主要是相关指针用堆栈(系统栈和用户栈),寄存器中的状态数据。进程拥有一个完整的虚拟地址空间,不依赖于线程而独立存在;反之,线程是进程的一部分,没有自己的地址空间,与进程内的其他线程一起共享分配给该进程的所有资源。
线程可以有效地提高系统的执行效率,但并不是在所有计算机系统中都是适用的,如某些很少做进程调度和切换的实时系统。使用线程的好处是有多个任务需要处理机处理时,减少处理机的切换时间;而且,线程的创建和结束所需要的系统开销也比进程的创建和结束要小得多。最适用使用线程的系统是多处理机系统和网络系统或分布式系统。
----------------------------------
1、线程的执行特性。
线程只有 3 个基本状态:就绪,执行,阻塞。
线程存在 5 种基本操作来切换线程的状态:派生,阻塞,激活,调度,结束。
2、进程通信。
单机系统中进程通信有 4 种形式:主从式,会话式,消息或邮箱机制,共享存储区方式。
主从式典型例子:终端控制进程和终端进程。
会话式典型例子:用户进程与磁盘管理进程之间的通信。
查看更多面试内容请点击
阿里巴巴面试挺高效的,听说有人一天面试完成直接拿 offer 的,我们北京地区的媒体运营是两次面试,我初试是周二,复试是周三,HR面也在周三,周五就接到结果通知了。
简单讲讲面试流程和我的建议:
初试是在国家广告园区阿里巴巴办公区的地下室,很挤,虽然看得出来为校招做出了充分的准备,还是略显简陋,体验有些差。有些岗位因为面试官和面试时间不同,需要等很久,所以这里需要有耐心。
我初试是一个姐姐,大概是阿里巴巴事业娱乐群的 mentor 级的吧~先是自我介绍,然后看着简历,粗略地问了我学校、专业、成绩、实习和课外经历之类的。
然后针对我应聘的职位,给了我一个题目——如果娱乐宝要和大闹天宫 2 (甄子丹主演、除夕上线的那个)合作,应该如何进行策划和运营,会给几分钟思考。(这里请用脑子或笔理清楚基本思路和条理)
我用的是宝洁 STAR 法,S(情景)、T(任务)、A(行动/计划)、R(结果),结果好像说得也不太让她满意吧,不过最后她说和我沟通成本很低,让我过了。
复试考官会深挖简历,针对几乎每一个细节,challenge 你。
我还好,和他针锋相对,知道这是压力面,所以根本就不能害怕,直接和他据理力争的 argue,被他说服,然后不卑不亢地说「受教,谢谢分享」。就过了。
一个 nice 的大叔级人物,像初试一样,自我介绍,亲切地问我对于未来发展、自我规划等问题看法。
1、Learn to be professional。面试官桌上有自己的名字,自我介绍中加一个「XX 老师您好」,有加分效果;面试完握手,微笑说「很高兴和您交流」,加分;正装没有必要,干净整洁即可
2、条理性和逻辑。如果是应届毕业生,真心应该准备好一套好的自我介绍模板,对公司进行量身定制,防止自己瞎编,这是我的教训— — 其他的问题也是,比如说职业规划是什么?最大的优缺点是什么?最大的成就是什么?
3、深挖简历中的细节和故事。我觉得准备面试,除了对企业和职位的相关领域有良好的初步了解——能扯淡之外,还要对简历中的每一个点进行细抠,都有一个有趣 or 牛逼的故事,让别人觉得「哇塞,你这个人感觉还是有那么一点牛逼可吹的」。
希望有帮助。
(原文来自网站 应届生论坛)
更多更详细关于阿里校招/实习的攻略,请移步:
5、http协议
HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展。目前在WWW中使用的是HTTP/1.0的第六版,HTTP/1.1的规范化工作正在进行之中,而且HTTP-NG(Next Generation of HTTP)的建议已经提出。
HTTP协议的主要特点可概括如下:
1.支持客户/服务器模式。
2.简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
3.灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
4.无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
5.无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。
一、HTTP协议详解之URL篇
http(超文本传输协议)是一个基于请求与响应模式的、无状态的、应用层的协议,常基于TCP的连接方式,HTTP1.1版本中给出一种持续连接的机制,绝大多数的Web开发,都是构建在HTTP协议之上的Web应用。
HTTP URL (URL是一种特殊类型的URI,包含了用于查找某个资源的足够的信息)的格式如下:
[&:&port][abs_path]
http表示要通过HTTP协议来定位网络资源;host表示合法的Internet主机域名或者IP地址;port指定一个端口号,为空则使用缺省端口80;abs_path指定请求资源的URI;如果URL中没有给出abs_path,那么当它作为请求URI时,必须以“/”的形式给出,通常这个工作浏览器自动帮我们完成。
1、输入:www.
浏览器自动转换成:
2、http:192.168.0.116:8080/index.jsp
二、HTTP协议详解之请求篇
http请求由三部分组成,分别是:请求行、消息报头、请求正文
1、请求行以一个方法符号开头,以空格分开,后面跟着请求的URI和协议的版本,格式如下:Method Request-URI HTTP-Version CRLF
其中 Method表示请求方法;Request-URI是一个统一资源标识符;HTTP-Version表示请求的HTTP协议版本;CRLF表示回车和换行(除了作为结尾的CRLF外,不允许出现单独的CR或LF字符)。
请求方法(所有方法全为大写)有多种,各个方法的解释如下:
请求获取Request-URI所标识的资源
在Request-URI所标识的资源后附加新的数据
请求获取由Request-URI所标识的资源的响应消息报头
请求服务器存储一个资源,并用Request-URI作为其标识
请求服务器删除Request-URI所标识的资源
请求服务器回送收到的请求信息,主要用于测试或诊断
CONNECT 保留将来使用
OPTIONS 请求查询服务器的性能,或者查询与资源相关的选项和需求
应用举例:
GET方法:在浏览器的地址栏中输入网址的方式访问网页时,浏览器采用GET方法向服务器获取资源,eg:GET /form.html HTTP/1.1 (CRLF)
POST方法要求被请求服务器接受附在请求后面的数据,常用于提交表单。
eg:POST /reg.jsp HTTP/ (CRLF)
Accept:image/gif,image/x-xbit,... (CRLF)
HOST:www. (CRLF)
Content-Length:22 (CRLF)
Connection:Keep-Alive (CRLF)
Cache-Control:no-cache (CRLF)
//该CRLF表示消息报头已经结束,在此之前为消息报头
user=jeffrey&pwd=1234
//此行以下为提交的数据
HEAD方法与GET方法几乎是一样的,对于HEAD请求的回应部分来说,它的HTTP头部中包含的信息与通过GET请求所得到的信息是相同的。利用这个方法,不必传输整个资源内容,就可以得到Request-URI所标识的资源的信息。该方法常用于测试超链接的有效性,是否可以访问,以及最近是否更新。
2、请求报头后述
3、请求正文(略)
三、HTTP协议详解之响应篇
在接收和解释请求消息后,服务器返回一个HTTP响应消息。
HTTP响应也是由三个部分组成,分别是:状态行、消息报头、响应正文
1、状态行格式如下:
HTTP-Version Status-Code Reason-Phrase CRLF
其中,HTTP-Version表示服务器HTTP协议的版本;Status-Code表示服务器发回的响应状态代码;Reason-Phrase表示状态代码的文本描述。
状态代码有三位数字组成,第一个数字定义了响应的类别,且有五种可能取值:
1xx:指示信息--表示请求已接收,继续处理
2xx:成功--表示请求已被成功接收、理解、接受
3xx:重定向--要完成请求必须进行更进一步的操作
4xx:客户端错误--请求有语法错误或请求无法实现
5xx:服务器端错误--服务器未能实现合法的请求
常见状态代码、状态描述、说明:
//客户端请求成功
400 Bad Request
//客户端请求有语法错误,不能被服务器所理解
401 Unauthorized //请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用
403 Forbidden
//服务器收到请求,但是拒绝提供服务
404 Not Found
//请求资源不存在,eg:输入了错误的URL
500 Internal Server Error //服务器发生不可预期的错误
503 Server Unavailable
//服务器当前不能处理客户端的请求,一段时间后可能恢复正常
eg:HTTP/1.1 200 OK (CRLF)
2、响应报头后述
3、响应正文就是服务器返回的资源的内容
四、HTTP协议详解之消息报头篇
HTTP消息由客户端到服务器的请求和服务器到客户端的响应组成。请求消息和响应消息都是由开始(对于请求消息,开始行就是请求行,对于响应消息,开始行就是状态行),消息报头(可选),空行(只有CRLF的行),消息正文(可选)组成。
HTTP消息报头包括普通报头、请求报头、响应报头、实体报头。
每一个报头域都是由名字+“:”+空格+值 组成,消息报头域的名字是大小写无关的。
1、普通报头
在普通报头中,有少数报头域用于所有的请求和响应消息,但并不用于被传输的实体,只用于传输的消息。
eg:Cache-Control
用于指定缓存指令,缓存指令是单向的(响应中出现的缓存指令在请求中未必会出现),且是独立的(一个消息的缓存指令不会影响另一个消息处理的缓存机制),HTTP1.0使用的类似的报头域为Pragma。
请求时的缓存指令包括:no-cache(用于指示请求或响应消息不能缓存)、no-store、max-age、max-stale、min-fresh、only-if-
响应时的缓存指令包括:public、private、no-cache、no-store、no-transform、must-revalidate、proxy-revalidate、max-age、s-maxage.
eg:为了指示IE浏览器(客户端)不要缓存页面,服务器端的JSP程序可以编写如下:response.sehHeader(&Cache-Control&,&no-cache&);
//response.setHeader(&Pragma&,&no-cache&);作用相当于上述代码,通常两者//合用
这句代码将在发送的响应消息中设置普通报头域:Cache-Control:no-cache
Date普通报头域表示消息产生的日期和时间
Connection普通报头域允许发送指定连接的选项。例如指定连接是连续,或者指定“close”选项,通知服务器,在响应完成后,关闭连接
2、请求报头
请求报头允许客户端向服务器端传递请求的附加信息以及客户端自身的信息。
常用的请求报头
Accept请求报头域用于指定客户端接受哪些类型的信息。
eg:Accept:image/gif,表明客户端希望接受GIF图象格式的资源;Accept:text/html,表明客户端希望接受html文本。
Accept-Charset
Accept-Charset请求报头域用于指定客户端接受的字符集。eg:Accept-Charset:iso-8859-1,gb2312.如果在请求消息中没有设置这个域,缺省是任何字符集都可以接受。
Accept-Encoding
Accept-Encoding请求报头域类似于Accept,但是它是用于指定可接受的内容编码。eg:Accept-Encoding:gzip.deflate.如果请求消息中没有设置这个域服务器假定客户端对各种内容编码都可以接受。
Accept-Language
Accept-Language请求报头域类似于Accept,但是它是用于指定一种自然语言。eg:Accept-Language:zh-cn.如果请求消息中没有设置这个报头域,服务器假定客户端对各种语言都可以接受。
Authorization
Authorization请求报头域主要用于证明客户端有权查看某个资源。当浏览器访问一个页面时,如果收到服务器的响应代码为401(未授权),可以发送一个包含Authorization请求报头域的请求,要求服务器对其进行验证。
Host(发送请求时,该报头域是必需的)
Host请求报头域主要用于指定被请求资源的Internet主机和端口号,它通常从HTTP URL中提取出来的
eg:我们在浏览器中输入:
浏览器发送的请求消息中,就会包含Host请求报头域,如下:
Host:www.
此处使用缺省端口号80,若指定了端口号,则变成:Host:www.:指定端口号
User-Agent
我们上网登陆论坛的时候,往往会看到一些欢迎信息,其中列出了你的操作系统的名称和版本,你所使用的浏览器的名称和版本,这往往让很多人感到很神奇,实际上,服务器应用程序就是从User-Agent这个请求报头域中获取到这些信息。User-Agent请求报头域允许客户端将它的操作系统、浏览器和其它属性告诉服务器。不过,这个报头域不是必需的,如果我们自己编写一个浏览器,不使用User-Agent请求报头域,那么服务器端就无法得知我们的信息了。
请求报头举例:
GET /form.html HTTP/1.1 (CRLF)
Accept:image/gif,image/x-xbitmap,image/jpeg,application/x-shockwave-flash,application/vnd.ms-excel,application/vnd.ms-powerpoint,application/msword,*/* (CRLF)
Accept-Language:zh-cn (CRLF)
Accept-Encoding:gzip,deflate (CRLF)
If-Modified-Since:Wed,05 Jan :25 GMT (CRLF)
If-None-Match:W/&80b1a4c018f3c41:8317& (CRLF)
User-Agent:Mozilla/4.0(MSIE6.0;Windows NT 5.0) (CRLF)
Host:www. (CRLF)
Connection:Keep-Alive (CRLF)
3、响应报头
响应报头允许服务器传递不能放在状态行中的附加响应信息,以及关于服务器的信息和对Request-URI所标识的资源进行下一步访问的信息。
常用的响应报头
Location响应报头域用于重定向接受者到一个新的位置。Location响应报头域常用在更换域名的时候。
Server响应报头域包含了服务器用来处理请求的软件信息。与User-Agent请求报头域是相对应的。下面是Server响应报头域的一个例子:
Server:Apache-Coyote/1.1
WWW-Authenticate
WWW-Authenticate响应报头域必须被包含在401(未授权的)响应消息中,客户端收到401响应消息时候,并发送Authorization报头域请求服务器对其进行验证时,服务端响应报头就包含该报头域。
eg:WWW-Authenticate:Basic realm=&Basic Auth Test!&
//可以看出服务器对请求资源采用的是基本验证机制。
4、实体报头
请求和响应消息都可以传送一个实体。一个实体由实体报头域和实体正文组成,但并不是说实体报头域和实体正文要在一起发送,可以只发送实体报头域。实体报头定义了关于实体正文(eg:有无实体正文)和请求所标识的资源的元信息。
常用的实体报头
Content-Encoding
Content-Encoding实体报头域被用作媒体类型的修饰符,它的值指示了已经被应用到实体正文的附加内容的编码,因而要获得Content-Type报头域中所引用的媒体类型,必须采用相应的解码机制。Content-Encoding这样用于记录文档的压缩方法,eg:Content-Encoding:gzip
Content-Language
Content-Language实体报头域描述了资源所用的自然语言。没有设置该域则认为实体内容将提供给所有的语言阅读者。
eg:Content-Language:da
Content-Length
Content-Length实体报头域用于指明实体正文的长度,以字节方式存储的十进制数字来表示。
Content-Type
Content-Type实体报头域用语指明发送给接收者的实体正文的媒体类型。eg:
Content-Type:text/charset=ISO-8859-1
Content-Type:text/charset=GB2312
Last-Modified
Last-Modified实体报头域用于指示资源的最后修改日期和时间。
Expires实体报头域给出响应过期的日期和时间。为了让代理服务器或浏览器在一段时间以后更新缓存中(再次访问曾访问过的页面时,直接从缓存中加载,缩短响应时间和降低服务器负载)的页面,我们可以使用Expires实体报头域指定页面过期的时间。eg:Expires:Thu,15 Sep :12 GMT
HTTP1.1的客户端和缓存必须将其他非法的日期格式(包括0)看作已经过期。eg:为了让浏览器不要缓存页面,我们也可以利用Expires实体报头域,设置为0,jsp中程序如下:response.setDateHeader(&Expires&,&0&);
五、利用telnet观察http协议的通讯过程
实验目的及原理:
利用MS的telnet工具,通过手动输入http请求信息的方式,向服务器发出请求,服务器接收、解释和接受请求后,会返回一个响应,该响应会在telnet窗口上显示出来,从而从感性上加深对http协议的通讯过程的认识。
实验步骤:
1、打开telnet
1.1 打开telnet
运行--&cmd--&telnet
1.2 打开telnet回显功能
set localecho
2、连接服务器并发送请求
2.1 open www. 80
//注意端口号不能省略
HEAD /index.asp HTTP/1.0
我们可以变换请求方法,请求桂林电子主页内容,输入消息如下
open www. 80
GET /index.asp HTTP/1.0
//请求资源的内容
2.2 open .cn 80
//在命令提示符号下直接输入telnet .cn 80
HEAD /index.asp HTTP/1.0
3、实验结果:
3.1 请求信息2.1得到的响应是:
HTTP/1.1 200 OK
//请求成功
Server: Microsoft-IIS/5.0
//web服务器
Date: Thu,08 Mar :51 GMT
Connection: Keep-Alive
Content-Length: 23330
Content-Type: text/html
Expries: Thu,08 Mar :51 GMT
Set-Cookie: ASPSESSIONIDQAQBQQQB=BEJCDGKADEDJKLKKAJEOIMMH; path=/
Cache-control: private
//资源内容省略
3.2 请求信息2.2得到的响应是:
HTTP/1.0 404 Not Found
//请求失败
Date: Thu, 08 Mar :50 GMT
Server: Apache/2.0.54 &Unix&
Last-Modified: Thu, 30 Nov :41 GMT
ETag: &-e7c76980&
Accept-Ranges: bytes
X-Powered-By: mod_xlayout_jh/0.0.1vhs.markII.remix
Vary: Accept-Encoding
Content-Type: text/html
X-Cache: MISS from zjm152-.cn
Via: 1.0 zjm152-.cn:80&squid/2.6.STABLES-&
X-Cache: MISS from th-.cn
Connection: close
失去了跟主机的连接
按任意键继续...
4 、注意事项:
1)出现输入错误,则请求不会成功。
2)报头域不分大小写。
3)更深一步了解HTTP协议,可以查看RFC2616,在上找到该文件。
4)开发后台程序必须掌握http协议
六、HTTP协议相关技术补充
高层协议有:文件传输协议FTP、电子邮件传输协议SMTP、域名系统服务DNS、网络新闻传输协议NNTP和HTTP协议等
中介由三种:代理(Proxy)、网关(Gateway)和通道(Tunnel),一个代理根据URI的绝对格式来接受请求,重写全部或部分消息,通过 URI的标识把已格式化过的请求发送到服务器。网关是一个接收代理,作为一些其它服务器的上层,并且如果必须的话,可以把请求翻译给下层的服务器协议。一 个通道作为不改变消息的两个连接之间的中继点。当通讯需要通过一个中介(例如:防火墙等)或者是中介不能识别消息的内容时,通道经常被使用。
代理(Proxy):一个中间程序,它可以充当一个服务器,也可以充当一个客户机,为其它客户机建立请求。请求是通过可能的翻译在内部或经过传递到其它的 服务器中。一个代理在发送请求信息之前,必须解释并且如果可能重写它。代理经常作为通过防火墙的客户机端的门户,代理还可以作为一个帮助应用来通过协议处 理没有被用户代理完成的请求。
网关(Gateway):一个作为其它服务器中间媒介的服务器。与代理不同的是,网关接受请求就好象对被请求的资源来说它就是源服务器;发出请求的客户机并没有意识到它在同网关打交道。
网关经常作为通过防火墙的服务器端的门户,网关还可以作为一个协议翻译器以便存取那些存储在非HTTP系统中的资源。
通道(Tunnel):是作为两个连接中继的中介程序。一旦激活,通道便被认为不属于HTTP通讯,尽管通道可能是被一个HTTP请求初始化的。当被中继 的连接两端关闭时,通道便消失。当一个门户(Portal)必须存在或中介(Intermediary)不能解释中继的通讯时通道被经常使用。
2、协议分析的优势—HTTP分析器检测网络攻击
以模块化的方式对高层协议进行分析处理,将是未来入侵检测的方向。
HTTP及其代理的常用端口80、在network部分用port标签进行了规定
3、HTTP协议Content Lenth限制漏洞导致拒绝服务攻击
使用POST方法时,可以设置ContentLenth来定义需要传送的数据长度,例如ContentLenth:,在传送完成前,内 存不会释放,攻击者可以利用这个缺陷,连续向WEB服务器发送垃圾数据直至WEB服务器内存耗尽。这种攻击方法基本不会留下痕迹。
4、利用HTTP协议的特性进行拒绝服务攻击的一些构思
服务器端忙于处理攻击者伪造的TCP连接请求而无暇理睬客户的正常请求(毕竟客户端的正常请求比率非常之小),此时从正常客户的角度看来,服务器失去响应,这种情况我们称作:服务器端受到了SYNFlood攻击(SYN洪水攻击)。
而Smurf、TearDrop等是利用ICMP报文来Flood和IP碎片攻击的。本文用“正常连接”的方法来产生拒绝服务攻击。
19端口在早期已经有人用来做Chargen攻击了,即Chargen_Denial_of_Service,但是!他们用的方法是在两台Chargen 服务器之间产生UDP连接,让服务器处理过多信息而DOWN掉,那么,干掉一台WEB服务器的条件就必须有2个:
(1)有Chargen服务
(2)有HTTP 服务
方法:攻击者伪造源IP给N台Chargen发送连接请求(Connect),Chargen接收到连接后就会返回每秒72字节的字符流(实际上根据网络实际情况,这个速度更快)给服务器。
5、Http指纹识别技术
Http指纹识别的原理大致上也是相同的:记录不同服务器

我要回帖

更多关于 arp攻击 的文章

 

随机推荐