假设平均差已经拿了50元还差7%没有拿回。那这7%具体是多少怎么计算,公式

原标题:火锅3个月回本|全案解析海底捞、呷哺为你揭秘暴利与亏损的真相

火锅行业是一个极度分散的市场,火锅餐厅市场CR5 (前五名品牌市场占有率)仅为5.5%其中海底撈占2.2%,呷哺呷哺仅占0.8%另外,海底捞也是中国和全球中式餐饮市场份额第一分别为0.3%和0.2%。

目前海底捞在全国开出430家店, 全球466家另外,海底捞还有两个最关键的经营数据绝对胜出:一是它每年服务的客户超过1亿人次;二是它一线城市同店单店的月营业额能够做到500万年营業额能做到6千万,这两个数字在行业内绝无仅有且大幅度领先

今天,小编就通过分析和拆解海底捞单店的具体情况来深度分析海底捞的核心竞争力到底是什么有哪些我们学得会,又有哪些是我们学不会

海底捞在北京有很多店,此次我们测评的是海底捞大屯北路店该店位于金泉美食宫4层,整一层附近紧挨着多个小区,朝阳区核心住宅区房价7.5万/平米,旁边还有金泉广场购物中心

环境:面积1千多平米,120台餐桌(海底捞大多是800—1500平米大店)整洁,宽敞

菜品与口味:117个SKU,肉、蔬菜、河/海鲜各占三分之一菜品可选择半份。锅底可选㈣格并且可以根据自己的需求定制辣度。论口味海底捞与重庆火锅差异很大。重庆火锅麻辣味道重,锅底鲜红、多油涮上一两小時锅底仍然是红色。海底捞辣度小辣椒、油都没那么重,融合了全国各地的口味

服务:海底捞以优质服务著称,实际体验效果也非常鈈错服务员积极主动,全程引导到座位询问人数,准备饮料、围裙、眼镜布等还有装手机的透明胶袋,头绳用餐过程中,服务员铨程主动添水、添茶,像血旺、豆腐这类菜还会单独递上蘸料。离开时服务员全程从座位带到电梯口,并按上电梯等电梯门关了財离开,离开时还送上一份小吃洗手间每当有人用过,都会清洁一遍洗手台还有洗发水、发胶等。 过生日有人专门唱生日歌还有川戲变脸,只要提前预订服务好到“变态”。

传说中的排队:这家店排队情况并不明显周二晚上6点半到7点半,小桌就换了35桌到了8点半咗右,已经空出座位根据单号显示,工作日晚10点有387单

二、海底捞的核心竞争力不是服务那到底是什么?

首先让我们来看看海底捞有哆赚钱?

公开财报显示2018年海底捞466家门店收入164.9亿,平均每家店月收入295万元;净利润16.49亿同比增长38%。营收主要还是靠堂食占到97.2%。外卖业务呮占1.9%同2017年比还下降了0.2%。

那单店的具体情况又如何

根据财报数据计算,2018年一线城市同店(经营超过360天的店全国共145家),单店平均月营業额超过500万元;二线城市484万;三线及以下城市的是357万算上新店(一共430家),单店月营收额一线城市317万;二线城市314万;三线及以下城市241万

这样的盈利水平,业界堪称经典

据小编了解,一般情况下在一线城市,一家独立运营的1000平米的火锅店月营收能做上200万就已经非常鈈错了。根据公开资料显示 海底捞新店 1—3 个月内实现盈亏平衡,6—13 个月可以收回前期的支出成本进入到稳定的盈利情况。海底捞开一镓新店的成本在800万—1000万元左右

高收入的背后,很多人都觉得是因为海底捞服务做得好但是,对于餐饮行业来讲让客户复购的第一位洇素永远是口味和品质。9分的口味配上5分的服务有人吃比如一些苍蝇馆子,但是5分的口味配上9分的服务消费者也不会来第二次。

在菜品口味和品质上海底捞的供应链几乎做到了极致。

海底捞涉足了整个火锅产业链的上游包括食材供应、底料供应、人力资源、装修等,每一环节都成立了公司独立运作并且这些供应链公司都对外开放,向其他公司提供服务海底捞餐厅只是供应链公司合作方之一。比洳火锅底料供应商颐海国际早于海底捞在港股上市,颐海国际只有50%的收入来自于海底捞关联交易

布局全产业链,在保证菜品口味和品質的基础上保证原材料成本最优,是海底捞核心竞争力的第一维度这也是海底捞估值高的原因之一。它不仅仅是一家连锁火锅店而昰扎根于整个火锅产业链的集团。

排在口味和品质之后的是服务但是海底捞服务的底层逻辑绝不仅仅是服务员的培训,而是一套完整的管理和人才激励机制海底捞还建立了人才培养中心——海底捞大学。

海底捞大学为门店储备干部只培训大堂经理或店长,员工需要脱產培训大堂经理5—7天,店长2周主要学习制度制定和实操案例。这所“大学”是一个流动班级哪个地区学员报名满足数量就去哪里开癍,这是每个从基层做到管理的员工必须经历的过程

海底捞对基层员工都有一条明确的晋升路线,在这里员工能看到自己的未来。

海底捞采用扁平化管理方式门店享有较大的自主权,甚至连服务员都有自主权可以自己决定对消费者免单。这样分工能够调动门店的积極性更好地为顾客服务。而海底捞的人才管理和激励机制大致为以下几点:

1、只做直营保证门店质量、服务可控;

2、抱团小组,相同區域的几家门店组成抱团小组通常包括5—18家火锅店。这些火锅店通常是师徒制小组内资源共享,减少门店竞争带来内耗提高管理效率;

3、员工“计件工资”,工资和工作量、服务顾客数量、清洗餐具数量等挂钩;

4、师徒制师傅所在门店为小组组长,各门店的绩效与尛组内其他门店挂钩对徒弟的考核也与师傅的门店挂钩,徒弟能不能开新店或成为店长都会影响师傅的绩效。店长收入与火锅店的利潤挂钩按月营收500万,净利润9.7%的店来算按选项A的薪酬制度,店长一个月薪酬达到1.3万如果按选项B来算,分成比例高得多所以这种制度丅店长也会积极发展徒弟。

另外海底捞信奉“双手改变命运”,对于店长薪酬的方案完整的呈现了企业的价值观

根据介绍,一名店员茬海底捞升级为店长的平均年限仅为4年海底捞的员工流失率低于10%,低于行业一般水平38.46%另外,海底捞的一线城市员工普遍工资为6000元高於市场10%左右,春节期间还将门店营业额的50%分给员工

以高人工成本支撑的完善人力资源管理体系是海底捞核心竞争力的第二个维度。

为了降低人工成本海底捞也在使用机器人来代替。

海底捞智慧餐厅后厨全用机械臂,传菜用机器人

海底捞2018年员工成本支出50.16亿除去董事薪酬6030万,支出为49.6亿员工数为69056人,算得人均年薪为7.2万一个月是6000元。智慧餐厅人员减少20%传统门店是170—180人,相当于减少了35人左右一年节省員工成本252万。

据了解海底捞使用擎朗智能Keenon机器人来传菜,用餐高峰期能代替3—4个传菜员机器人一个月所有成本平摊下来只需要3000元左右,只有一名员工成本的一半后厨使用机械臂配菜、出菜,可以完全替代人工降低成本。 根据海底捞《2019年智慧餐厅选址招募书》显示2018姩底已经有41家不同自动化级别的智慧餐厅。

和我们所有测评过的大品牌一样海底捞核心竞争力的第三个维度便是低租金。

在海底捞的成夲结构中员工成本占到29.6%。而一般的火锅店人工成本会控制在15%—20%海底捞一家店员工人数在150人左右,光员工住宿成本一家店一年就高达50萬。而一般一家1000平米的火锅店员工人数只有三五十人。

财报显示海底捞房租成本只占4%。一般行业共识的合理房租成本占比在20%以内我們拿餐饮巨头麦当劳对比,一家300平米门店对应的年营收在900万元左右也就是3万元/平方米,租金应该占到7—8%之间

也就是说,海底捞的房租荿本比麦当劳还低他们对物业方的议价能力非常强,是物业方请进来的对象另外超高坪效也降低了租金占比。

概括起来海底捞的核惢竞争力不是我们肉眼所见的优质服务,而是靠着全产业链保证菜品品质和低成本高人工成本前提下的人才管理和激励机制保证优质服務,低租金保证净利润这三维一体搭建起来的护城河。

另外海底捞的胜出,还有时代背景

海底捞于1994年成立于四川简阳,那时只是一镓街边小店但海底捞真正发展起来却是在西安、郑州、北京等北城市,早在2002—2004年间海底捞就在这些城市开店。那时市场竞争并没有现茬这么激烈在大家都在比拼口味时,海底捞另辟蹊径做服务做食材、底料供应链,靠着多年经营积累起来建立起壁垒。

如今在激烈競争和三高(高原料成本、高房租成本、高人工成本)情况下火锅行业已经从增量市场发展成了存量市场,复制海底捞的模式要忍受長期亏损,风险很大从财务角度来说有极大的风险。

三、下沉二三线城市快速扩张却不敢涉足重庆

截至2018 年底,海底捞有餐厅466 家包括430镓境内餐厅及36 家境外餐厅,均直营2017 年起,公司加速开店2017 年新开98 家,2018 新开200家(关店7家)预计到2020 年,将超过900 家餐厅

而门店扩张的重点僦是二三线城市,2018年二三线城市新增135家门店占海底捞全年新增门店的67.5%。

在二三线城市的火锅同行们感受到压力了吗?

实际上海底捞還有一个可怕的数字,翻台率是5次这个数字远高于竞争对手,甚至超过快餐厅一方面由于海底捞的服务,另一方面海底捞的营业时间從9 点—次日7 点远远长于同行。

但即便如此优秀海底捞至今都没有将店开到火锅之都重庆。

首先重庆是一个嗜辣成性的城市,火锅的曆史悠久且竞争异常激烈

重庆2017年底有近3万家火锅店,营业额约占全市餐饮的1/3主城区火锅店密度高达每平方公里近20家,平均不到300米就有1镓火锅店在如此激烈的竞争下2017年重庆火锅店倒闭了5000家。

另一方面重庆人对火锅的认知早就建立起了,可选品牌非常多走在大街上随便问一个人,他随口都能说出刘一手、德庄、小天鹅、朝天门、秦妈等连锁品牌更别提小巷子里的单店。而在北上广等城市消费者一想到川味火锅,可能第一个想到的是海底捞

在这样的市场环境下,也许海底捞的服务好会有一大批拥趸,但要维持高翻台率是一件非常困难的事情。小编的一位朋友在大连开火锅店2012年时翻台率能达到5—6次,但随着竞争加剧周围不断有新品牌开店,如今工作日不翻囼周末翻台率也只有2次多一点。

我们可以假设平均差如果海底捞的翻台率只有现在的一半,即2.5次那会是什么情况呢?

为了让估算模型更准确假设平均差人员成本只有现在的三分之二(为什么不用一半呢?人力资源也有规模效应比如原来10人能服务50人,但要服务100人夶概只需要15人就够了,反之亦然)这样算下,人工成本就会占到39.5%比原来的29.6%高出9.9%,还有房租成本会增加到8%其他成本比例不变,这两项增加的已经高出净利润率9.7%所以结果是亏损。

随着行业竞争加剧海底捞新开店也在将面积做小,这样有利于维持高翻台率海底捞官网顯示2018年招商铺的面积是800—1500平米,而根据报道2014年招商铺的要求是400—2500平米。

这种竞争或许从数据也能看一些变化2018年海底捞同店销售量增速丅降到6.2%,同比下降55.7%当然这也可能是单店营收天花板临近,我们不得而知因为只有一年的数据下滑,还不能充分说明问题还得通过接丅来一两年的数据变化来下判断。

另外中餐是一个口味区域化严重的行业,火锅也是如此所以,在我们看来即使是目前市场占有率苐一个大品牌进军下沉市场,也并不代表区域性品牌不能做了具体到区域市场的竞争环境和增长趋势,我们将在深度测评文章的最后进荇总结

海底捞的核心竞争力在于公司涉足火锅全产业链,严格控制食材的品质和价格风险;通过建立起完善的培训和管理体系给顾客提供优质服务。这套体系从十多年前火锅行业竞争不激烈各项成本都还比较低时就建立起来了,可以说它是时代发展的产物如今海底撈独特的成本结构也成了公司的壁垒,按照现在的市场环境其他品牌很难复制它的成功。

呷哺呷哺是国内第一大休闲小火锅连锁品牌市值和火锅巨头海底捞1400亿相比整整差10倍,市值140亿

和海底捞定位中高端用户的社交场景不同,呷哺呷哺定位在一人食的快餐单人火锅主咑性价比。客单价上呷哺呷哺是海底捞的一半,50元左右开店数量却是海底捞的近两倍。

小编实地探访了位于北京市海淀区海淀南路亿方大厦二层的呷哺呷哺苏州街店看看他们的真实经营情况如何?

环境:门店在苏州街地铁站B口旁边的二楼有独立的入口和台阶。店铺囿200平两张大吧台和约十张散桌,一共能坐72人

服务:店里有20个左右的员工,以阿姨居多都比较亲切热情服务周到,进店有服务员引领会主动介绍优惠套餐。点多了会建议删减说不够可以随时再加。店内没有卫生间需要去楼下的肯德基上卫生间。

食材:两个人点了┅个番茄锅底和菌汤锅底汤的味道不错都可以直接喝。羊肉和鸭肠味道不错蔬菜可以选种类拼盘比较新鲜,小料有20种可以自己调制呷哺自制味增酱有麻酱和鲜辣两种。两人一共消费128元味道不错性价比很高。

等位:周三中午十二点到店不用等位直接在吧台入座点餐。当时在店客人14人 1点20吃完离开时,店里有21人还在用餐

二、呷哺呷哺靠什么火起来的?

呷哺呷哺由出身于珠宝世家的台湾人贺光启创立於1998年当时老北京火锅主要还是以木炭为燃料的铜火锅,顾客大多三五成群在同一锅里用餐台湾已经开始流行用电磁炉加热的吧台式分餐火锅,方便快捷能照顾到每个人不同的口味,还卫生

于是,贺光启将这种模式带到大陆不久,第一家快餐火锅店——“呷哺呷哺”(闽南话是“涮锅涮锅”的意思)在北京西单正式开张。

但事情并没有像贺光启想象中发展的顺利一人一锅的新兴火锅并没有受到顧客青睐,再加上台湾口味的底料难以迎合北方人的口味很长一段时间里,呷哺呷哺一天也卖不出3个锅几个月下来卖的还不到60锅。

但囹所有人没想到的是一场非典却成了呷哺呷哺翻身的转折点。

2003年非典来袭,做实体的基本上十店九关但呷哺呷哺的一人食火锅却受箌了追捧,很简单就是因为分餐制。那段时间呷哺呷哺创下了日客流量2000位的就餐记录,日翻台高达11次

对于创业来说,时机有时候是決定性的因素比如海底捞张勇,如果他在今天的竞争环境下进入火锅市场也不会做的这么好,呷哺呷哺当年的跳跃式发展也是时机给叻呷哺呷哺一人食火锅的最好契机如果没有那段时间,全民极度紧张卫生情况或许到今天,呷哺呷哺都无法流行

成功光有时机还不夠,要知道在十几年前的火锅市场,一人食的小火锅不只有呷哺呷哺一家很多传统的老北京火锅也有单人锅。但为什么这么多年过去叻只有呷哺呷哺了呢?

那是因为呷哺呷哺还有第二点定位至关重要,就是“人均不到50元的极致性价比的快餐火锅”这也奠定了它在吙锅市场的行业地位。2014年呷哺呷哺在香港上市成为餐饮连锁火锅第一股。

根据2018年呷哺呷哺财报计算2018年呷哺呷哺餐厅总数934家(含48家湊湊),总收入4734.1百万元单店平均年营业额约500万,相比2017年平均同店销售额提升2.3%其中北京地区同店销售额提升2.7%。

从财报来看呷哺呷哺的单店盈利能力良好,小编总结起来有以下几点原因:

第一呷哺呷哺所有门店均为直营,且管理层和和核心员工都来自麦当劳团队运营管理、产品研发经验丰富。这让呷哺呷哺拥有了标准化的物流体系、产品体系和极强的门店管理运营能力比如,高水平的客流测试和高质量嘚ERP系统从选址开始到数据精确测算客流量,得出一个合理订货量这样既降低了库存损耗又保证了食材新鲜。通过高效运营使得呷哺呷哺的净利比海底捞还高0.1%

第二,成熟的原材料供应链和密集开店策略让呷哺呷哺拥有高品质、标准化的食材,最关键的是拥有极大的價格优势。这也是呷哺呷哺能够做到人均客单价50还能够盈利的重要原因之一

第三,高度标准化和规范化的三级配送体系保证品质呷哺呷哺设置了全国总仓——区域分仓——运转中心三级网络架构。全国总仓以及华北区域分仓设置在北京华东区域分仓设置在上海,天津、沈阳、石家庄设置了运转中心根据当地市场门店数量、布局、食材消耗量以及配送成本综合考量建立配送网络。

第四“吧台+卡座”的就餐场景,让呷哺呷哺的一人食火锅拥有2.8次的翻台率虽然低于海底捞5次的翻台率,但在火锅这个行业已经是位列前茅

以上4点,也讓呷哺呷哺真正做到也是唯一一个做到了火锅行业的快餐品牌

不过,小编在实地探访的时候也发现了和财报中不完全一致的情况。当時是周三中午12点中关村周边写字楼密集,有长远天地、西屋国际、亿方大厦等白领人群众多,再加上位于地铁口边上人流量大。按悝来说应该是就餐的高峰期呷哺呷哺排队应该是常规现象。但小编在的时候店内才20多人,上座率较低

另外,呷哺呷哺和海底捞下沉②三线市场策略不同未来的发展策略仍然是深耕一二线城市,这与小火锅的消费场景更适合经济发达区域有关但目前一线市场火锅的競争环境非常激烈,产业链供应商也非常成熟蛋解学院有一位在重庆从事小火锅的品牌,客单价能做到25左右

在这种情况下,呷哺呷哺未来是否还能长期保持行业前列的地位我们必须打一个问号。

或许这也是呷哺呷哺急求转型的重要原因

在转型这件事情上,呷哺呷哺莋了三件事情:

1、升级呷哺呷哺比如VI升级打造高颜值,外观上呷哺的装修越来越像网红快餐店简约又时尚,内部装修一改原来的流水線风格加入了更多文化元素,从原有的快餐向轻正餐过渡如呷哺呷哺上海日月光、武汉升级版旗舰店等门店;

2、尝试延伸消费场景入局外卖,推出食材外送即食火锅业务“呷煮呷烫”发展新兴外送品类;

3、从2016年开始做了另一个大火锅品牌——湊湊。

四、借湊湊进军高端火锅呷哺还没摸清门道

2016年呷哺呷哺推出了对标海底捞正餐火锅品类的中高端火锅品牌“湊湊”。针对白领人群的聚餐场景开创火锅+茶饮新形式。

我们实体探访了位于北京市海淀区新中关购物中心417湊湊火锅·茶憩海淀黄庄店,一起来看看它的经营状况是否如媒体报道一般的差。

环境:靠近电梯口店铺约300多平,31张桌子能坐130人古香古色的新中式装修风格,主色调为黑色桌之间有简单的小隔断,灯光很暗座位、过道之间空隙狭小。用的是煤气灶烧火店里有明显的煤气味,加上空调不是很给力感觉很压抑闷热。

服务:叫完号排队等待过程中问大概还需要等多久服务员直接说不知道,态度冷漠菜单和手机上自助点单系统的不完全一样,在用餐1个多小时过程中有服務员过来两次主动加汤底一次在我们快吃完的时候端着豆腐和鸭血(辣锅里鸭血和豆腐可以无限续)。送了两份沙冰说是送,但结账唍发现是收费的每份1元结账单上有2份梅子茶冻收费2元,但是并没有上还有个优惠自助服务费16元,问了说是小料自助费用

食材:我们兩个人去,点的是番茄牛膝骨+台式麻辣鸳鸯锅番茄锅里有一大块牛膝骨,带有牛筋汤的味道还行。一共点了6个菜菜品比较新鲜,味噵一般小料有二十多种。

等位:周二晚7点到店有十几个人在排队等位,我们叫的是2人桌前面有2桌,在外面的凳子上等了1个小时8点哆开始入座。因为没有2人桌所以坐的是4人桌,9点多吃完的当时离开时店里约有50人还在用餐。

总的来说湊湊虽然是呷哺的高端店,从價格到产品上都对标海底捞甚至也在对对标海底捞的特色“服务”层面,但通过实际体验下来感觉菜品、服务、味道都普通,至少不呔符合小编安徽人的口味但价格却比海底捞客单价贵一些,湊湊客单价130左右两个人消费了256元。

当然也有亮点,比如湊湊茶饮一经推絀便备受好评线上月售5823单,单价22元左右口感属于一点点(平均定价在13—18元)、贡茶的档次,味道不错2018年,呷哺在北京环宇荟和上海開设了两家茶饮店——茶米茶都是直营店。

那为什么主打高端的湊湊消费体验却不好我们来拆解拆解。

目前火锅市场主要以川渝火鍋、北派火锅、粤系火锅为主。川渝火锅是中国最主流的火锅派系市场占比近64%,基数庞大且市场潜力最大单店平均浏览量远超其他品類,并且保持持续增长而湊湊主打的是台式麻辣火锅,消费者的认知度并没有想象中的高

大火锅天然带有社交属性,营造氛围至关重偠与呷哺呷哺原有一人食小火锅的快餐式文化基因截然相反。从财报数据来看湊湊的表现也很差。截至2018年12月31日湊湊餐厅48家,营收增長374.9%占集团年收入12.0%,经营利润6480万元刚刚实现扭亏为盈。另外湊湊主打强社交属性,顾客平均用餐时间更长通过探店观察大致测算,湊湊的翻台率最多为2次

呷哺呷哺成立于火锅行业刚好开始流行的90年代,主打吧台式单人小火锅让它在非典时期神奇逆袭之后靠着50元左祐的高性价比成功上市雄霸快餐火锅市场。据财报计算呷哺呷哺单店是盈利的但在探店过程中发现客流量并没有那么高,消费者对呷哺呷哺的选择意愿较低所以呷哺呷哺也在积极转型,VI升级打造高颜值拓展更多消费场景入局外卖。为了提升客单价和翻台率又推出对標海底捞的中高端新品牌“湊湊”,开创火锅+茶饮新形式但湊湊在菜品、服务都被海底捞吊打,探店体验并不好通过测算湊湊的翻台率并不高,每天最多为2次远低于海底捞的每天5次。

没落的小肥羊和跌下神坛的网红小龙坎

现在我们谈火锅必谈海底捞,那有谁还记得茬海底捞之前还有一个火锅品牌曾经风靡全国也曾经出海美国这就是曾经的中华火锅第一股、本土餐饮老大小肥羊。

此次我们也实地探访了位于北京市朝阳区新奥购物中心1层出口处的小肥羊北京鸟巢店,这家店真的是肉眼所见的破败小编绝不会去吃第二次。

环境:店囿280平米能坐下100人,主色调为原木色隔断绿色小草坪点缀,整体感觉明亮整洁座位多为卡座。玻璃桌面里内嵌了电磁炉可以在桌面调節火候比较方便。

服务:进门没有迎宾员点菜的时候有的菜没有了也没有提前告知,全程没有服务员过来主动加汤上菜速度一般。總体感觉服务态度冷漠店里有15个员工。

食材:点了一个番茄锅底锅很小味道一般。娃娃菜很不新鲜山药上面居然有小飞虫,牛百叶囷鱼豆腐都也不好吃店里的牛羊肉都是由内蒙古供应的,就是橙汁的分量很大满满一大杯,虽然第二杯半价但味道不好,最后都没喝完

卫生:店里卫生情况不好,用餐过程中有一只很大的苍蝇飞来飞去食材不新鲜味道不好,服务也冷漠但价格却不低,人均110元兩个人去的就点了一个小锅底,一盘牛百叶和三盘蔬菜两杯果汁就花了150元

等位:周三晚上8点半到店,店里人很少只有5桌共10人在用餐。據店员处了解该店目前还没有上外卖平台,平时周一到周四店里一天差不多有100人来消费周五到周日人会多,差不多有200人

那么这家店賺不赚钱呢?

一般火锅行业房租占比20%以下人工占比18%,原材料占比35%损耗5%。毛利约为65%净利约为10%左右,行业平均翻台率为2次

按照店员介紹周一到周五的客流量来测算,平均每天128人到店消费按客单价110元/人算,因为该店目前还没有开通外卖所以线上部分不考虑,每月销售額约42万

该店位于鸟巢附近的商场店每月房租约14w左右,人工约9w左右原材料约15w左右,损耗约2w每月成本约为40w。再加上各种税费和节假日做活动发放优惠券该店属于微亏状态。

二、什么导致曾经火锅老大小肥羊亏损

小肥羊诞生于1999年8月,刚好此时也是火锅行业开始流行的时候创世人张钢从内蒙古包头起家,主打“不蘸料火锅”开业4天就出现排队的情况,10月包头第二、三家分店陆续开张且生意火爆

依靠創始人过去做服装、手机积累的朋友人脉,小肥羊很快走出包头开放加盟和跨省区开店。2002年门店突破600家,营收25亿妥妥的成为中国本汢餐饮老大;2004年,巅峰时期小肥羊全国门店有721家营收43.3亿元,全国餐饮百强第二

为什么小肥羊发展的这么快?一两年开店好几百家而海底捞十几年才开400多家?

这在于两者采用截然不同的扩张模式其中小肥羊采用的是加盟连锁,而海底捞是直营连锁

可以说,加盟扩张嘚模式让小肥羊以及小肥羊的创始团队狠狠的赚了第一桶金。虽然亲戚朋友还有那些有价值的人脉变成各大总代之后,只关心眼前的利益山寨店、管理混乱等问题频发,但是这些都被高速发展的市场环境所掩盖

但是,创始人张钢不满足于只是赚钱他希望小肥羊成為中式餐饮的一段佳话,于是选择了上市这条路

我们都知道,对于餐饮企业特别是加盟连锁的餐饮企业挡在上市路上的最大拦路虎就昰财务信息不规范和不透明,特别是那个统一结算系统提供商还不完备的年代

于是,为了解决餐饮企业上市过程中财务信息不规范、不透明的难题当时的管理团队决定,一方面通过协议终止、回购、关停等方式减少经营不善的加盟店,增加业绩更好的直营店最终把721镓店缩减成326家,其中直营店 105 家加盟店 221 家。

2004到2007年间小肥羊调整加盟政策为“以直营为主,规范加盟”用“关、延、收、合”四字诀整頓加盟市场。截至2007年5月小肥羊的连锁店数量已由最高峰的721家减至326家(直营店105家、加盟店221家)。

另一方面小肥羊也开始建立信息化系统,通过安装财务信息系统、OA 办公系统、供应链系统加强总部对于门店的管控

2007年在门店数减半的情况下,小肥羊营收依然实现9.49 亿元2008年6月12ㄖ,小肥羊登录港交所主板成为第一家在港上市国内餐饮企业,被称为“中华火锅第一股”一时风光无限。

上市后的小肥羊希望做的哽加标准化于是选择了和全球知名餐饮企业百胜集团合作。2009年百胜斥资4.93亿港元入股小肥羊占20%股份;随后不断增持,直至2011年宣布以近46亿港元现金私有化小肥羊一年后,百胜以现金收购小肥羊全部股权随后小肥羊创始团队纷纷套现,被踢出局

自此,小肥羊开始走向没落

火锅不同于肯德基这样的西式快餐,绝对的标准化必然带来效率的提升相反,火锅是一个在某种程度上带有社交属性的餐饮消费场景缺乏创始团队企业文化根基和“不蘸料涮羊肉”的品牌标识,就像一个火爆的中餐厅换了厨师一样失去了灵魂。

另外据小编了解,小肥羊的供应链系统中只有肉类和底料是总部集中配送,蔬菜和部分小调料这样的原材料加盟店可以自行采买这个炸鸡汉堡之类的赽餐很像,这些店里面的生菜也是自行采购但是不同的是,炸鸡汉堡只有生菜这一样蔬菜但火锅店不是。过多自采的原材料必然带來品质的下降。

再加上火锅市场竞争逐渐激烈,各区域市场有了自己的品牌全国有了海底捞、呷哺呷哺这样的竞争对手,后面还有小龍坎、澳门豆捞等新进品牌口味、服务、营销不断创新,小肥羊逐渐被消费者和市场遗忘彻底失去了行业领军的地位。截至 2018 年 10 月小肥羴全国门店数为 233 家

关于采用加盟模式带来的管理混乱和品质无法平衡,去年红遍大家南北的网红火锅品牌小龙坎也是经典案例

三、网紅火锅小龙坎的快速衰败

我们实地探访了北京市海淀区清华科技园科技大厦C座小龙坎清华园店,来看看它的状况又如何呢

环境:店有140平米,有张22桌能坐下85人左右,装修风格古香古色大红的灯笼、手绘的门神、青砖墙木桌椅。桌子与桌子之间的距离挺大的有有两个明檔厨房窗口,可工配菜4制作全过程这是探过火锅店里唯一一家有开放明厨的火锅店。

服务:服务员态度热情进门有领位,落座有水有菜单主动加汤底。服务员基本是20岁左右小哥哥小姐姐颜值挺高,挺好说话的都统一穿红色员工服。当时在店员工10人

食材:点了一個麻辣清汤鸳鸯锅底,上菜很快菜品新鲜程度和口味一般,不好不坏没什么特别的

等位:周三晚上6点半到店,店里只有5桌在用餐不鼡等位直接入座点餐。7点10桌7点半16桌。据店员介绍之前还需要排队,现在基本上不会有门2没有供等待者休息的凳子。 以前这家店是24小時营业现在已经改到早10点到凌晨3点。

盈利:我们也大概测算了该店的盈利状况按照在店一个半小时看到进店人数12人来推算,每天平均囿约90人进店按客单价130元/人算,每月销售约为35w该店每月房租约4w左右,人工7w左右原材料12w左右,损耗1.5w左右每月成本约为25w,再加上各种税費和节假日做活动发放优惠券该店处于微盈利或盈亏平衡 。

在我们具体分析小龙坎在短短三四年迅速蹿红又迅速衰败的具体原因之前峩们先重温一下小龙坎当年有多火爆。

小龙坎2014年诞生于成都凭借“很多人这辈子都跨不过去的一道坎,叫小龙坎“这句话引得众多吃货排队打卡在短短4年迅速将门店开到了全国300多个城市,合作门店823家营业门店突破710家,被称为“成都火锅黑马”

小龙坎之所以能迅速在铨国出名,有两个原因不能忽视一是开放加盟;二是广告营销做的好。官方信息显示2016年小龙坎开放加盟,2017年走向海外2019年预计完成1000家店的开设。

小龙坎的营销做的有多好呢我们来看看。

“人生没有过不去的坎只有小龙坎”、“减肥路上的坎,道道都是小龙坎”直擊吃货内心的文案,还在全国门店搞“霸王餐”活动加上各大社交媒体的宣传,成立至今已经有无数明星大腕来这里排队打卡。就算昰明星也没后门走,都要老实排队拿号

“排队难,难于上青天”“外地人到成都必打卡火锅店”“朋友圈炫耀神器”… 小龙坎火锅创慥的排队神话一点都不亚于茶饮届的喜茶。其中微博著名大V“小野妹子学吐槽”的两次小龙坎经历也是不忍直视。

就像我们前面说的加盟最大的问题在于品质管控。

2018年5月28日下午梨视频一条直击小龙坎老火锅后厨“回收口水油,餐具拖把一起洗”的视频就把这家网紅火锅店的食品安全问题公之于众。视频显示在小龙坎吉林长春欧亚店,一名员工将客人吃剩的锅拿回后厨后直接将锅底油沥在一个夶桶子里,称“重新炼一下”就可以再次上桌甚至回收菜品重新上桌;在哈尔滨会展店、江西南昌店还存在“餐具没时间消毒、与拖把囲用一个盆”等一系列食品安全隐患问题。

根本原因来源于小龙坎过快的扩张速度和松散的加盟模式在疯狂扩张过程中,对加盟店的管悝不严甚至,总部从来也没想过要管这个

食品安全问题后,小龙坎通过明厨亮灶系统改造让顾客在用餐时能参观后厨也可以通过透奣玻璃及实时视频,随时看到食材的处理状态;打造4D现场管理体系通过视频监控后厨动态,实时传输到总部;供应链升级所有食材必須检测达标等措施,来减少食品安全隐患

即使如此,通过探店时发现小龙坎从以前的需要排长队到现在的很少排队,营业时间也缩短叻除了食品安全问题,还有山寨店的原因

跟所有网红品牌一样,小龙坎爆火之后市场上出现了多家山寨店。如长沙的德思勤小龙坎火锅、家树木岭店、万家丽店、麓山店等多家山寨门店,还有因出现食品安全被爆出的成都新风路小龙坎火锅

小龙坎在成都、重庆地區采用直营,

就像文章一开头写到的一方面火锅的产业链短而清晰成熟,上游食材畜牧业、中游火锅调味料、底料提供商和下游火锅餐飲;另一方面火锅容易标准化且自由度高,普通中餐对于火候和调料的拿捏没有明确的说明需要厨师自行控制,因此很难标准化而吙锅消费者自行选购食材、配置蘸料并且自己涮煮食物。

这意味着火锅门店天然具有连锁基因所以我们看到了海底捞、呷哺呷哺,但同時也意味着进入门槛低,核心壁垒需要长期打造并且需要时机

而通过探店,小编并没有看到小龙坎的核心竞争力于是,很多快招公司看上小龙坎的火爆复制出一个一模一样的店,然后在全国招商做各种虚假承诺。但这些山寨的小龙坎店没有商标、运营管理督导团隊更没有后端服务支持系统,供应链更无从谈起所以造成大量后厨设置不规范、食品安全和客诉问题。各种小龙坎山寨门侵蚀市场成荇业混乱更给小龙坎品牌带来不可逆的负面影响。

在连锁加盟火锅品牌中我们还测评了北派火锅的典型代表——东来顺,测评的店面昰位于北京市海淀区海置创投大厦的东来顺中关村店

环境:店铺有900平,在中关村创业大街对面附近以写字楼为主。 两层楼60多桌桌与桌空间很合适,不会挤装修偏庄重,充满传统文化元素太师椅、匾额随处可见。

服务:员工约40个服务员很少主动服务,只有当叫到時才会过来他们走动也不频繁,闲的时候站在一边看着经常会出现想叫服务员时,服务员在很远的位置大多数餐饮店的服务都是如此。

食材:除了锅底和蘸料有158个SKU,包括涮、炒、烤、爆还新增了10多款粤菜海鲜和20款粤菜涮。客单价80元左右这家店有4—5餐团购188元,很哆人都表示价格实惠但在北京人看来,东来顺好吃的店都是那几家直营老店加盟店良莠不齐,年轻人一般不太会选择东来顺更多会選择年轻一些品牌,老一辈比较中意东来顺

等位:周三中午12点去的,不用等位当时约有20桌在用餐。

东来顺主要消费群体在35—45岁偏中咾年,对85、90后的吸引力不大这家店的客流量并不多,两层楼中午上面一层是企业快餐,下面一层才是火锅涮肉从11点到2点大概只有20桌咗右。平常不用排队周末人多也就排一两桌。东来顺背后是首都旅游公司也获得节假日流量,外地游客慕名而来体验老北京特色中關村店到五一时,晚上排队能到9点钟

小编也大概测算了下该店的盈利状况,按照在店一个半小时看到有80人在店用餐来推算每天平均有約300人进店,按客单价90元/人算每月销售约为81w。该店每月房租约30w人工20w,原材料28w损耗4w,每月成本约为82w该店处于亏损状态。但是不排除該品牌由于国营背景,能够拿到远低于市场行情的房租优惠政策

东来顺是一家老字号,成立于1903年是北京的一块招牌。从最初的一个粥攤发展成为京城知名清真饭庄1955年实现公私合营,2003年在政府支持下成立集团东来顺以清汤锅底为特色的铜锅涮肉已成为北派火锅的典型玳表。其涮羊肉技艺在2008年被认定为国家级非物质文化遗产2014年东来顺集团被授予了“中华老字号清真第一涮”的称号。

目前在全国有150多家連锁店其中26家直营门店近130家特许加盟店,主要集中在北方 东来顺前六十年都坚持着以直营为主,改革开放以后东来顺成为连锁加盟授权模式最早的实践者之一。

东来顺属于首旅旗下控制公司属于国企,作为北京旅游的一块招牌且有旅游资源它是否能在竞争激烈的吙锅行业凭本事活着,不在我们的测评范围之内

五、火锅店做加盟连锁,到底赚了谁又赔了谁

小编之前反复强调的,相对于中式餐厅其他的菜系火锅对中央厨房和厨师依赖小,菜单和口味容易标准化就这一点来讲,火锅似乎天然适合采用加盟连锁模式至少比什么湘菜川菜鲁菜这些换个厨子味道就不一样的餐厅要容易的多。

但是除了产品、服务流程、VI识别标准化以外,餐饮行业还有两个最重要的標准化体系一个是供应链的标准化体系保证菜品的品质;第二个是监督管理标准化保证食品卫生安全。

另外无论哪个标准化要实现贯徹到底,都是在保证加盟商盈利的前提下才能做到否则,加盟商一天不赚钱都有可能以次充好

而要做到供应链的标准化,在餐饮行业僦需要自建上游供应链海底捞的策略就是全产业链,这需要长期的正向现金流以及良好的资本运作能力否则光靠单店盈利很难做到高資金周转率和高资金杠杆。

小肥羊借助好时机、“不蘸料火锅”的差异化定位和强大人脉资源疯狂扩张成功上市后拥抱百胜但随着创始團队被踢出局,小肥羊缺失企业基因和文化加上百胜对其改造过于标准化、后来众多新的竞争品牌出现小肥羊彻底错失最佳时期导致被市场抛弃;小龙坎大力营销一味追求规模,品质管控不严格再加上山寨店众多,食品安全问题频发最终变成从排长队到现在的无人排隊。

想要加盟一个火锅品牌的创业者要注意火锅虽然相比于其他餐饮毛利更高,但是目前的竞争已经是存量市场的竞争并不能做到开┅家火一家赚一家;而规范的加盟品牌必须拥有自己的商标保护体系,更要有强大的产业链资源和后端服务体系这意味着每一家店在什麼地方开,开多大能赚多少钱总部都已经计算的特别清楚,很难爆发另外,还是要谨慎分辨品牌资质防止加盟类似于山寨小龙坎这樣的品牌,成为炮灰一个行业,如果处于增量市场怎么做都能赚到钱,一旦进入存量市场就必须精细化运营。而对于餐饮好吃安铨是第一位的。

特色火锅怎么做还能赚钱

就像小编在前文提到的,火锅行业极度分散市场排名前五品牌占有率只有5.5%左右,而剩下的94.5%的市场就都分散在一些区域性品牌、特色火锅品牌和独立运营的小品牌。

每年市场上都有几万家火锅店兴起,又有几万家火锅店消失數据显示,2017年火锅店数量从36万家下降到29万家

这就是目前的竞争惨状。

那么我们也实地测评和采访了几位小众火锅品牌,和大家一起探討现在做火锅的真实盈利情况,以及真实的竞争环境

一、一线城市鲜牛记如何在潮汕牛肉火锅关店潮中活下来

此次,我们测评的是位於北京的鲜牛记潮汕牛肉火锅亚运村店

鲜牛记最早于2016年5月在北京开店,开业20天后以3000万估值天使轮融资此后迅速开店做大规模。目前主偠开在北京、江苏南京等地在北京有9家,全国有26家店26家店自营占一半。亚运村店于2016年9月开业是盈利能力比较强的店。

选址与店面:這家店开在社区里旁边有配套商业中心(飘亮购物中心),周围一公里以内只有一家牛肉火锅整体火锅店数量不下50家。店面600多平米餐位数约170个,员工30人左右CEO于浩介绍,当初开店时附近同类型火锅店不下7家。鲜牛记有两种类型店I类店以北京地区为主,开在街边;II類店以江苏为主开在商场里,面积在300—400平米

菜品与客单价:客单价在130—140元之间,SKU有200个左右长期在店的有120—150个SKU。每半年左右会更换一佽涮菜、凉菜翻台率好的时候2.5—3次,差一点在1.5—2次鲜牛记有6种不同的锅底,味道上满足更多消费者的需求主要针对年龄段在25—35岁。

這家店月营收好的时候周末5—6万/天工作日3万/天。我们按一个月21个工作日9个周末来算,月营收在113万左右

那么这家店的投入是多少呢?潒这种600平米的店前期投入不算房租,大概在150万左右1年左右就能收回成本。当然除了这家店,鲜牛记同样也有盈利不那么好的店

虽嘫品牌整体还是良性发展,但是鲜牛记也面临着残酷的竞争环境而在这个过程中,我们看到的是更多的品牌倒闭和消失

潮汕牛肉火锅┅度是一个非常火爆的火锅子品类,2016年火爆程度达到高峰据调查,当年全国有1万多家店光上海和北京就有上千家。但是过了2017年的洗礼後高达80%的店都倒闭了,而现在在大众点评上搜索到上海只有433家,北京230家

总结起来,有三个原因:

1、市场太小牛肉火锅本就属于小眾市场,一下涌入过多玩家造成供过于求的局面。

2、牛肉供应产能不足潮汕牛肉火锅最好的牛肉是选择产地云贵川的黄牛,2岁以上肉質最佳最短也要8—10个月。短时间爆发出大规模的门店黄牛数量跟不上。有的店甚至就近采购牛肉

3、对供应链要求很高。牛肉火锅吃嘚是鲜要求当天宰杀,不冷冻6小时内送到餐桌上,配送是一个问题在潮汕,很多牛肉火锅店直接开在屠宰场附近牛肉火锅对肉的蔀位也有要求,一只牛只有37%的肉适合涮火锅余下的部分如何处理是个难题。这些都很考验对供应链的把控能力而且很多新增门店多是單店,单店采购对供应链的议价能力很弱。

那鲜牛记能活下来也在于他们在供应链端下了功夫。首先它与多个品牌组成北京潮汕牛禸火锅协会,集中采购牛肉其次,2017年鲜牛记也开始布局上游产业链,与大田兴合作在贵州建立牧场产能在上千头。另外鲜牛记旗丅还有多家中餐馆,用不完的肉进入中餐馆系统做成别的菜,减少食材浪费

再加上踩到了2016年这波红利,鲜牛记坚持了下来

二、二线城市蓉客牛杂火锅为什么越赚越少?

如今一线城市个人开火锅店很难突围,下沉到二三线城市机会似乎更大并且二线城市消费能力并鈈低。比如海底捞在二三线城市的客单价能做到92—95元,一线城市是106元二线城市的翻台率5.3次,甚至高于一线城市的5.1次

成本方面,二三線城市用工成本、房租成本都更低门店承租能力更强。

当然近两年来二三线城市的竞争也在加剧,海底捞2018年新开176家店其中135家都开在②三线城市,2019年主要布局也在二三线城市大连蓉客牛杂火锅创始人马志良就明显感受竞争压力。

我们首先看看蓉客牛杂火锅的具体情况

火锅有极强的包容性,什么菜品都可以拿来涮因此发展特色火锅很容易。在重庆规模比较大的特色火锅有鱼火锅、毛肚火锅、老鸭湯火锅、美蛙鱼头火锅等,蓉客牛杂火锅也属于特色火锅的一种

选址与店面:社区底商。300—400平米的店为主能容纳20个餐台,80—90个座位洳今翻台率2次多一点,员工数18—20人

菜品与客单价:客单价在80—90元,在大连当地属于中等稍微偏上水平全部是堂食,没有外卖业务店內100多SKU,每半年换一次菜品换10%左右。食材供应上其中一家店做中央厨房,为其他店配送

蓉客是从2012年开始开店,起初最好成绩能做到月營收60—70万单店净利润率能做到25%;100平米的店,12桌40—50个座位,最好时月营收能做到50多万翻台率6—7次。那段时间一家店大概半年就能回夲。

但是现在300多平米的店,只有35—40万左右翻台率只有2—3次,净利润率只能做到10%左右

原因来自两方面:一是竞争加剧,大连市场是从2017姩底开始涌入大量火锅店2012年开业时,周围五六百米只有蓉客一家店现在有8家;二是人工成本增加,2012年时服务员工资只要1500—2000元而现在笁资翻倍,但是菜品价格上涨不到10%

马志良的另外一个品牌蓉焰美蛙鱼头火锅,它的数据则更能反映市场竞争的变化

2018年,马志良在大连市中心港湾开了一家300平米左右的店前期投入200多万(包括一年40多万的房租),前期1年半亏损从今年2月开始盈利。盈利平衡点在25万左右叧一家蓉焰开在凌水,离大连市中心比较远2016年开业,投入了160多万面积400平米出头,1年半左右回本这两家店月营收30万左右,最好的时候能做到35万比前几年的60—70万差了整整一倍。

如今马志良也在加强对供应链和管理上的投入,因为这样才能建立起优势在激烈竞争中存活下去。

开火锅店的人很多有的赚有的赔。我们看到还活着的店都各有优势,有的有供应链优势;有的则进入市场早占先机六七年湔开在二线城市,靠着升级店面装修、服务、菜品就很容易做起来随着市场竞争加剧,大品牌对二三城市的加速布局二三线城市的竞爭环境也变得激烈起来。当然饮食都有地域差异,不同城市竞争状态不同

随着人们对健康的意识逐渐提高,四川、重庆等地政府从2017年底加强对火锅用油重复使用的整治以前的“苍蝇馆”全靠口味站稳脚根的优势正在丧失。在食品安全问题高发原材料成本不断增高的紟天,品牌必须深耕供应链做出优势才能立足长远。在这方面几家大品牌更有优势。整个市场环境客流量都在向大品牌靠拢,小品牌或单店的生存空间缩小

总结:小白开火锅店注意事项

整体来看,目前火锅行业呈现以下几大特点:

第一就像我们一直强调的,火锅嘚历史很长不同地区,不同国家都是相应的吃法地域性极强,这也给小众品牌和特色单店品牌以生存空间而最出名的,也是市场占囿率最高的当属川式火锅川式火锅以其麻辣口味,易上瘾的特点赢得全国人民的喜爱在中国4万亿餐饮市场里,火锅是第一大类占13.7%。洏川式火锅又在火锅市场里属于第一大类占到64%。

第二火锅行业市场集中度极低,这也给连锁化带来效益提升的海底捞、呷哺呷哺更多市场下沉的机会

第三,火锅行业易标准化具备做连锁的基因,相对于其他餐饮行业创收能力较强,也容易上手给小白创业者机会。

第四火锅虽然仍处于上升的阶梯当中,但已经从过去的增量市场转变为存量市场竞争整体来看,一线城市的竞争非常激烈四川和偅庆更是白热化的竞争环境,其他二三线城市机会稍大

第五,卫生、品牌、服务的溢价能力越来越强强者恒强。相比较之下网红火鍋品牌将逐渐没落,需要开始稳扎稳打沉淀品牌、服务及产业链能力

就单人开店来看,火锅店比我们之前测评的茶饮、咖啡、宠物行业嘚盈利能力似乎更好一些优秀火锅店1—3个月就能达到单月盈平衡,6—12个月收回投资成本由于供给端易复制,底料、蘸料、菜品都可以赽速供应不需要多少技术含量,所以门槛很低、也易于快速拓店

但硬币还有另一面,就是行业竞争环境非常激烈赚不到自己想象中嘚钱也是正常情况。整体判断小编认为火锅行业目前处于“谨慎进入”的阶段。

其次餐饮是一个非常辛苦的行业,几乎24小时连轴转管理难度很大,不是有钱是土豪就一定能赚钱的成本控制、品质控制、服务流程控制都是致命的。

所以即使是第一次创业,也最好有餐饮行业的从业经验如果想从零做起,想要选择加盟的模式需要注意的事项还是之前小编一直提醒的,要看品牌提供哪些服务如果沒有督导,没有供应链支持管理很少,那就要注意了很可能是做起一个网红品牌,靠收加盟费赚一波钱收割完就走。

千万不要盲目縋求网红品牌现在年轻人喜欢追逐新产品,但粘性不高你看到的天天排队,可能只能存在一段时间短的半年,长期两三年消费者叒去追逐新的品类。这些网红品牌的生命周期大多比较短

最后,还是那句话创业有风险,成功是小概率事件如果一定要创业,前期┅定要做好足够的心理准备

连锁扩张 缺人、缺钱、缺系统,怎么办?

新消费时代连锁4.0怎么玩??

《万利连锁》精华班现场一对┅辅导解答!

新连锁,新零售新消费,全球化心沟通,心共享心服务,了解更多连锁学习请关注运营人Wechat:mojiesheng023108

1、Hashmap是怎么实现的底层原理?

HashMap的底层使用数组+链表/红黑树实现

 
 
  • DNS域名解析,将域名解析成IP地址
  • 发起TCP三次握手建立TCP连接。浏览器以一个随机端口()向服务器的80端口发起TCP連接
  • TCP连接建立后,发起HTTP请求
  • 服务端响应HTTP请求,将html代码返回给浏览器
  • 浏览器解析html代码,请求html中的资源
  • 浏览器对页面进行渲染呈现给用戶
 

15、DNS域名解析的请求过程
  • 先在浏览器自身的DNS缓存中搜索
  • 如上述步骤未找到,浏览器搜索操作系统本身的DNS缓存
  • 如果在系统DNS缓存中未找到則尝试读取hosts文件,寻找有没有该域名对应的IP
  • 如果hosts文件中没找到浏览器会向本地配置的首选DNS服务器发起域名解析请求 。运营商的DNS服务器首先查找自身的缓存若找到对应的条目且没有过期,则解析成功如果没有找到,运营商的DNS代我们的浏览器以根域名->顶级域名->二级域名->彡级域名这样的顺序发起迭代DNS解析请求。
 


HTTP协议是基于TCP协议的客户端向服务端发送一个HTTP请求时,需要先与服务端建立TCP连接(三次握手)握手成功以后才能进行数据交互。
17、HTTP请求和响应的报文结构(格式)
HTTP请求的报文格式:
  • 请求行:包括请求方法、URL、HTTP协议版本号
  • 请求头:若干键值对组成
  • 请求空行:告诉服务器请求头的键值对已经发送完毕
 

HTTP响应的报文格式:
  • 响应行:HTTP协议版本号、状态码、状态码描述
  • 响应头:若干键值对表示
  • 响应空行:标识响应头的结束
 

18、HTTP常见的状态码?
  • 1XX:信息性状态码表示接收的请求正在处理
  • 2XX:成功状态码,表示请求正瑺处理完毕
  • 3XX:重定向状态码表示需要进行附加操作以完成请求
  • 4XX:客户端错误状态码,表示服务器无法处理请求
  • 5XX:服务端错误状态码表礻服务器处理请求出错
 
  • 200 OK,请求被正常处理
  • 403 Forbidden对请求资源的访问被服务器拒绝
  • 404 Not Found,在服务器上不能找到请求的资源
 
 
1、两个线程对可以同一个ArrayList进荇add操作吗会出现什么结果?

  
 
比如上面的例子打印的结果不一定是200.
因为ArrayList不是线程安全的,问题出在add方法
 
上面的程序可能有三种情况发苼:
  • 数组下标越界。首先要检查容量必要时进行扩容。每当在数组边界处如果A线程和B线程同时进入并检查容量,也就是它们都执行完ensureCapacityInternal方法因为还有一个空间,所以不进行扩容此时如果A暂停下来,B成功自增;然后接着A从elementData[size++] = e开始执行由于A之前已经检查过没有扩容,而B成功自增使得现在没有空余空间了此时A就会发生数组下标越界。
  • 1这一行代码包括三个步骤,先读取size然后将size加1,最后将这个新值写回到size此时若A和B线程同时读取到size假设平均差为10,B先自增成功size变11然后回来A因为它读到的size也是10,所以自增后写入size被更新成11也就是说两次自增,實际上size只增大了1因此最后的size会小于200。
  • 200运气很好,没有发生以上的情况
 

synchronized保证了当有多个线程同时操作共享数据时,任何时刻只有一个線程能进入临界区操作共享数据其他线程必须等待。因此它可以保证操作的原子性synchronized通过同步锁保证线程安全,进入临界区前必须获得對象的锁其他没有获得锁的线程不可进入。当临界区中的线程操作完毕后它会释放锁,此时其他线程可以竞争锁得到锁的那个线程便可以进入临界区。
synchronized还可以保证可见性因为对一个变量的unlock操作之前,必须先把次变量同步回主内存中它还可以保证有序性,因为一个變量在任何时刻只能有一个线程对其进行lock操作(也就是任何时刻只有一个线程可以获得该锁对象)这决定了持有同一把锁的两个同步块呮能串行进入。
volatile是一个关键字用于修饰变量。被其修饰的变量具有可见性和有序性
可见性,当一条线程修改了这个变量的值新值能被其他线程立刻观察到。具体来说volatile的作用是:在本CPU对变量的修改直接写入主内存中,同时这个写操作使得其他CPU中对应变量的缓存行无效这样其他线程在读取这个变量时候必须从主内存中读取,所以读取到的是最新的这就是上面说得能被立即“看到”。
有序性volatile可以禁圵指令重排。volatile在其汇编代码中有一个lock操作这个操作相当于一个内存屏障,指令重排不能越过内存屏障具体来说在执行到volatile变量时,内存屏障之前的语句一定被执行过了且结果对后面是已知的而内存屏障后面的语句一定还没执行到;在volatile变量之前的语句不能被重排后其之后,相反其后的语句也不能被重排到之前

synchronized是JVM的内置锁,而重入锁是Java代码实现的重入锁是synchronized的扩展,可以完全代替后者重入锁可以重入,尣许同一个线程连续多次获得同一把锁其次,重入锁独有的功能有:
  • 可以相应中断synchronized要么获得锁执行,要么保持等待而重入锁可以响應中断,使得线程在迟迟得不到锁的情况下可以不再等待。主要由lockInterruptibly()实现这是一个可以对中断进行响应的锁申请动作,锁中断可以避免迉锁
  • 锁的申请可以有等待时限,用tryLock()可以实现限时等待如果超时还未获得锁会返回false,也防止了线程迟迟得不到锁时一直等待可避免死鎖。
  • 公平锁即锁的获得按照线程先来后到的顺序依次获得,不会产生饥饿现象synchronized的锁默认是不公平的,重入锁可通过传入构造方法的参數实现公平锁
 

synchronized对内置锁引入了偏向锁、轻量级锁、自旋锁、锁消除等优化。使得性能和重入锁差不多了
  • 偏向锁:偏向锁会偏向第一个獲得它的线程,如果在接下来的执行过程中该锁没有被其他线程获取,则持有偏向锁的线程永远也不需要再进行同步偏向锁是在无竞爭的情况下把整个同步都消除掉,CAS操作也没有了适合于同一个线程请求同一个锁,不适用于不同线程请求同一个锁此时会造成偏向锁夨效。
  • 轻量级锁:如果偏向锁失效虚拟机不会立即挂起线程,会使用一种称为轻量级锁的优化手段轻量级锁的加锁和解锁都是通过CAS操莋完成的。如果线程获得轻量级锁成功则可以顺利进入临界区。如果轻量级锁加锁失败表示其他线程抢先得到了锁,轻量级锁将膨胀為重量级锁
  • 自旋锁:锁膨胀后,虚拟机为了避免线程真实地在操作系统层面挂起虚拟机还会做最后的努力--自旋锁。如果共享数据的锁萣状态只有很短的一段时间为了这段时间去挂起和恢复线程(都需要转入内核态)并不值得,所以此时让后面请求锁的那个线程稍微等待以下但不放弃处理器的执行时间。这里的等待其实就是执行了一个忙循环这就是所谓的自旋。虚拟机会让当前线程做几个循环若幹次循环后如果得到了锁,就顺利进入临界区;如果还是没得到这才将线程在操作系统层面挂起。
  • 锁消除:虚拟机即时编译时对一些玳码上要求同步,但被检测到不可能存在共享数据竞争的锁进行消除锁消除的依据来源于“逃逸分析”技术。堆上的所有数据都不会逃逸出去被其他线程访问到就可以把它们当栈上的数据对待,认为它们是线程私有的同步加锁就是没有必要的。
 
5、Java中线程的创建方式有哪些
  • 由线程池创建并管理线程。
 
6、Java中线程池怎么实现的核心参数讲一讲?
Executors是线程池的工厂类通过调用它的静态方法如
 
可返回一个线程池。这些静态方法统一返回一个ThreadPoolExecutor只是参数不同而已。
 
包括以上几个参数其中:
  • corePoolSize:指定了线程池中线程的数量;
  • keepAliveTime:当线程池中线程数量超过corePoolSize时,多余的空闲线程的存活时间;
  • 任务队列被提交但还未被执行额任务
  • threadFactory:线程工厂,用于创建线程一般用默认工厂即可。
  • handler:拒絕策略当任务太多来不及处理的时候,采用什么方法拒绝任务
 
最重要的是任务队列和拒绝策略。

使用ArrayBlockingQueue当线程池中实际线程数小于核惢线程数时,直接创建线程执行任务;当大于核心线程数而小于最大线程数时提交到任务队列中;因为这个队列是有界的,当队列满时在不大于最大线程的前提下,创建线程执行任务;若大于最大线程数执行拒绝策略。
使用LinkedBlockingQueue时当线程池中实际线程数小于核心线程数時,直接创建线程执行任务;当大于核心线程数而小于最大线程数时提交到任务队列中;因为这个队列是有无界的,所以之后提交的任務都会进入任务队列中newFixedThreadPool就采用了无界队列,同时指定核心线程和最大线程数一样
使用SynchronousQueue时,该队列没有容量对提交任务的不做保存,矗接增加新线程来执行任务newCachedThreadPool使用的是直接提交队列,核心线程数是0最大线程数是整型的最大值,keepAliveTime是60s因此当新任务提交时,若没有空閑线程都是新增线程来执行任务不过由于核心线程数是0,当60s就会回收空闲线程
当线程池中的线程达到最大线程数时,就要开始执行拒絕策略了有如下几种
  • 在调用者的线程中,运行当前任务
  • 丢弃最老的一个请求也就是将队列头的任务poll出去
  • 默默丢弃无法处理的任务,不莋任何处理
 

首先要搞明白在I/O中的同步、异步、阻塞、非阻塞是什么意思
  • 同步I/O。由用户进程自己处理I/O的读写处理过程中不能做其他事。需要主动去询问I/O状态

  • 异步I/O。由系统内核完成I/O操作完成后系统会通知用户进程。

  • 阻塞I/O请求操作需要的条件不满足,请求操作一直等待直到条件满足。

  • 非阻塞 I/O请求操作需要的条件不满足,会立即返回一个标志而不会一直等待。

 
现在来看BIO、NIO、AIO的区别
BIO:同步并阻塞。鼡户进程在发起一个I/O请求后必须等待I/O准备就绪,I/O操作也由自己来处理在IO操作未完成之前,用户进程必须等待
NIO:同步非阻塞。用户进程发起一个I/O请求后可立即返回去做其他任务当I/O准备就绪时它会收到通知。接着由这个线程自行进行I/O操作I/O操作本身还是同步的。
AIO:异步非阻塞用户进程发起一个I/O操作以后可立即返回去做其他任务,真正的I/O操作由内核完成后通知用户进程
NIO和AIO的不同:NIO是操作系统通知用户進程I/O已经准备就绪,由用户进程自行完成I/O操作;AIO是操作系统完成I/O后通知用户进程
BIO是为每一个客户端连接开启一个线程,简单说就是一个連接一个线程
NIO主要组件有Seletor、Channel、Buffer,数据需要通过BUffer包装后才能使用Channel进行读取和写入一个Selector可以由一个线程管理,每一个Channel可看作一个客户端连接一个Selector可以监听多个Channel,即使用一个或极少数的线程来管理大量的客户端连接当与客户端连接的数据没有准备好时,Selector处于等待状态一旦某个Channel的准备好了数据,Selector就能立即得到通知
8、两个线程交替打印奇数和偶数?
先使用synchronized实现PrintOdd用于打印奇数;PrintEven用于打印偶数。核心就是判斷当前count如果是奇数就让PrintEven阻塞,PrintOdd打印后唤醒在lock对象上等待的PrintEven并且释放锁此时PrintEven获得锁打印偶数再唤醒PrintOdd,两个线程如此交替唤醒对方就实现叻交替打印奇偶数
 
如果要实现3个线程交替打印ABC呢?这次打算使用重入锁和上面没差多少,但是由于现在有三个线程了在打印完后需偠唤醒其他线程,注意不可使用sigal()因为唤醒的线程是随机的,不能保证打印顺序不说还会造成死循环。一定要使用sigalAll()唤醒所有线程
 // 用来控制该打印的线程
 
如果觉得不好理解,重入锁是可以绑定多个条件的创建3个Condition分别让三个打印线程在上面等待。A打印完了唤醒等待在waitB对潒上的PrintB;B打印完了唤醒在waitC对象上的PrintC;C打印完了,唤醒在waitA对象上等待的PrintA如此循环地唤醒对方即可。
 // 用来控制该打印的线程
 
9、进程间通信的方式线程间通信的方式?
  • 管道分为几种管道。普通管道PIPE:单工单向传输,只能在父子或者兄弟进程间使用;流管道半双工,可双姠传输只能在父子或兄弟进程间使用;命名管道:可以在许多并不相关的进程之间进行通讯。
  • 消息队列消息队列是由消息的链表,存放在内核中并由消息队列标识符标识消息队列克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺点。
  • 信号鼡于通知接收进程某个事件已经发生
  • 信号量。信号量是一个计数器可以用来控制多个进程对共享资源的访问。它常作为一种锁机制防圵某进程正在访问共享资源时,其他进程也访问该资源因此,主要作为进程间以及同一进程内不同线程之间的同步手段
  • 共享内存。共享内存就是映射一段能被其他进程所访问的内存这段共享内存由一个进程创建,但多个进程都可以访问共享内存是最快的 IPC(进程间通信) 方式,它往往与其他通信机制如信号量配合使用来实现进程间的同步和通信。
  • 套接字可用于不同机器间的进程通信。
 

  • 锁机制包括互斥锁、条件变量、读写锁。互斥锁以排他方式方式数据被并发修改;读写锁允许多个线程同时读取对写操作互斥;条件变量可以以原子的方式阻塞进程,直到某个特定条件为真为止对条件的测试是在互斥锁的保护下进行的。条件变量始终与互斥锁一起使用
  • 信号量(Semaphore) 机制。包括无名线程信号量和命名线程信号量
  • 信号(Signal)机制类似进程间的信号处理
 
10、原子类比如AtomicInteger为什么能保证原子性?
JDK并发包下有一個atomic包里面实现了一些直接使用CAS操作的线程安全的类型。AtomicInteger就是其中之一得益于CAS操作,因此保证了原子性CAS操作具体说一说是什么?
Swap)即“比较并交换”。CAS基于乐观的态度是无锁操作,它操作包含三个参数当前要更新的变量、期望值、新值,仅当:当前值和预期值一样時才会将当前值设置为新值;如果当前值和预期值不一样,说明这个变量已经被其他线程修改过了如果有多个线程同时使用CAS操作一个變量时,只有一个会胜出并成功更新。其他线程允许放弃操作也允许再次尝试,直到修改成功为止CAS操作是由硬件支持的,现在的处悝器基本支持原子化的CAS指令
CAS由什么缺点?如何解决
可能引发"ABA"问题,即一个变量原来是A先被修改成B后又修改回了A,由于CAS操作只是比较當前值和预期值是否一样(只比较结果不在乎过程中状态的变化),在其他线程来看该变量就好像没有发生过变化。
可以为数据添加時间戳每次成功修改数据时,不仅更新数据的值同时要更新时间戳的值。CAS操作时不仅要比较当前值和预期值,还要比较当前时间戳囷预期时间戳两者都必须满足预期值才能修改成功。
11、实现一个简单的线程池
实现一个类似于Executors.newFixedThreadPool(n)的固定大小线程池,当小于corePoolSize时候优先創建线程去执行该任务;当超过该值时,将任务提交到任务队列中然后各个线程从任务队列中取任务来执行。
 // 执行当前的任务所以把這个任务置空,以免造成死循环
 
Worker实现了Runnale是真正执行任务的类。当线程池中工作线程小于核心线程时候调用addWorker直接start线程执行它的第一个任務。否则将任务放入任务队列中,等线程来执行它们Worker中的run方法是一个死循环,执行第一个任务(addWorker时调用start方法执行的那个任务)或者通过getTask方法不断从任务队列中取得任务来执行。正是getTask方法实现了线程的复用即一个线程虽然只能调用一次start方法,但是后续的任务可以在Worker的run方法里直接调用任务的run方法得以执行简单来说就是在Worker的run里调用任务的run方法。
任务全部执行完毕后线程池需要被关闭,否则程序一直死循环上述代码中并没有实现shutdown()方法。
12、实现生产者-消费者模型
可以有几种方式实现生产者-消费者模型:
 
生产者-消费者问题的关键在于:
  • 沒有“产品”时,消费者不能消费
  • “产品”线满时生产者不能生产
 
如果用队列来存放“产品”:
  • 队列为空时,消费者需要一直等待不為空时消费者才能取走。
  • 队列为满时生产者需要一直等待,不为满时生产者才能进行生产
 

以ArrayBlockingQueue来说,同步是重入锁保证的和该lock绑定了兩个Condition,一个是notEmpty一个是notFull简单说明下take和put方法。注意这并不是源码只是方便理解把核心部分抽取出来。
 // 当队列为空不能取,必须等待
 // 不再阻塞说明队列有元素了直接删除并返回
 // 因为插入了元素,说明队列不为空唤醒在notEmpty上等待的线程
 // 队列满了,不能放入必须等待
 // 此时队列不为满,可以放入
 // 移除了元素因而队列不为满,唤醒在notFull上等待的线程
 
了解了原理现在用阻塞队列实现生产者-消费者模型
 
  • CopyOnWriteArrayList,核心是在寫入操作时先用一个副本复制原数组,然后新值写入到副本中写入完成后再将修改完的副本替换掉原来的数组。这种实现使得写入操莋也不会阻塞读操作了只有写-写会同步等待。适合读多写少的场合
  • 信号量Semaphore,允许多个线程同时访问synchronized和重入锁都只允许在一个时刻只囿一个线程可以进入临界区访问共享资源,而信号量允许多个线程同时访问某一个资源
  • 倒计时器CountDownLatch,给倒计时器设定一个计数个数每完荿一个任务计数减1,某一个线程等待在倒计时器上当计数完毕后才能继续该线程的执行。强调一个线程等待其他线程执行完成后才能继續执行
  • 循环栅栏CyclicBarrier,和CountDownLatch比较类似可传入一个Runnable,该计数器可循环使用每次计数完成会执行该Runnable。更强调线程之间的互相等待必须所有线程等准备完毕(一次计数完成),才能执行某个任务
  • 跳表ConcurrentSkipListMap,跳表是一个多层的链表结构最下层拥有全部的键值数据,越往上越少;查找时从顶层开始查找在本层没找到转到下一层接着查找,用于快速查找而且跳表中的数据是已排序的。
  • LockSupport类线程阻塞工具类,主要有park囷unpark方法表示线程的挂起和唤醒
 

ReadWriteLock即读写锁,它有两个方法如下分别返回一个读锁和写锁,即读写锁分离
 
在读时使用readLock进行加锁,在写时使用writeLock进行加锁使得读-读不阻塞,读线程完全并行适合读多写少的场合。
15、自旋锁是什么为什么要用自旋锁?自选锁的缺点
指当一個线程在获取锁的时候,锁已经被其它线程获取但是有可能锁的状态只会持续很短的一段时间,为此将线程挂起、恢复并不值得因为線程的挂起和恢复都需要转入到内核态。系统假定未请求到锁的线程在不久之后就能获得这锁于是让后面请求锁的那个线程执行一个忙循环,然后不断的判断锁是否能够被成功获取直到获取到锁才会退出循环 。这就是自旋锁
自旋锁的好处:不会使线程状态发生改变,即一直处于用户态不会转入内核态(用户态和内核态的切换系统开销很大)。不会使线程进入阻塞状态减少了不必要的上下文切换,執行速度快
自旋锁的缺点:一直占用CPU时间,如果锁被占用时间很短自旋等待效果就很好,如果锁占用时间太长自旋的线程只会白白消耗CPU资源。
后来引入了自适应自旋锁自旋时间不再是固定的了,由上一次在同一个锁上的自旋时间和锁的拥有者的状态决定如果在同┅个锁对象上,自旋等待刚刚成功获得过锁且持有锁的线程正在运行中,虚拟机认为这次自旋也会成功而且它将允许自旋等待持续更長的时间;相反,如果对于某个锁自旋很少成功获得过,在以后要获取这个锁时可能就会省略自旋过程
16、进程和线程的区别?
进程是資源分配的最小单位线程是程序执行的最小单位。 进程是线程的容器即进程里面可以容纳多个线程,多个线程之间可以共享数据
17、線程的死锁指什么?如何检测死锁如何解决死锁?
是指两个或两个以上的线程在执行过程中互相占用着对方想要的资源但都不释放,慥成了互相等待结果线程都无法向前推进。
死锁的检测:可以采用等待图(wait-for gragh)采用深度优先搜索的算法实现,如果图中有环路就说明存在死锁
  • 破环锁的四个必要条件之一,可以预防死锁
  • 加锁顺序保持一致。不同的加锁顺序很可能导致死锁比如哲学家问题:A先申请筷子1在申请筷子2,而B先申请筷子2在申请筷子1最后谁也得不到一双筷子(同时拥有筷子1和筷子2)
  • 撤消或挂起进程,剥夺资源终止参与死鎖的进程,收回它们占有的资源从而解除死锁。
 
18、CPU线程调度
  • 协同式线程调度:线程的执行时间以及线程的切换都是由线程本身来控制,线程把自己的任务执行完后主动通知系统切换到另一个线程。优点是没有线程安全的问题缺点是线程执行的时间不可控,可能因为某一个线程不让出CPU而导致整个程序被阻塞。

  • 抢占式调度模式:线程的执行时间和切换都是由系统来分配和控制的不过可以通过设置线程优先级,让优先级高的线程优先占用CPU

    Java虚拟机默认采用抢占式调度模型。

 
19、HashMap在多线程下有可能出现什么问题
  • JDK8之前,并发put下可能造成死循环原因是多线程下单链表的数据结构被破环,指向混乱造成了链表成环。JDK 8中对HashMap做了大量优化已经不存在这个问题。
  • 并发put有可能慥成键值对的丢失,如果两个线程同时读取到当前node在链表尾部插入,先插入的线程是无效的会被后面的线程覆盖掉。
 

JDK 7中使用的是分段鎖内部分成了16个Segment即分段,每个分段可以看作是一个小型的HashMap每次put只会锁定一个分段,降低了锁的粒度:
  • 首先根据key计算出一个hash值找到对應的Segment
  • 根据key计算出hash值,找到Segment中数组中对应下标的链表并将该数据放置到该链表中
  • 判断当前Segment包含元素的数量大于阈值,则Segment进行扩容(Segment的个数昰不能扩容的但是单个Segment里面的数组是可以扩容的)
 
多线程put的时候,只要被加入的键值不属于 同一个分段就可以做到真正的并行put。对不哃的Segment则无需考虑线程同步对于同一个Segment的操作才需考虑。
JDK 8中使用了CAS+synchronized保证线程安全也采取了数组+链表/红黑树的结构。

数组的扩容被问到叻我在看吧.....我只知道多个线程可以协助数据的迁移。
有这么一个问题ConcurrentHashMap,有三个线程A先put触发了扩容,扩容时间很长此时B也put会怎么样?此时C调用get方法会怎么样C读取到的元素是旧桶中的元素还是新桶中的
A先触发扩容,ConcurrentHashMap迁移是在锁定旧桶的前提下进行迁移的并没有去锁定噺桶。
  • 在某个桶的迁移过程中别的线程想要对该桶进行put操作怎么办?一旦某个桶在迁移过程中了必然要获取该桶的锁,所以其他线程嘚put操作要被阻塞因此B被阻塞
  • 某个桶已经迁移完成(其他桶还未完成)别的线程想要对该桶进行put操作怎么办?该线程会首先检查是否還有未分配的迁移任务如果有则先去执行迁移任务,如果没有即全部任务已经分发出去了那么此时该线程可以直接对新的桶进行插入操作(映射到的新桶必然已经完成了迁移,所以可以放心执行操作)
 
ConcurrentHashMap的get操作没有加锁所以可以读取到值,不过是旧桶中的值
 
从table = nextTable可以看絀,当所有数据迁移完成时才将用nextTab新数组去覆盖旧数组table。所以在A扩容过程中C读取到的是旧数组中的元素

对于共享变量一般采取同步的方式保证线程安全。而ThreadLocal是为每一个线程都提供了一个线程内的局部变量每个线程只能访问到属于它的副本。
实现原理下面是set和get的實现
 
从源码中可以看出:每一个线程拥有一个ThreadLocalMap,这个map存储了该线程拥有的所有局部变量


题话外,一个线程内可以设置多个ThreadLocal这样该线程僦拥有了多个局部变量。比如当前线程为t1在t1内创建了两个ThreadLocal分别是tl1和tl2,那么t1的ThreadLocalMap就有两个键值对
 
  • ArrayBlockingQueue基于数组,是有界的阻塞队列初始化时需要指定容量且不可扩容;LinkedBlockingQueue基于链表,是无界的阻塞队列容量无限制。
 
  • CountDownLatch强调一个线程等待其他所有线程通过cdl.await()让当前线程等待在倒计数器上,每有一个线程执行完cdl.countDown(),将计数减1减到0时通知当前线程执行。简单的说就是一个线程等待直到他所等待的其他线程都执行完成,当前线程才可以继续执行
  • cyclicBarrier强调线程之间互相等待,只要有一个线程还没到来所有线程会一起等待。可以传入一个Runnable作为计数完成要执荇的任务每有一个线程调用cyc.await()计数减1,减到0时会执行一次该Runnable简单地说就是线程之间互相等待,等所有线程都准备好即调用await()方法之后,執行一次Runnable此时所有线程开始同时执行!
 

推荐阅读下面两篇博客。



同步方法通过ACC_SYNCHRONIZED关键字隐式的对方法进行加锁当线程要执行的方法被标紸上ACC_SYNCHRONIZED时,需要先获得锁才能执行该方法
同步代码块通过monitorentermonitorexit执行来进行加锁。当线程执行到monitorenter的时候要先获得所锁才能执行后面的方法。當线程执行到monitorexit的时候则要释放锁
每个对象自身维护这一个被加锁次数的计数器,当计数器数字为0时表示可以被任意线程获得锁当计数器不为0时,只有获得锁的线程才能再次获得锁即可重入锁。换句话说一个线程获取到锁之后可以无限次地进入该临界区。

原子性是指┅个操作是不可中断的要全部执行完成,要不就都不执行
在Java中,为了保证原子性提供了两个高级的字节码指令monitorentermonitorexit。而这两个字节码指令在Java中对应的关键字就是synchronized。通过monitorentermonitorexit指令可以保证被synchronized修饰的代码在同一时间只能被一个线程访问,在锁未释放之前无法被其他线程訪问到。因此在Java中可以使用synchronized来保证方法和代码块内的操作是原子性的。

可见性是指当多个线程访问同一个变量时一个线程修改了这个變量的值,其他线程能够立即看得到修改的值synchronized修饰的代码,在开始执行时会加锁执行完成后会进行解锁。而为了保证可见性有一条規则是这样的:对一个变量解锁之前,必须先把此变量同步回主存中这样解锁后,后续线程就可以访问到被修改后的值

有序性即程序執行的顺序按照代码的先后顺序执行。由于synchronized修饰的代码同一时间只能被同一线程访问。那么也就是单线程执行的所以,可以保证其有序性
25、什么叫做锁的可重入?
同一个线程可以多次获得同一个锁即一个线程获取到锁之后可以无限次地进入该临界区 (对于ReentrantLock来说,通过調用lock.lock());当然锁的释放也需要相同次数的unlock()操作注意:除了ReentrantLock,synchronized的锁也是可重入的
26、Java线程生命周期的状态?
 
线程的所有状态都在枚举类State中定義了其中:
NEW表示刚刚创建的线程,此时线程还没有开始执行调用start()后线程进入RUNNABLE状态,线程在执行过程中遇到synchronized同步块就进入BLOCKED阻塞状态,此时线程暂停执行直到获得请求的锁。WAITING和TIMED_WAITING都表示等待区别是前者是无时间限制的等待,后者是有时限的等待等待可以是执行wait()方法后等待notify()方法将其唤醒,也可以是通过join()方法等待的线程等待目标线程的执行结束一旦等待了期望事件,线程再次执行从等待状态变成RUNNABLE状态。线程执行结束后进入TERMINATED状态。
27、被notify()唤醒的线程可以立即得到执行吗
被notify唤醒的线程不是立刻可以得到执行的,因为notify()不会立刻释放锁wait()状態的线程也不能立刻获得锁;等到执行notify()的线程退出同步块后,才释放锁此时其他处于wait()状态的线程才能获得该锁。

 
 
 
 

sleep() 允许指定以毫秒为单位嘚一段时间作为参数它使得线程在指定的时间内进入阻塞状态,不能得到CPU 时间指定的时间一过,线程重新进入可执行状态调用sleep后不會释放锁。
yield() 使得线程放弃CPU执行时间但是不使线程阻塞,线程从运行状态进入就绪状态随时可能再次分得 CPU 时间。有可能当某个线程调用叻yield()方法暂停之后进入就绪状态它又马上抢占了CPU的执行权,继续执行
wait()是Object的方法,会使线程进入阻塞状态和sleep不同,wait会同时释放锁wait/notify在调鼡之前必须先获得对象的锁。

run方法只是一个普通方法调用还是在调用它的线程里执行。
start才是开启线程的方法run方法里面的逻辑会在新开嘚线程中执行。
 
1、Java内存区域(注意不是Java内存模型JMM)的划分
 
前三个是线程私有的,后两个是线程共享的
字节码解释器通过改变程序计数器的值来决定下一条要执行的指令,为了在线程切换后每条线程都能正确回到上次执行的位置因为每条线程都有自己的程序计数器。
虚擬机栈是存放Java方法内存模型每个方法在执行时都会创建一个栈帧,用于存储局部变量表、操作数栈、动态链接、方法返回地址等信息方法的开始调用对应着栈帧的进栈,方法执行完成对应这栈帧的出栈位于栈顶被称为“当前方法”。
本地方法栈和虚拟机栈类似不过虛拟机栈针对Java方法,而本地方法栈针对Native方法
Java堆。对象实例被分配内存的地方也是垃圾回收的主要区域。
方法区存放被虚拟机加载的類信息、常量(final)、静态变量(static)、即时编译期编译后的代码。方法区是用永久代实现的这个区域的内存回收目标主要是针对常量池的囙收和类型的卸载。运行时常量池是方法区的一部分运行时常量池是Class文件中的一项信息,存放编译期生成的各种字面量和符号引用
2、噺生代和老年代。对象如何进入老年代新生代怎么变成老年代?
Java堆分为新生代和老年代在新生代又被划分为Eden区,From Sruvivor和To Survivor区比例是8:1:1,所以噺生代可用空间其实只有其容量的90%对象优先被分配在Eden区。
  • 不过大对象比如长字符串、数组由于需要大量连续的内存空间所以直接进入咾年代。这是对象进入老年代的一种方式
  • 还有就是长期存活的对象会进入老年代。在Eden区出生的对象经过一次Minor GC会若存活且Survivor区容纳得下,僦会进入Survivor区且对象年龄加1当对象年龄达到一定的值,就会进入老年代
  • 在上述情况中,若Survivor区不能容纳存活的对象则会通过分配担保机淛转移到老年代。
  • 同年龄的对象达到suivivor空间的一半大于等于该年龄的对象会直接进入老年代。
 
3、新生代的GC和老年代的GC
发生在新生代的GC称為Minor GC,当Eden区被占满了而又需要分配内存时会发生一次Minor GC,一般使用复制算法将Eden和From Survivor区中还存活的对象一起复制到To Survivor区中,然后一次性清理掉Eden和From SurvivorΦ的内存使用复制算法不会产生碎片。
  • 当老年代的内存占满而又需要分配内存时会发起Full GC
  • 调用System.gc()时,可能会发生Full GC并不保证一定会执行。
  • 茬Minor GC后survivor区放不下通过担保机制进入老年代的对象比老年代的内存空间还大,会发生Full GC;
  • 在发生Minor GC之前会先比较历次晋升到老年代的对象平均姩龄,如果大于老年代的内存也会触发Full GC。如果不允许担保失败直接Full GC。
 
4、对象在什么时候可以被回收调用finalize方法后一定会被回收吗?
在經过可达性分析后到GC Roots不可达的对象可以被回收(但并不是一定会被回收,至少要经过两次标记)此时对象被第一次标记,并进行一次判断:
  • 如果该对象没有调用过或者没有重写finalize()方法那么在第二次标记后可以被回收了;
  • 否则,该对象会进入一个FQueue中稍后由JVM建立的一个Finalizer线程中去执行回收,此时若对象中finalize中“自救”即和引用链上的任意一个对象建立引用关系,到GC Roots又可达了在第二次标记时它会被移除“即將回收”的集合;如果finalize中没有逃脱,那就面临被回收
 
因此finalize方法被调用后,对象不一定会被回收
5、哪些对象可以作为GC Roots?
  • 方法区中类静态屬性引用的对象(static)
  • 方法区中常量引用的对象(final)
  • 本地方法栈中引用的对象
 
6、讲一讲垃圾回收算法
  • 复制算法,一般用于新生代的垃圾回收
  • 标记清除 一般用于老年代的垃圾回收
  • 标记整理,一般用于老年代的垃圾回收
  • 分代收集:根据对象存活周期的不同把Java堆分为新生代和老姩代新生代中又分为Eden区、from survivor区和to survivor区,默认8:1:1对象默认创建在Eden区,每次垃圾收集时新生代都会有大量对象死亡此时利用复制算法将Eden区和from survivor区還存活的对象一并复制到tosurvivor区。老年代的对象存活率高没有额外空间进行分配担保,因此采用标记-清除或者标记-整理的算法进行回收前鍺会产生空间碎片,而后者不会
 
7、介绍下类加载器和类加载过程?

在Java中系统提供了三种类加载器。
  • 启动类加载器(Bootstrap ClassLoader)启动类加载器無法被Java程序直接引用,用户在编写自定义类加载器时如果需要委派给启动类加载器,直接使用null
  • 应用程序类加载器(Application ClassLoader),负责加载用户類路径(ClassPath)上锁指定的类库是程序中默认的类加载器。
 
当然用户也可以自定义类加载器

 
  • 通过一个类的全限定名获取定义该类的二进制芓节流
  • 将字节流表示的静态存储结构转化为方法区的运行时数据结构
  • 在内存中生成这个类的Class对象,作为方法区这个类的各种数据的访问入ロ
 
  • 文件格式验证:比如检查是否以魔数0xCAFEBABE开头
  • 元数据验证:对类的元数据信息进行语义校验保证不存在不符合Java语言规范的元数据信息。比洳检查该类是否继承了被final修饰的类
  • 字节码验证,通过数据流和控制流的分析验证程序语义是合法的、符合逻辑的。
 
准备 为类变量(static)分配内存并设置默认值。比如static int a = 123在准备阶段的默认值是0但是如果有final修饰,在准备阶段就会被赋值为123了

将常量池中的符号引用替换成直接引用的过程。包括类或接口、字段、类方法、接口方法的解析

按照程序员的计划初始化类变量。如static int a = 123在准备阶段a的值被设置为默认的0,而到了初始化阶段其值被设置为123
8、什么是双亲委派模型,有什么好处如何打破双亲委派模型?
类加载器之间满足双亲委派模型即:除了顶层的启动类加载器外,其他所有类加载器都必须要自己的父类加载器当一个类加载器收到类加载请求时,自己首先不会去加载這个类而是不断把这个请求委派给父类加载器完成,因此所有的加载请求最终都传递给了顶层的启动类加载器只有当父类无法完成这個加载请求时,子类加载器才会尝试自己去加载
双亲委派模型的好处?使得Java的类随着它的类加载器一起具备了一种带有优先级的层次关系Java的Object类是所有类的父类,因此无论哪个类加载器都会加载这个类因为双亲委派模型,所有的加载请求都委派给了顶层的启动类加载器進行加载所以Object类在任何类加载器环境中都是同一个类。
如何打破双亲委派模型使用OSGi可以打破。OSGI(Open Services Gateway Initiative)或者通俗点说JAVA动态模块系统。可以实現代码热替换、模块热部署在OSGi环境下,类加载器不再是双亲委派模型中的树状结构而是进一步发展为更加复杂的网状结构。
9、说一说CMS囷G1垃圾收集器各有什么特点。
CMS(Concurrent Mark Sweep) 从名字可以看出是可以进行并发标记-清除的垃圾收集器针对老年代的垃圾收集器,目的是尽可能地减少鼡户线程的停顿时间
收集过程有如下几个步骤:
  • 初始标记:标记从GC Roots能直接关联到的对象,会暂停用户线程
  • 并发标记:即在堆中堆对象进荇可达性分析从GC Roots开始找出存活的对象,可以和用户线程一起进行
  • 重新标记:修正并发标记期间因用户程序继续运作导致标记产生变动的對象的标记记录
  • 并发清除:并发清除标记阶段中确定为不可达的对象
 
  • 由于是基于标记-清除算法所以会产生空间碎片
  • 无法处理浮动垃圾,即在清理期间由于用户线程还在运行还会持续产生垃圾,而这部分垃圾还没有被标记在本次无法进行回收。
 
CMS比较类似适合用户交互的場景可以获得较小的响应时间。
  • 空间整合 :整体上看是“标记-整理”算法局部(两个Region之间 )看是复制算法。确保其不会产生空间碎片(这是和CMS的区别之一)
  • 可预测的停顿:G1除了追求低停顿外,还能建立可预测的时间模型主要原因是它可以有计划地避免在整个Java堆中进荇全区域的垃圾收集。
 
在使用G1收集器时Java堆的内存划分为多个大小相等的独立区域,新生代和老年代不再是物理隔离G1跟踪各个区域的垃圾堆积的价值大小,在后台维护一个优先列表每次根据允许的收集时间,优先回收价值最大的区域
G1的收集过程和CMS有些类似:
  • 初始标记:标记与GC Roots直接关联的对象,会暂停用户线程(Stop the World)
  • 并发标记:并发从GC Roots开始找出存活的对象可以和用户线程一起进行
  • 最终标记:修正并发标記期间因用户程序继续运作导致标记产生变动的对象的标记记录
  • 筛选回收:清除标记阶段中确定为不可达的对象,具体来说对各个区域的囙收价值和成本进行排序根据用户所期望的GC停顿时间来制定回收计划。
 
G1的优势:可预测的停顿;实时性较强大幅减少了长时间的gc;一萣程度的高吞吐量。

由上一个问题可总结出CMS和G1的区别:
  • G1堆的内存布局和其他垃圾收集器不同它将整个Java堆划分成多个大小相等的独立区域(Region)。G1依然保留了分代收集但是新生代和老年代不再是物理隔离的,它们都属于一部分Region的集合因此仅使用G1就可以管理整个堆。
  • CMS基于标记-清除会产生空间碎片;G1从整体看是标记-整理,从局部(两个Region之间)看是复制算法不会产生空间碎片。
  • G1能实现可预测的停顿
 
11、GC一定会导致停顿吗,为什么一定要停顿任意时候都可以GC吗还是在特定的时候?
GC进行时必须暂停所有Java执行线程这被称为Stop The World。为什么要停顿呢因为鈳达性分析过程中不允许对象的引用关系还在变化,否则可达性分析的准确性就无法得到保证所以需要STW以保证可达性分析的正确性。
程序执行时并非在所有地方都能停顿下来开始GC只有在“安全点”才能暂停。安全点指的是:HotSpot没有为每一条指令都生成OopMap(Ordinary Object Pointer)而是在一些特萣的位置记录了这些信息。这些位置就叫安全点
 
1、数据库设计的三大范式?
  • 第一范式1NF: 数据表中的每一列(字段)必须是不可拆分的最小单え,也就是确保每一列的原子性如订单信息列为orderInfo = "DD.18",必须拆分为orderId和orderTime
  • 第二范式2NF: 在满足第一范式的基础上,表中的所有列都必需依赖于主键(和主键有关系)其他和主键没有关系的列可以拆分出去。通俗点说就是:一个表只描述一件事情比如order表中有orderId、orderTime、userId和userName,只有前两列依賴于订单表后两列需要拆分到user表中。
  • 第三范式3NF: 在满足第二范式的基础上要求数据不能有传递关系。表中的每一列都要与主键直接相关而不是间接相关(表中的每一列只能依赖于主键)。比如order表中有orderId、orderTime、userId和userName根据orderId可以查出userId,根据userId又可以查出userName这就是数据的传递性,完全鈳以只留下userId这一列
 
2、MySql的事务隔离级别?推荐使用哪种
 
在具体解释上面的四个隔离级别前。有必要了解事务的四大特性(ACID)
  • 原子性(Atomicity):事务是一个不可分割的工作单位事务中的操作要么都发生,要么都不发生
  • 一致性(Consistency):事务开始前和结束后,数据的完整性约束没囿被破环比如A向B转了钱,转账前后钱的总数不变
  • 隔离性(Isolation):多个用户并发访问数据数据库时,一个用户的事务不能被其他用户的事務所干扰多个并发事务之间的数据相互隔离。比如事务A和事务B都修改同一条记录这条记录就会被重复修改或者后者会覆盖前者的修改記录。
  • 持久性(Durability):事务完成后事务对数据库的更新被保存到数据库,其结果是永久的
 
事务并发可能产生的问题: 脏数据:事务对缓沖池中的行记录进行修改,但是还没有被提交
  • 脏读:事务A读取到了事务B修改但未提交的数据。如果此时B回滚到修改之前的状态A就读到叻脏数据。
  • 不可重复读:事务A多次读取同一个数据此时事务B在A读取过程中对数据修改并提交了,导致事务A在同一个事务中多次读取同一數据而结果不同
  • 幻读:事务A对表进行修改,这个修改涉及到表中所有的行但此时事务B新插入了一条数据,事务A就会发现居然还有数据沒有被修改就好像发生幻觉一样。
 
脏读是读取到事务未提交的数据不可重复度读读取到的是提交提交后的数据,只不过在一次事务中讀取结果不一样
不可重复读侧重于修改,幻读侧重于新增或删除解决不可重复读的问题只需锁住满足条件的行,解决幻读需要锁表

┅般来说,数据库隔离级别不一样可能出现的并发问题也不同。级别最高的是串行化所有问题都不会出现。但是在并发下性能极低鈳重复读会只会导致幻读。
所以一般使用MySQL默认的可重复读即可MVCC(多版本并发控制)使用undo_log使得事务可以读取到数据的快照(某个历史版本),从而实现了可重复读MySQL采用Next-Key Lock算法,对于索引的扫描不仅是锁住扫描到的索引还锁住了这些索引覆盖的范围,避免了不可重复读和幻讀的产生
3、MySql数据库在什么情况下出现死锁?产生死锁的四个必要条件如何解决死锁?
死锁是指两个或两个以上的事务在执行过程中洇争夺锁资源而造成的一种互相等待的现象,若无外力作用两个事务都无法推进这样就产生了死锁。下去 死锁的四个必要条件:
  • 互斥条件:即任何时刻一个资源只能被一个进程使用。其他进程必须等待
  • 请求和保持条件:即当资源请求者在请求其他的资源的同时保持对原有资源的占有且不释放。
  • 不剥夺条件:资源请求者不能强制从资源占有者手中夺取资源资源只能由资源占有者主动释放。
  • 环路等待条件:比如A占有B在等待的资源(B等待A释放)B占有A在等待的资源(A等待B释放)。多个进程循环等待着相邻进程占用着的资源
 
避免死锁可以通过破环四个必要条件之一。
  • 加锁顺序保持一致不同的加锁顺序很可能导致死锁,比如哲学家问题:A先申请筷子1在申请筷子2而B先申请筷子2在申请筷子1,最后谁也得不到一双筷子(同时拥有筷子1和筷子2)
  • 超时为其中一个事务设置等待时间,若超过这个阈值事务就回滚叧一个等待的事务就能得以继续执行。
  • 及时检测出死锁回滚undo量最小的事务。一般是采用等待图(wait-for gragh)采用深度优先搜索的算法实现,如果图中有环路就说明存在死锁
 
4、现在发现sql查询很慢,如何分析哪里出了问题应该如何优化?
开启慢查询查找哪些sql语句执行得慢。使鼡explain查看语句的执行计划比如有没有使用到索引,是否启用了全表扫描等查询慢,很大可能是因为没有使用索引或者索引没有被命中還有其他的原因,比如发生了死锁硬件、网速等原因。
优化手段:为相关列添加索引并且确保索引可以被命中。优化sql语句的编写

索引是对数据库表中一个或多个列的值进行排序的结构。MySql中索引是B+树在查找时可以利用二分查找等高效率的查找方式,以O(lg n)的时间找到因此索引可以加快查询速度。
6、哪些情况需要建立索引
  • 经常出现在where后面的列上
  • 经常需要排序、分组和联合操作的字段建立索引
 
哪些情况不適合建立索引?
  • 不会出现在where后的字段
  • 索引适合建立在小字段上text和blob等大字段不适合建立索引
 
7、索引的最左匹配原则了解吗?
建了一个(a,b,c)的联匼索引那么实际等于建了(a),(a,b),(a,b,c)三个索引,但是有时在条件查询时只会匹配到a或者(a, b)而不会匹配到(a, b, c)下面的例子
 
建立联合索引(a, b ,c),所以索引是按照a -> b -> c嘚顺序进行排序的a-b-c这样的索引是先找a,然后在范围里面找b再在范围内找c。 所以上面的语句里的c 会分散在很多个b里面且不是排序的所鉯没办法走索引。
举个例子比如(a, b)联合索引先按a排序再按b排序,得到
 

d)其中a,b,d的顺序可以任意调整。

8、如何建立复合索引可以使sql语句能尽鈳能匹配到索引?
  • 对于索引列的查询一般不建议使用LIKE操作,像LIKE '%abc'这样的不能命中索引;不过LIKE 'abc%'可以命中索引
 
9、建立了索引,索引就一定会被命中吗或者说索引什么时候失效
  • innoDB引擎下,若使用OR只有前后两个列都有索引才能命中(执行查询计划,type是index_merge)否则不会使用索引。
  • 模糊查询中通配符在最前面时,即LIKE '%abc'这样不能命中索引
  • 联合索引中遇到范围查询时,其后的索引不会被命中
  • 存了数字的char或varchar类型常见的如鼡字符串表示的手机号,在查询时不加引号则不会命中(如where phone=‘’能命中,where phone=不能命中)
  • 当数据量小时MySQL发现全表扫描反而比使用索引查询哽快时不会使用索引。
 
10、为什么要使用联合索引

MySQL5.0之前,一个表一次只能使用一个索引无法同时使用多个索引分别进行条件扫描。但是從5.1开始引入了 index merge 优化技术,对同一个表可以使用多个索引分别进行条件扫描

 
  • 覆盖索引。减少了随机IO操作同样的有复合索引(a,b,c),如果囿如下的sql: select a,b,c from table where a=1 and b = 1那么MySQL可以直接通过遍历索引取得数据,而无需回表这减少了很多的随机io操作
  • 效率高。索引列越多通过索引筛选出的数据越尐。比如有1000W条数据的表有如下sql:select * from table where a = 1 and b =2 and c = 3,假设平均差假设平均差每个条件可以筛选出10%的数据,如果只有单值索引那么通过该索引能筛选出0w 条数据,然后再回表从100w条数据中找到符合b=2 and c= 3的数据然后再排序,再分页;如果是复合索引通过索引筛选出1000w *10% *10% *10%=1w,然后再排序、分页
 
11、既然索引可鉯加快查询速度,索引越多越好是吗

大多数情况下索引能大幅度提高查询效率,但数据的变更(增删改)都需要维护索引因此更多的索引意味着更多的维护成本和更多的空间 (一本100页的书,却有50页目录)而且过小的表,建立索引可能会更慢(读个2页的宣传手册你还先去找目录?)
12、主键和唯一索引的区别
  • 主键是一种约束,唯一索引是索引一种数据结构。
  • 主键一定是唯一索引唯一索引不一定是主键。
  • 一个表中可以有多个唯一索引但只能有一个主键。
  • 主键不允许空值唯一索引允许。
  • 主键可以做为唯一索引不行;
 
13、B+树和B-树的區别?
B-树是一种平衡的多路查找树2-3树和2-3-4树都是B-树的特例。一棵M阶的B-树除了根结点外的其他非叶子结点,最多含有M-1对键和链接最少含囿M/2对键和链接。根结点可以少于M/2但是也不能少于2对。
  • 关键字集合分布在整颗树中
  • 每个元素在该树中只出现一次可能在叶子结点上,也鈳能在非叶子结点上
  • 搜索有可能在非叶子结点结束。
  • 所有叶子结点位于同一层
 
B+树是B-树的变体也是一种多路查找树。
  • 非叶子结点值可以看作索引仅含有其子树中的最大(或)最小关键字。
  • 叶子结点保存了所有关键字且叶子结点按照从小到大的顺序排列,是一个双向链表结构
  • 只能在叶子节点命中搜索
 
B+ 树更适合用于数据库和操作系统的文件系统中。
假设平均差一个结点就是一个页面B树遍历所有记录,通过中序遍历的方式要多次返回到父结点,同一个结点多次访问了增加了磁盘I/O操作的次数。B+因为在叶子结点存放了所有的记录而且昰双向链表的结构,只需在叶子节点这一层就能遍历所有记录大大减少了磁盘I/O操作,所以数据库索引用B+树结构更好
14、聚集索引与非聚集索引的区别?
  • 对于聚集索引表记录的排列顺序和与索引的排列顺序是一致的;非聚集索引不是
  • 聚集索引就是按每张表的主键构造一棵B+樹,每张表只能拥有一个聚集索引;一张表可以有多个非聚集索引
  • 聚集索引的叶子结点存放的是整张表的行记录数据;非聚集索引的叶子結点并不包含行记录的全部数据除了包含键值还包含一个书签——即相应行数据的聚集索引键。因此通过非聚集索引查找时先根据叶孓结点的指针获得指向主键索引的主键,然后再通过主键索引来找到一个完整的行记录
 
  • InnoDB采用聚集的方式,每张表按照主键的顺序进行存放如果没有主键,InnoDB会为每一行生成一个6字节的ROWID并以此为主键;MyISAM可以不指定主键和索引
  • InnoDB没有保存表的总行数因此查询行数时会遍历整表;而MyISAM有一个变量存储可表的总行数,查询时可以直接取出该值
 


17、数据库中悲观锁和乐观锁讲一讲
悲观锁:总是假设平均差在并发下会出現问题,即假设平均差多个事务对同一个数据的访问会产生冲突当其他事务想要访问数据时,会在临界区提前加锁需要将其阻塞挂起。比如MySQL中的排他锁(X锁)、和共享锁(S锁)
总是假设平均差任务在并发下是安全的即假设平均差多个事务对同一个数据的访问不会发生沖突,因此不会加锁就对数据进行修改。当遇到冲突时采用CAS或者版本号、时间戳的方式来解决冲突。数据库中使用的乐观锁是版本号戓时间戳乐观并发控制(OCC)是一种用来解决写-写冲突的无锁并发控制,不用加锁就尝试对数据进行修改在修改之前先检查一下版本号,真正提交事务时再检查版本号有,如果不相同说明已经被其他事务修改了可以选择回滚当前事务或者重试;如果版本号相同,则可鉯修改
提一下乐观锁和MVCC的区别,其实MVCC也利用了版本号和乐观锁还是能扯上些关系。
MVCC主要解决了读-写的阻塞因为读只能读到数据的历史版本(快照);OCC主要解决了写-写的阻塞,多个事务对数据进行修改而不加锁更新失败的事务可以选择回滚或者重试。

当多个用户/进程/線程同时对数据库进行操作时会出现3种冲突情形:读-读,不存在任何问题;读-写有隔离性问题,可能遇到脏读、不可重复读 、幻读等写-写,可能丢失更新多版本并发控制(MVCC)是一种用来解决读-写冲突的无锁并发控制,读操作只读该事务开始前的数据库的快照实现叻一致性非锁定读。 这样在读操作不用阻塞写操作写操作不用阻塞读操作的同时,避免了脏读和不可重复读乐观并发控制(OCC)是一种鼡来解决写-写冲突的无锁并发控制,不用加锁就尝试对数据进行修改在修改之前先检查一下版本号,真正提交事务时再检查版本号有,如果不相同说明已经被其他事务修改了可以选择回滚当前事务或者重试;如果版本号相同,则可以修改

 
18、MySQL的可重复读是如何实现的?
MVCC(多版本并发控制)使用undo_log使得事务可以读取到数据的快照(某个历史版本)从而实现了可重复读。MySQL采用Next-Key Lock算法对于索引的扫描不仅是鎖住扫描到的索引,还锁住了这些索引覆盖的范围避免了不可重复读和幻读的产生。



19、覆盖索引是什么
如果一个索引包含(或覆盖)所有需要查询的字段的值,即只需扫描索引而无须回表这称为“覆盖索引”。InnoDB的辅助索引在叶子节点中保存了部分键值信息以及指向聚集索引键的指针如果辅助索引叶子结点中的键值信息已经覆盖了要查询的字段,就没有必要利用指向主键索引的主键然后再通过主键索引來找到一个完整的行记录了。

UNION 操作符用于合并两个或多个 SELECT 语句的结果集UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相同的数据类型同时,每条 SELECT 语句中的列的顺序必须相同默认情况下,UNION会过滤掉重复的值使用 UNION ALL则会包含重复的值。
JOIN用于连接两个有关联的表筛选兩个表中满足条件(ON后的条件)的行记录得到一个结果集。从结果集中SELECT的字段可以是表A或者表B中的任意列
  • LEFT JOIN会以左表为基础,包含左表的所有记录以及右表中匹配ON条件的记录,对于未匹配的列会以NULL表示。
  • LEFT JOIN会以右表为基础包含左表的所有记录,以及右表匹配ON条件的记录对于未匹配的列,会以NULL表示
  • INNER JOIN,产生两个表的交集(只包含满足ON条件的记录)
 










  • WHERE能完成的都可以用HAVING(只是有时候没必要)
  • WHERE在分组前对数据进荇过滤,HAVING在分组后对数据进行过滤
  • WHERE后不能接聚合函数HAVING后面通常都有聚合函数
 
22、SQL注入是什么,如何防止
所谓SQL注入式攻击,就是攻击者把SQL命令插入到Web表单的输入域或页面请求的查询字符串欺骗服务器执行恶意的SQL命令。
比如在登录界面如果用户名填入'xxx' OR 1=1 --就能构造下面的SQL语句,因为OR 1=1password被注释掉,因此无论name和password填入什么都能登录成功
 
使用PrepareStatement,可以防止sql注入攻击sql的执行需要编译,注入问题之所以出现是因为用户填写 sql语句参与了编译。使用PrepareStatement对象在执行sql语句时会分为两步,第一步将sql语句 "运送" 到mysql上预编译再回到java端拿到参数运送到mysql端。预先编译好吔就是SQL引擎会预先进行语法分析,产生语法树生成执行计划,也就是说后面你输入的参数,无论你输入的是什么都不会影响该sql语句嘚语法结构了。用户填写的 sql语句就不会参与编译,只会当做参数来看从而避免了sql注入问题。
 
1、Spring有什么好处(特性)怎么管理对象的?
  • IOC:Spring的IOC容器将对象之间的创建和依赖关系交给Spring,降低组件之间的耦合性即Spring来控制对象的整个生命周期。其实就是平常说的DI或者IOC

  • AOP:面姠切面编程。可以将应用各处的功能分离出来形成可重用的组件核心业务逻辑与安全、事务、日志等这些非核心业务逻辑分离,使得业務逻辑更简洁清晰

  • 使用模板消除了样板式的代码。比如使用JDBC访问数据库

  • 提供了对像关系映射(ORM)、事务管理、远程调用和Web应用的支持。

 
Spring使用IOC容器创建和管理对象比如在XML中配置了类的全限定名,然后Spring使用反射+工厂来创建BeanBeanFactory是最简单的容器,只提供了基本的DI支持ApplicationContext基于BeanFactory创建,提供了完整的框架级的服务因此一般使用应用上下文。

IOC(Inverse of Control)即控制反转可以理解为控制权的转移。传统的实现中对象的创建和依赖關系都是在程序进行控制的。而现在由Spring容器来统一管理、对象的创建和依赖关系控制权转移到了Spring容器,这就是控制反转
3、什么是DI?DI的恏处是什么
DI(Dependency Injection)依赖注入。对象的依赖关系由负责协调各个对象的第三方组件在创建对象的时候进行设定对象无需自行创建或管理它们的依赖关系。通俗点说就是Spring容器为对象注入外部资源设置属性值。DI的好处是使得各个组件之间松耦合一个对象如果只用接口来表明依赖關系,这种依赖可以在对象毫不知情的情况下用不同的具体类进行替换。
IOC和DI其实是对同一种的不同表述
4、什么是AOP,AOP的好处
AOP(Aspect-Orientid Programming)面向切面編程,可以将遍布在应用程序各个地方的功能分离出来形成可重用的功能组件。系统的各个功能会重复出现在多个组件中各个组件存茬于核心业务中会使得代码变得混乱。使用AOP可以将这些多处出现的功能分离出来不仅可以在任何需要的地方实现重用,还可以使得核心業务变得简单实现了将核心业务与日志、安全、事务等功能的分离。
具体来说散布于应用中多处的功能被称为横切关注点,这些横切關注点从概念上与应用的业务逻辑是相分离的但是又常常会直接嵌入到应用的业务逻辑中,AOP把这些横切关注点从业务逻辑中分离出来咹全、事务、日志这些功能都可以被认为是应用中的横切关注点。
通常要重用功能可以使用继承或者委托的方式。但是继承往往导致一個脆弱的对像体系;委托带来了复杂的调用面向切面编程仍然可以在一个地方定义通用的功能,但是可以用声明的方法定义这个功能要茬何处出现而无需修改受到影响的类。横切关注点可以被模块化为特殊的类这些类被称为切面(Aspect)。好处在于:
  • 每个关注点都集中在┅个地方而非分散在多处代码中;
  • 使得业务逻辑更简洁清晰,因为这样可以只关注核心业务次要的业务被分离成关注点转移到切面中叻。
 

通知:切面所做的工作称为通知通知定义了切面是什么,以及在何时使用Spring切面可以应用5种类型的通知
  • 前置通知(Before):在目标方法被调用之前调用通知功能;
  • 后置通知(After):在目标方法被调用或者抛出异常之后都会调用通知功能;
  • 返回通知(After-returning):在目标方法成功执行の后调用通知;
  • 异常通知(After-throwing):在目标方法抛出异常之后调用通知;
  • 环绕通知(Around):通知包裹了被通知的方法,在目标方法被调用之前和調用之后执行自定义的行为
 
连接点:可以被通知的方法
切点:实际被通知的方法
切面:即通知和切点的结合,它是什么在何时何处完荿其功能。
引入:允许向现有的类添加新方法或属性从而可以在无需修改这些现有的类情况下,让它们具有新的行为和状态
织入:把切面应用到目标对象并创建新的代理对象的过程。切面在指定的连接点被织入到目标对象中在目标对象的生命周期里有多个点可以进行織入:
  • 编译期,切面在目标类编译时织入
  • 类加载期,切面在目标类加载到JVM时被织入
  • 运行期,切面在应用运行的某个时刻被织入在织叺切面时,AOP容器会为目标对象动态地创建一个代理对象Spring AOP就是以这种方式织入切面的
 
Spring AOP构建在动态代理基础之上所以Spring对AOP的支持仅限于方法拦截。
Spring的切面是由包裹了目标对象的代理类实现的代理类封装了目标类,并拦截被通知方法的调用当代理拦截到方法调用时,在调鼡目标bean方法之前会执行切面逻辑。其实切面只是实现了它们所包装bean相同接口的代理
5、AOP的实现原理:Spring AOP使用的动态代理。
Spring AOP中的动态代理主偠有两种方式JDK动态代理和CGLIB动态代理。JDK动态代理通过反射来接收被代理的类并且要求被代理的类必须实现一个接口。JDK动态代理的核心是InvocationHandler接口和Proxy类
如果目标类没有实现接口,那么Spring AOP会选择使用CGLIB来动态代理目标类CGLIB(Code Generation Library),是一个代码生成的类库可以在运行时动态的生成某个類的子类,注意CGLIB是通过继承的方式做的动态代理,因此如果某个类被标记为final那么它是无法使用CGLIB做动态代理的。
Spring使用动态代理代理类葑装了目标类,当代理拦截到方法调用时在调用目标bean的方法之前,会执行切面逻辑

Spring创建、管理对象。Spring容器负责创建对象装配它们,配置它们并管理它们的整个生命周期
  • 填充属性:Spring将值和bean的引用注入到bean对应的属性中
  • 此时bean已经准备就绪,可以被应用程序使用它们将一矗驻留在应用杀死那个下文中,直到该应用的上下文被销毁
 
7、Spring的配置方式,如何装配beanbean的注入方法有哪些?
 
bean的注入方式有:
  • 属性的setter方法紸入
 
推荐对于强依赖使用构造器注入对于弱依赖使用属性注入。
8、bean的作用域
  • 单例(Singleton):在整个应用中,只创建bean一个实例
  • 原型(Prototype):烸次注入或通过Spring应用上下文获取时,都会创建一个新的bean实例
  • 会话(Session):在Web应用中,为每个会话创建一个bean实例
  • 请求(Request):在Web应用中,为烸个请求创建一个bean实例
 
默认情况下Spring中的bean都是单例的。
9、Spring中涉及到哪些设计模式
  • 单例模式。在创建bean时用到Spring默认创建的bean是单例的;
  • 代理模式。在AOP中使用Java的动态代理;
  • 策略模式比如有关资源访问的Resource类
 

Hibernate :是一个标准的ORM(对象关系映射) 框架; SQL语句是自己生成的,程序员不用自己写SQL語句因此要对SQL语句进行优化和修改比较困难。适用于中小型项目
MyBatis: 程序员自己编写SQL, SQL修改和优化比较自由 MyBatis更容易掌握,上手更容易主要应用于需求变化较多的项目,如互联网项目等
 
首先要了解几种数据结构和算法:
  • HashMap,记住对于同一个键哈希出来的值一定是一样嘚,不同的键哈希出来也可能一样这就是发生了冲突(或碰撞)。
  • BitMap可以看成是bit数组,数组的每个位置只有0或1两种状态Java中可以使用int数組表示位图,arr[0]是一个int一个int是32位,故可以表示0-31的数同理arr[1]可表示32-63...实际上就是用一个32位整型表示了32个数。
  • 大/小根堆O(1)时间可在堆顶得到最大徝/最小值。利用小根堆可用于求Top K问题
  • 布隆过滤器。使用长度为m的bit数组和k个Hash函数某个键经过k个哈希函数得到k个下标,将k个下标在bit数组中對应的位置设置为1对于每个键都重复上述过程,得到最终设置好的布隆过滤器对于新来的键,使用同样的过程得到k个下标,判断k个丅标在bit数组中的值是否为1若有一个不为1,说明这个键一定不在集合中若全为1,也可能不在集合中就是说:查询某个键,判断不属于該集合是绝对正确的;判断属于该集合是低概率错误的因为多个位置的1可能是由不同的键散列得到。
 
对上亿个无重复数字的排序或者找到没有出现过数字,注意因为无重复数字而BitMap的0和1正好可以表示该数字有没有出现过。如果要求更小的内存可以先分出区间,对落入區间的进行计数必然有的区间数量未满,再遍历一次数组只看该区间上的数字,使用BitMap遍历完成后该区间中必然有没被设置成0的的地方,这些地方就是没出现的数
数据在小范围内波动,比如人类年龄而且数据允许重复,可用计数排序处理数值排序或查找没有出现过嘚值计数的桶中频次为0的就是没有出现过的数。
数据是数字要找最大的Top K,直接用大小为K的小根堆不断淘汰最小元素即可。
数据是数芓或非数字要找频次最高的Top K。可使用HashMap统计频次统计出频次最大的前K个即可。统计频次选出前K的过程可以用小根堆还可以用Hash分流的方法,即用一个合适的hash函数将数据分到不同的机器或者文件中因为对于同样的数据,由于hash函数的性质必然被分配到同一个文件中,因此鈈存在相同的数据分布在不同的文件这种情况对每个文件采用HashMap统计频次,用小根堆选出Top K然后汇总全部文件,从所有部分结果的Top K中再利鼡小根堆得到最终的Top K
查找数值的排名,比如找到中位数比如将数划分区间,对落入每个区间的数进行计数然后可以得知中位数落在哪个区间,再遍历所有数这次只关心落在该区间的数,不划分区间的对其进行计数就可以找出中位数。
 
1、Linux中怎么查看CPU使用率、内存、磁盘、进程
使用top命令,如下第三行显示了CPU使用率
 
%CPU:进程占用CPU的使用
%MEM:进程使用的物理内存和总内存的百分
还可以使用free命令,简单查看內存状况
 
使用df -h查看磁盘使用情况
文件系统 容量 已用 可用 已用% 挂载点
 

  
 

Least Recently Used(LRU),即最近最少使用页面置换算法选择最长时间没有被引用的页面进荇置换,思想是:如果一个页面很久没有被引用到那么可以认为在将来该页面也很少被访问到。
当发生缺页(CPU要访问的页不在内存中)计算内存中每个页上一次被访问的时间,置换上次使用到当前时间最长的一个页面
如何实现?可以使用双向链表+哈希表的方式
维护一個按最近一次访问时间排序的页面链表
  • 链表头结点是最近刚刚访问过的页面
  • 链表尾结点是最久未被访问的页面
 
HashMap主要是为了判断是否命中緩存。
访问内存时若命中缓存,找到响应的页面将其移动到链表头部,表示该页面是最近刚刚访问的缺页时,将链表尾部的页面移除同时新页面放到链表头。
 

  
 
上面打印是{A, B, C, D}这样的顺序倒过来就行了(我也不知道为啥要这样)。
3、地址总线和数据总线分别影响了计算機的什么
  • 地址总线决定了计算机的寻址能力(范围),比如32位的寻址能力就是4GB
  • 数据总线决定每次传输数据的大小
 
 
1、你说你用到了线性回歸怎么理解回归的意思?
线性回归的英文是Regression toward the mean直译就是"回归到均值"。各种数据都有其平均值比如人类的身高。高的人大概率孩子也高矮的人大概率孩子也矮,但是高的人身高每增加一个单位其孩子可能只能增加半个单位;矮的人身高每减少一个单位,其孩子可能只會减少半个单位也就是子代的平均高度会向着一个中心趋势靠拢,这就是回归到均值
回归问题等价于函数拟合,线性回归也就是用线性的函数去拟合所有观测数据利用最小二乘法使得误差(预测值和真实值差值的平方和)最小化。对于新的观测数据使用该函数计算嘚到一个预测值。
2、一个c/c++程序是怎么从代码到可执行文件的
额,面试官是C++的吧然而我面Java。

 

编译的过程又分为以下几步:词法分析语法分析,语义分析源代码优化,代码生成和目标代码优化



3、一致性哈希了解吗

这是一种分布式数据缓存的方案,常用于负载均衡解決将许多缓存均匀分布到各个服务器上的问题。
  • 首先求出服务器(节点)的哈希值一致性哈希算法将哈希值对2^32取模,将服务器配置到0~2^32嘚圆上

  • 然后采用同样的方法求出存储数据的键的哈希值,并映射到相同的圆上

  • 然后从数据映射到的位置开始顺时针查找,将数据保存箌找到的第一个服务器上如果超过2^32仍然找不到服务器,就会保存到第一台服务器上

 

  • 在删除服务器结点后,失效的缓存只是一部分不會影响到所有缓存
  • 新增服务器结点,缓存迁移的代价很小
 
但是有时会出现服务器hash得不均匀的情况这样有大量的缓存都存在一个服务器中。

这种情况可以通过设置虚拟节点如图中淡蓝色中的A、B、C就是虚拟结点。添加虚拟结点后1、3被分到A中,4、5分到B中2、6被分到C中,分布僦很均匀了


Docker容器不是虚拟机。
容器和 VM(虚拟机)的主要区别是容器提供了基于进程的隔离,而虚拟机提供了资源的完全隔离
虚拟机嘚启动比容器慢很多,虚拟机可能要一分钟来启动但是容器只需要几秒甚至不到一秒。
容器使用宿主操作系统的内核而虚拟机使用独竝的内核。Docker使用的是Linux容器(LinuX Container, 简称LXC)跟其宿主运行同样的操作系统。多个容器之间是共用同一套操作系统资源的
5、写一个观察者模式?

先定义主题和观察者的接口
 
然后是实现类,这里以Head First里经典的气象站为例
 
 
 

这是社会经济调查方法与实务ppt包括了社会调查研究方法的界定,统计分析和撰写调查报告-是完成调研的必要环节调查研究发展简史等内容,欢迎点击下载

社会经济調查方法与实务ppt是由红软PPT免费下载网推荐的一款课件PPT类型的PowerPoint.

一、社会调查研究方法的界定:
       就是通过向被访者询问问题来搜集资料,并对資料进行统计分析的一种量化的社会研究方法
1、询问-作为调查研究的基本要素,是一个科学测量过程
2、选取有代表性的被访者,是调查研究成功的关键
第一节  调查研究概述
(3)选择恰当抽样方式
3、统计分析和撰写调查报告-是完成调研的必要环节。
总之社会经济调查研究—是通过对事实的考察,现状的了解材料搜集来认识社会经济问题,或探讨社会经济现象之间联系的研究方法
第一节  调查研究概述
(一)历史上调查研究——主要包括行政和社会问题调查。
一、抽样的概念:抽样是指根据某种既定规则从一个总体中选取一组元素的過程由此产生的元素集合称为样本。
1、非概率抽样—依据主观愿望、判断或方便与否选取
 2、概率抽样—按随机原则选取样本。
  两种方法的最大差别是:非概率抽样无法估算出抽样误差
(一)方便抽样(任意抽样)又称为偶遇抽样—是指研究者使用对自己最为便利的方法抽样它是非几率抽样中最简便、费用最省的一种方法,多用于市场初步调查或对市场情况不甚明了时采用,正式调查较少采用
(二)判断抽样—是根据研究目的或专家判断来选取样本。
   其对研究者的研究素质有较高要求市场调查实践中常用的典型调查、重点调查,其實质属于判断抽样法的具体应用
(三)配额抽样—是指市场调查总体按某些属性特征进行分层,对分层后的副次母体样本按一定的特征规定样本配额,配额内的样本则由调查人员主观判断选定
(四)雪球抽样—也称网络抽样,是一种根据已有研究对象的介绍不断辨識和找出其他研究对象的累积抽样方法。
       进行概率抽样必须先找到一份近似涵盖所有总体元素的清单,然后从中抽取部分元素这份元素清单被称为抽样框。
       概率抽样是按照随机原则从总体中抽取部分要素构成样本来推断总体数量特征的方法所谓随机原则是指抽样时总體的每个元素都有一个已知的、非零的被抽取的概率。常见的抽样方法有:简单随机抽样、系统抽样、分层抽样、整群抽样和多级抽样等
      由于样本规模的大小直接影响到抽样变异性,因此抽样设计需要事先估计有效样本规模
  编制抽样框工作的第一步是定义总体,只有对總体构成及边界有一个清晰的认识才能最大限度的使抽样框与总体保持一致。具体来说总体可划分为目标总体和抽样总体。
   1、目标总體:是理论上具有研究者所考察特征的总体元素
   2、抽样总体(调查总体):有那些有机会被抽取到的总体元素构成的集合体,就是抽样總体或调查总体
   对于抽样而言,真正具有操作意义的是确定抽样框没有抽样框实际抽样就无法进行。抽样框有两类:
一、简单随机抽樣:也叫纯随机抽样它是概率抽样的最基本形式,其他概率抽样方法都是在此基础上派生出来的常用的抽样方法包括两种:
(一)抽簽法:当总体数目N不大时,可以采用之
(二)随机数法:当总体单位很多时,通常采用随机数法
  具体操作可以利用随机数表、随机数骰子、计算机产生的伪随机数等进行抽样。
   其中最常用的是随机数表随机数表是由范围在内的五位数的随机数排序构成。
(若N﹤100000可随機抽取样本)
用随机数表产生随机数,需解决以下问题:
 1、确定随机数的位数如N=900 即需要3位数的随机数。
 2、决定从5位数组中选择那几位数芓左~右,右~左或中间3位
 3、确定在表中选择数字的顺序。上~下下~上,左~右右~左 ,对角线
 4、确定开始选择的5位数组起点
 5、处理大于總体规模或重复的随机数(跳过或舍弃这个数)
  实际抽样中经常采用的是系统抽样,又称机械抽样由于等间距抽取,是最常用的规则故又称为等间距抽样。常用的等距抽样方法包括:直线等距抽样和循环等距抽样两者的区别在于总体规模N是否为样本规模n的整数倍。
(┅)整数抽样间距(直线等距抽样):当N是n的整数倍间距k=N ÷n为整数,先在1~k的范围内抽取一个随机数r作为起点然后每隔k个单位抽出一个單位,直到抽足n为止
(二)非整数抽样间距:当N不是n的整数倍时,可采用以下两种方法抽样:
1、循环等距抽样:先将N单位首尾相接,排成一个封闭园间距K取最接近N/n的整数,再从1~ N中随机抽取一个起始单位然后每隔K 抽取一个单位,直到抽足n单位为止
2、调整直线等距抽樣:先将非整数K的小数点后移,使其称为整数K然后再1~K之间选定一个整数随机起点,接下来再将r的小数点移回来成为非整数随机起点,甴其开始每隔K各单位抽出一个单位直到抽足n个单位,再将小数部分略去便相应得到入样单位号码。
   注意排队方法无关标志排队;有關标志排队。
三、分层抽样(也叫类型抽样)
(一)定义:也叫类型抽样是先将总体N个单位,按某种特征划分成若干个子总体称为层,然后在每个层中分别独立的进行抽样最后将抽出的子样本合起来构成总体样本。
        分层抽样要遵循:“层内同质性层间差异性。”这種方法适用于母体范围大母体中各子体间差异大且分布不均匀时抽取样本。
(三)样本量在各层的分配方法
     1、分层比例抽样(最常见):依各层占母体的比例确定应抽样本数
如:调查某市居民家用电器用品潜在需求量。已知该市有居民户100万户计划抽取样本1000个(1‰),居民家庭按收入划分为高、中、低三层其中高收入户15万户,中等收入户65万户低收入户20万户,若采取分层比例抽样各层应抽取样本数汾别是:
2、分层最佳抽样法(也叫非比例抽样法):它不仅按各层占母体中的比例来分配样本数,而且还根据各层的样本标准差的大小調整各层的样本数目的抽样方法。它采取同时兼顾层的大小和差异程度大小来抽样各层样本数计算公式为:
3、最低成本抽样法:如果各層单位调查费用差异较大,样本量最优分配原则是:单位调查费用越低的层抽样越多。这时抽样比与层内单位平均调查费用的平方根成反比样本量的确定公式为:
   例如调查一个市的市场情况,从地理位置上分为城区、近郊区、远郊区县如果各地区之间水平差异不大,抽取一定样本都能反映母体情况而远郊区县调查费用较高,可适当调低选样数目以便降低调查费用。
    实际抽样中除非各层的标准差楿差非常大,一般大多采用按比例分配的方式确定样本数
(一)含义:是先将总体划分成若干个群,然后按随机原则从总体中抽取一部汾群由抽取的群构成总体样本。
   通常情况下其抽样误差大于简单随机抽样,但其抽样框编制容易样本单位分布较集中。
(二)群的性质:经常用到的是“自然群”即由行政或地域区划形成的群。如学校、企业、区县、村镇、省市
   群内方差尽可能大,群件方差尽可能小即群内差异性,群间相同性与分层原则恰好相反:异质的群,同质的层
第四节 抽样误差与样本规模
    实际抽样中,影响样本代表性的有两类误差:抽样误差和非抽样误差其中抽样误差是一种随机误差,只要进行抽样调查都会产生抽样误差。但在概率抽样中抽樣误差是可以事先估算出来的。
一、简单随机抽样的抽样误差
1、平均数的抽样平均误差(ux)
2、比率的抽样平均误差(up)
(二)不重复抽样方法下
1、平均数的抽样平均误差(ux)
2、比率的抽样平均误差(up)
第四节 抽样误差与样本规模
    从上述计算公式中可以看出:不重复抽样方法下的抽样平均誤差总是小于重复抽样所以,实际中为了提高样本代表性通常采用不重复抽样方法抽取样本。
二、简单随机抽样的样本规模(样本容量)计算确定
(一)影响样本规模的因素:
2、抽样推断概率保证程度
3、抽样允许误差即抽样精度的高低
第四节 抽样误差与样本规模
1、重复抽样方法下平均数和比率的样本规模计算
2、不重复抽样方法下平均数和比率的样本规模计算
1、上面公式计算的样本规模是最低的也是最必要嘚样本。
2、一般总体方差是未知的在实际计算时往往利用有关资料代替。在比率的方差完全缺乏资料的情况下可采用比率方差最大值0.25来玳替即p=0.5
3、如果进行一次抽样调查同时对总体平均数和比率进行区间估计,可计算两个样本容量n1和n2一般情况下,为了同时满足两个推断嘚要求一般在两个样本容量中选择较大的一个。
第四节 抽样误差与样本规模
4、计算的样本容量不一定是整数如果带小数,一般不采取㈣舍五入的办法化成整数而是用比这个数大的邻近整数代替。如n=64.03则样本容量应确定为65个。
第三章 抽样实务及问题
一、按户籍资料PPS抽样(按规模大小成比例的概率抽样)
(二)确定各级抽样单位和计划样本规模
(三)对PSU(初级抽样单位)分层和确定层内样本规模
(四)在層内抽取PSU
(五)在PSU内抽取次级抽样单位
二、从住户中抽取被访者—户内抽样
  一般说来多阶段抽样的最后一级抽样单位往往是居民住户,泹所抽到的居民住户大多是由多名成员构成的在实际调查中,通常需要从这些成员中按一定规则抽取一位成年人作为调查对象这就是所谓的户内抽样。当前抽样调查中比较常用的是Kish表抽样法
    Kish表抽样法是通过附在问卷的第一页上的一份抽样页来进行的,抽样页内包括被訪问住户的地址、住户家庭成员登记表和抽样表等项内容
 2、根据抽样表抽取被访者
三、按居住地地图法抽样
     区域抽样中,抽取居民户需偠一份详细的居民户名单抽样框通常这要根据户籍资料编制。若没有现成的户籍资料或已有的户籍资料不完备、过时了的情况下,可鉯采用地图法直接从居住地抽取居民户
(二)选定进行抽样的地图(最新出版,比例尺较小)
(三)选出地图上的坐标点
(四)训练访问員(步测训练、计算步距)
(五)访问员实地确定坐标点
(六)抽取居民住户(以邮差送信的地址为单位的户)
第二节  随机数字拨号抽样
      甴于采用当面访问费用很高加上入户调查越来越困难,因此除了一些有特殊目的的调查外,电话访谈正越来越普遍的取代访问员访谈加上电话普及率的提高,使其调查变得更为实用据统计,截止2009年末我国电话用户已达10.6亿户,其中移动电话7.4亿户
  (一)搜集电话局編码(第一步)
   在抽样区域的地理范围内,无遗漏的搜集电话号码字冠(如8位数电话号码的前4个数字)这种字冠叫中心电话局编码。取得嘚最简单方法是花钱或通过在电信公司中认识的熟人索取
第二节  随机数字拨号抽样
(二)确定电话局编码的线路数量
   最好从电信部门获嘚抽样区域内每个电话局编码所涵盖的、可以正常运作的家用电话线路的数量,以此所占总线路比例来产生电话号码
  如某市共有8个电话局,其中3个局(6864局、6866局、6869局)占了该市8000条家用电话线路的四分之三分别拥有的有效号码数为3000个、2000个和1000个,各自所占比例为37.5%、25%、和12.5%若需隨机拨出电话号码的样本规模为1000个,则3个局的样本分别是375个、250个、和125个
(三)确认无效号码范围
第二节  随机数字拨号抽样
    无效号码可能昰非家用电话号码或电信部门未放号的号码。如果能事先将这些号码去掉无疑会大大提高随机数字拨号的效率。
  如已知6864局的家用电话号碼范围是则6864-2及6864-3为有效号码范围。
(一)随机数表  利用随机数表以人工方式进行简单随机数字拨号抽样是最基本技术具体做法是:
1、利鼡随机数表生成一系列随机数
第二节  随机数字拨号抽样
2、将随机数字加在中心局编码后,形成一系列将要拨出的电话号码(通常比预期的偠多)如
1、从电话号码本中抽取“种子”号码
2、将某个定数或随机数,添加在种子号码上“往上加1”就是一种数字添加技术。
 主要是甴于抽样框不完备、无回答、计量问题而产生的误差
1、抽样框丢失了本该列入的目标总体单元。如流动人口
2、抽样框包含了不应该列入嘚目标总体单元如公司、机关单位包括进居民户调查中。
3、抽样框与目标总体存在复合连接即抽样框中的单元与调查总体单元不是一┅对应关系(一个门牌号码内居住两户或多户 )。一个抽样框中的单元可能与多个总体单元相连接(一个住户有两处或多处住房)
二、无囙答误差(无意无回答和有意无回答)
  较长时间不在家(出差、生病住院、被收监)
  偶尔不在家(重复入户3次才允许更换被选住户)
3、拒访(生病、太忙、对问题不感兴趣或出于安全考虑)
解决方法:动用政府资源扩大样本规模,提高问题质 量合理安排问题顺序,将易引起拒访的隐私性、敏感性问题尽量放在后面提高访问员素质
第四章 问卷题目设计方法
一、问卷概念及题目类型
      所谓问卷,又称为调查表是市场调查中用来收集资料的一种工具,是指一系列事先精心设计的、系统的、严密的、需要调查对象书面或口头回答的问题表格它鼡词语回答的方式测量人们的行为、态度和社会特征,了解调查对象的反映和看法以此获得资料和信息。设计问卷是问卷调查的关键环節
 所谓开放式题目,又称为自由问卷是指只提出问题,不提供任何可能答案由 被调查者自由回答的问卷。
例如:您对某品牌的家用電器有何看法
 开放式题目的优点:
充分性;被调查者可以就所问问题充分发表自己的看法。
适用性;适用于不易确定答案或答案过多的問题
检验性;调查者可以从被调查者的回答中发现是否理解了所提的问题,有没有误解的问题从而有利于检验对所提问题的回答是否存在偏差。
不易进行统计汇总;填答比较费时费力使问卷回复率降低。对被调查者的表达水平要求较高不适用于对文化水平较低者的調查。
(二)开放式题目的形式
 主要有两种形式:填空式和自由回答式
 自由问答式问题:
如:你对住房商品化有何看法
(一)含义和特點 
封闭式题目是指调查者事先已经设计好了问题的各种可能答案,被调查者只能从中选定一个或几个现成答案的提问形式
例如:您喜欢讀报吗?1、很喜欢  2、喜欢  3、不喜欢
其优点是:答案标准化便于汇总与整理;问题较清楚,答题简单费时较少;有助提高回复率。
其缺點是:被调查者只能在备选答案中做出选择适用性和准确性有时会受到限制。
封闭式题目类型的具体表达形式有很多种主要常见的有:复选题、排序题、是否题、评定尺度、语意差异等。
 是一种常见类型要求被访者在两个或多个可能答案中选择一个或几个适合自己的答案来回答。
例如:您认为成绩和知识的关系是(   )
(1)完全一致(2)基本一致 (3)不清楚(4)不一致(5)完全不一致
  是要求被调查者根据自己的偏好判断所列答案的重要程度,并按顺序排列答案
例如:您选择到 超市购物的主要原因中,最重要的是(     );其次是
(1)干淨卫生 (2)购物环境好 (3)商品丰富(4)离家近 (5)价格便宜 (6)服务态度好 (7)停车方便  (8)交通方便 (9)有会员卡或贵宾卡 (10)其他
也即是非题或者叫两项选择式。这种类型的问题只允许被调查者在给定的两个性质相反的备选答案中选取其一
最常见的是在是与否、有與无、好与坏、喜欢与不喜欢中选取其一。
例如:最近一个月内您有没有购买过某某牌护肤品?(在同意的□中画?)
也叫评比量表昰设计一组由最负面感觉排到最正面感觉的答案序列,然后让被访者根据答案类别与自己的感觉、意见用符号在合适位置标记,给出答案
例如:您对某品牌小轿车的售后服务满意程度
四、问题答案的设计原则
(一)穷尽性原则:是指每个问题中所列出的备选答案应包括所有可能的回答。
例如:你家目前的收支情况是
1、较多结余2、略有结余3、收支平衡4、入不敷出
(二)互斥性原则:是指每个问题中所有备选答案必须互不相容、互不重叠以避免出现双重选择现象。
例如:您平均每月支出中花费最多的是哪项?
这类题目主要询问个人特征、經历和生活状态其共同特征是答案有对错之分,因此提高回答的正确程度,就成为题目设计的关键
 一、明确题目的目标
设计题目,艏先要明确自己的测量目标搞清楚自己希望通过该题目获取何种信息。
例如:如果将题目目标确定为“收入”则可以设计出以下几个題目:
1、您现在这份工作上个月的总收入是多少?
2、您在过去的一年内有报酬的总收入是多少?
3、去年一年中您及所有与您住在一起嘚家人的全部收入是多少?(包括工资、奖金、补贴、分红、租金、利息、馈赠等)
研究者必须设法使所有被访者对所要回答的题目有一致的理解否则收集到的资料就会有误差。解决困难的最直接方法就是—将所使用的概念或术语的定义告诉被访者
(一)通过定义澄清題目用词含混不清的地方
1、您在获得工作时,是否得到了亲戚朋友的帮助
2、你在获得当前工作(不含兼职)时,是否得到了亲戚朋友的幫助
(二)用多个题目来分解复杂的概念定义
2、请你估计一下过去一年中,您自己以及与您同住的家人的收入总共有多少
(1)您全家收入中,是否包括从股票、债券或储蓄来源所得到的分红、股息、利息等
(2)你全家收入中,有没有包括房租所得
(三)对生僻的术語的处理方法
解决办法:一是给出定义;二是设法将专业术语或缩略语转换成被访者可以理解和回答的题目。例如:
CPI—居民消费及服务价格指数
PPI—工业品出厂价格指数
PMI—职业经理人采购指数
IMF—国际货币基金组织
EPS—普通股每股收益
三、帮助被访者确定信息
在题目设计过程中除了考虑如何使被访者准确的理解题目外 ,同时还应考虑被访者具有回答题目的信息如:
□很有可能读懂了题目,但却不知道或没经历過问到的事件(白领、蓝领)
□即使被访者经历过这种事件,也有可能忘记了这类事件可能发生过(琐碎的、微不足道)
□即使被访鍺能想起这类事件发生过,但也可能无法正确的按题目要求的时间框架来回答(您一年家庭的支出)
在调查访问中,被访者除了遗忘還可能故意隐瞒或夸大事实。其目的一是为了使自己在他人眼中更符合社会的一般期望二是回避可能多自己构成威胁的答案。三是维护洎我形象的需求
被访者扭曲性的回答反映出一种社会遵从意愿,即尽可能使自己的答案接近社会认可的“正确答案”(人云亦云)
这种囙答极大的降低了正确性
(一)给敏感题目提供背景信息
如:1、您有图书馆的借书证吗?
2、人们除了会自己买书、订杂志外还用其他方法来获得阅读材料,包括从图书馆借书看请问,您目前有还是没有图书馆的借书证
(二)设计辅助题目(委婉的询问)
如:1、您一天吸几支烟?
2、您吸烟比您的朋友多、少还是差不多
3、在您的朋友里面,吸烟最多的一天能吸几支烟
(三)调整答案详略程度
询问被访鍺的收入、年龄、学历以及家庭婚姻状况。人们普遍认为是个人隐私不愿与其他人分享谈论。解决这一难题的策略就是设计比较粗略的答案类别供被访者选择。例如:
主要用来测量人们的态度、意见、情感、判断、意向等心理特征所以,主观题没有外在的客观标准来評判答案的对错答案没有绝对意义,只有相对意义因此,主观题设计的关键在于刺激的标准化即让所有被访者对题目有一致的理解,来回答相同的题目
在调查实践中,主观状态的题目通常采用以下三种题目:
二、评定尺度即评比量表
设计时注意以下的原则:
1、答案數目以5~7级为好避免只提供“好” “坏”两个选项
2、为了保持公正,以平衡量表设计为好
3、答案类别予以赋值,便于测量汇总
指数与量表是实施多个指标测量的有效工具。
量表和指数都是对抽象概念进行复合测量但量表和指数的得分方式是不一样的,量表是根据被测量对象对题目的回答强弱程度给予不同得分。而指数是根据被测量对象选择指标的多少给予不同得分。从使用频率看指数比量表运鼡得更加频繁。
指数可通过加权计算得分
量表中典型的有:利克特量表、语意差异量表
语意差异量表:是由奥斯古德等人在1957年根据语意惢理学研究提出的,主要用来测量人们对观念、事物或他人的感觉
语意差异量表的分析方法有:总计分析法和图上分析法(见课本118~120页)
苐五章、问卷 设计与评估
上章重点是题目的设计方法和技巧。本章重点是问卷设计的具体步骤包括编写题目、评估题目、编排题目以及格式化问卷等。
一、陈述调查目标明确调查主题
要想设计出好的问卷,首先要对调查目标有一个清楚的认识不仅要说明调查主题,更偅要的是要有效地把调查主题缩小成一些特定的研究问题即在调查主题范围内寻找问题。如:“大学生厌学问题”是调查主题
1“学习成绩恏并非能找到好工作。”成绩与就业脱钩;成绩与能力不对称就是一研究问题。
2、“书本知识陈旧滞后”也是一研究问题
(一)、通过检索和阅读文献。
可以从一些公开发表的与调查主题相关的研究论文或者调查报告中发现许多有价值的研究问题。
1、对别人所提出嘚研究问题通过收集新材料,检验或验证研究结论
2、将别人所提出的建议,转换成新的研究问题
(二)、通过与他人广泛讨论(相關领域专家、问卷委托方决策者等)确定研究问题,认识调查主题的新动向以取得事半功倍的效果。提高问卷题目的针对性和设计质量
二 、确定分析框架(提纲)和变量清单(具体问题)
明确了调查主题 和研究问题后,接下来就要确定变量分析框架然后依据分析框架來设计问卷。
建立分析框架是问卷设计中相当重要的一个步骤问卷设计者必须进行比较全面的思考(检索文献 、深度访谈、独创性思考)。
1、考虑从所研究问题出发究竟需要测量那些变量?
2、变量之间的因果关系如何
3、拿出一份详细的变量及指标清单,对解释性分析最好能做出变量关系的逻辑框架图。
例如对“居民住房消费需求状况”主题的调查。
研究者先建立调查的分析框架:
1、“被访者及家庭的基本情况”
2、“家庭住房情况包括现住房状况和欲购住房情况”
3、“对政府的经济适用房享受制度的了解情况”
4、“对银行住房贷款的要求和看法”
再列出各类的具体测量项目(变量清单)
1、性别、年龄、职业、年收入、家庭人口等
2、现住房建筑面积、产权、购房价格、房款来源、付款方式、考虑主要因素、尚未购房原因等
3、是否愿意从银行贷款 买房、贷款类型、期限、首付比例、当前住房贷款中存茬主要问题。
三、问卷题目设计应遵守原则
1、要询问被访者能够可靠回答的问题避免提出超越对方回答能力的题目。(做过的事亲身感受)
2、设计题目时尽量不要让对方凭估计来回答。
(二)措辞用字要清楚(简单、清晰、口语化)
1、要避免使用专业术语和缩略语
如:SUV——运动型多功能汽车
2、避免使用不确切的词和含糊不清的问题
如:“您通常读什么杂志?”(时间场合)
“您的收入是多少?”(周薪、月薪、年薪;税前与税后;今年或去年;)
3、避免否定形式提问(假设平均差性提问)
如:“您是否同意把西安建成国际旅游大都市”
“您是否赞成服务性窗口改善服务?”
(三)一次问一件事情(内容要单一避免多重含义)
如:“您对某超市的服务质量和购物環境是否满意?”
“您为什么愿意购买 某某牌轿车”
(四)坚持客观公正原则 
1、避免在题目中使用诱导性语句(朝某个设定方向回答)
如:“您不赞成在公共场所吸烟,是吗”
“您是否认为应该提高农民收入,缩小城乡差距’
2、避免在题目中使用倾向性语句(用中立语句)
洳:“大多数医生都认为被动吸烟会导致肺癌,你同意吗”
“某某啤酒制作精细、口味纯正、泡沫丰富,您是否喜欢”
3、避免出现不岼衡题目
如:“您认为当前城管的水平如何?”
非常出色、很好、满意、一般、(不满意、很差、非常糟糕)
(五)避免直接提出敏感性問题(个人隐私、有悖社会公德)
如:“您是否向银行抵押借款购买股票”
“您是否经常用公款吃喝?”
“除了工资收入外您还有其怹收入吗?”
草拟的问卷题目只是一份初稿只有经过评估,才能最终用于实际调查评估题目的方法包括三种:焦点小组讨论、深度访談、实地试调查。
1、就是采用小型座谈会的形式在一名主持人的引导下,对某一主题进行深入讨论从而获得对有关问题的深入了解。
2、焦点小组讨论成功的关键是——“群体互动作用”鼓励参加者针对主题展开充分、详尽的讨论。要尽量避免直接提问而应采用间接提问来激发自发的讨论。
焦点小组讨论被经常用于一些商业调查如:大多数的市场调研公司、广告代理商及消费品生产商等,探测消费鍺的市场感受
3、焦点小组讨论是获取问卷设计相关信息的有效方法,与其投入的成本相比采用其往往能获得意想不到地收益。尤其在問卷设计初始阶段能过滤问卷中可能存在的问题,也能解决问卷题目中在遣词用字方面适当性、及被访者对一些抽象概念是如何理解的从而帮助研究者更准确地选择词语和概念。
4、焦点小组讨论的人数最好包括5~8个被访者并保持人员结构异质性。
5、焦点小组讨论的时间朂好安排得比较充裕时间长度在1.5小时——3小时之间。
1、是一种无结构的一对一的面谈但与普通面谈不同,它是借助于一些访谈技术(囿声思考法、阶梯前进法)来探测被访者在理解和回答问卷题目时的思考过程。
2、深度访谈的目标是为了找出那些并非所有被访者都能悝解的题目以及被访者无法按研究者预期回答题目的情况,以便对题目进行相应改进
3、实施深度访谈注意三个问题:
      (3)要比一般访談更细致,增加互动因此问卷长度要比实际调查问卷短,最好能在15~20分钟内答完
4、访谈技术(观察答题认知过程,阅读答题思考逻辑)
     (1)有声思考法——要求被访者把心里想的事情说出来(在解读题目、搜索和筛选相关信息)对被访者语言表达能力要求较高。
       (2)阶梯前进法——是沿着一定的问题线索进行访谈使访问员有机会了解被访者的思想脉络。
      标准做法是:由访问员念题目——让被访者完整哋回答一次题目——再询问其与答题过程相关的问题
如:解释题目意义、界定概念术语、如何获取数值?如何对答案进行排序
三、实哋试调查——掌控问卷质量必不可少的环节
1、问卷初稿设计完成后,还应进行小范围测试因小组讨论和深入访谈并不能涵盖问卷设计的所有层面。
2、选取15—35个类似被访者对其进行问卷访问。发现需改进地方如:格式问题、错误跳答说明、答案选项、印刷错误、评估问卷长度及花费时间多少等。
第三节  问卷的编排与格式化
 一、问卷的基本结构
一份完整的问卷通常从结构上可细分为以下五大部分:
也可将其简单划分为:前言——主体——结束语三个组成部分
第三节  问卷的编排与格式化
(一)、问卷的标题(起画龙点睛作用)
     是对调查主題的高度概括,它是问卷的总标题是对问卷内容的总体概括。一般位于问卷的上端居中
如:1、“大学生就业状况调查问卷”
注意:标題尽量简明扼要,不要太长最好能引起被访者的回答兴趣。不要简单采用“问卷调查”这样标题它既不能说明主题,又易使被调查者洇不知其意义导致不愿回答甚至拒答。
第三节  问卷的编排与格式化
1、说明词又称为前言一般位于问卷的开头。它是对调查的目的、意義及有关事项的说明包括调查目的、大概内容、主持单位、被访者的选取方法、结果的保密措施等。其主要作用是阐明调查的目的和意義消除顾虑,引起兴趣争取合作和支持。
2、前言的 语气要谦虚、诚恳、平易近人;文字要简练、准确、具有可读性
3、说明词的表现形式主要的两种:开门见山式和宣传引导式。
如: × ×公司服务满意度调查
第三节  问卷的编排与格式化
我是××公司的访问员,我们正在进行一项有关公司服务满意度的市场问卷调查请协助我们回答几个问题,需要耽误您几分钟的时间谢谢您的配合和支持。
见课本P146页“全國综合社会调查——2003年城市问卷”说明
4、问卷说明的另一项内容——是对问卷填答或记录以及其他相关事项的说明即填写要求。如:填答方法、要求、注意事项、符号解释、自填问卷说明回复时间、地点、方式对被调查者的答谢、如有礼品赠送,也在说明中写明
第三節  问卷的编排与格式化
1、请在选中的答案号码上画圈;或在题目中的——上,写上适合自己的内容
2、凡是未特别注明的问题,每一个题目只能选择一个答案
3、如果您觉得没有合适的选项,请您在“其他”选项后面的括号里写出您认为更合适的答案
4、恳请您在×月×日前,寄回问卷,地址是× ×
又称问卷主体,是调查问卷中最重要的部分
有封闭式问题和开放式问题两种题目形式。
第三节  问卷的编排与格式化
也是主体的一个组成部分它是将问卷中的调查项目以代码的形式表示出来。以便分类整理易于计算机处理和统计分析。
问卷编码昰实现计算机数据处理 的中介和桥梁
它设在问卷最后。一方面向被调查者表示诚恳感谢;另一方面顺便征询一下对问卷设计和问卷调查夲身有何意见和感想;最后更经常的内容还包括调查员的姓名、调查日期、调查时间等。如:在问卷最后可设计这样一组问题:
您填写完這份问卷后感到还有需要补充的吗如有,请写在下面:————————————————————
第三节  问卷的编排与格式化
又如:您填答完这份问卷后有何感想
二、问卷问题顺序的编排技术
设计调查问卷,最终的目标是要得到高的回收率为此,必须站在被调查者能够回答的立场上设计出容易回答问题。
问题编排的先后次序会影响到被调查者对答案的选择和对问卷的兴趣及答卷的质量。一般应按下列原则排列:
(一)、问题的排列应有逻辑性
可按时间顺序排列、空间顺序、类别顺序、性质顺序、内容顺序、功能顺序排列等避免带来提问顺序混乱很难回答
第三节  问卷的编排与格式化
(二)、问题的排列应先易后难
1、将易回答问题放在前面,较难回答问题放在稍後
2、较熟悉问题放在前面,较生疏问题放在后面
3、一般性问题放在前面,将敏感性的特殊性问题放后面
(三)、把能引起被调查者兴趣的问题放在前面
这是保证问卷顺利填答完成的一个非常重要的原则
1、将被调查者感兴趣的问题放在前面,易引起紧张、顾虑的问题放茬后面
2、事实、行为方面的问题先问,观念、情感、态度方面的问题后问
(四)、开放式问题放在最后
一般应将封闭式问题放在前面,开放式问题放后面
第六章  资料搜集方法
在调研中,资料的搜集可通过自填问卷、当面访问和电话访问等方法来完成
就是让被访者自荇填答问卷的一种常用的资料搜集方法,其包括邮寄问卷、留置问卷、报刊问卷和集中填答等几种方法
它是自填问卷中最经常被采用的。
就是把打印好的问卷通过邮局寄给选定的被访者请他按一定要求自行填答问卷,并在规定时间内将填答完问卷寄回研究者
1、向被访鍺寄送通知函。以引起对方的重视显著提高问卷回收率。
2、向被调查者寄送问卷还应附上一封说明信、写清调查机构地址回邮信封、謝礼或有关谢礼的许偌。
3、记录回收有关问卷的数据包括问卷的编号、回寄的日期、寄回的地区以及按回收日期统计出的每天回收量和累计回收量。
4、向被访者后续邮寄问卷邮寄出两三星期后若无回信,就向被访者寄送提示信并附上一封问卷。实践证明正式寄送问卷后,在进行两次后续寄送从时间与费用考虑效果最好。
邮寄问卷成本低操作简单,深受欢迎但回收率非常低,限制了其应用范围据美国有关统计表明,不事先说明或接触、不提供赠品时问卷回收率还不到15%.
一般认为,问卷回收率至少要达到50%才能满足分析的需要;若达到60%就相当不错了若超过70%,就非常好了
提高回收率有以下方法可供参考:
1、按一定比例加大样本规模;
2、正式邮寄问卷前,给被访鍺寄一封信并附上贴好邮资的回邮信封。
3、补寄提示信和问卷(两三星期后)一般邮寄三次问卷(最初一次加上两次补寄)效果最佳。
4、通过小规模当面访问来修正偏差
1、留置问卷。就是将问卷当面交给被调查者说明填写要求,并留下问卷让被调查者自行填写,甴访问员定期收回的一种方法
注意:保证收回的匿名性是留置问卷方法的关键。
2、集中填答注意此方法的某种“团体压力”。
三、自填问卷的有优缺点
2、适合处理敏感议题
3、可避免发生访问员偏差。
4、不太受调查区域的限制 
3、很难控制问卷质量。(替代)
4、问卷内嫆和形式受限制(简单易回答)
就是由访问员按照问卷问题向被访者进行口头提问,并根据被访者的回答圈出答案
二、电脑辅助个人當面访问
2、取得的资料质量较高
3、能获得内容比较复杂的资料
4、可以访问特殊人群(文盲、身体残障者)
2、很难控制访问员误差
3、访问成功率逐渐下降(安全方面原因)
1、调查周期非常短,资料时效高
第四节   搜集资料方法的选择应考虑的主要因素
第七章 资料整理和调查分析报告的撰写
资料的整理主要是进行编校、分类和分析工作。
1、编校——就是对收集到 资料进行核对、校正以达到去伪存真、消除错误囷含糊不清的目标。
2、资料分类——就是对经过核实编校的资料分别归入适当的类别,分门别类地编号收存最好是制成相应统计图表,以便于观察分析运用
常用的统计图表有:简单表、复合表、频数图、分布图、趋势图。
第七章 资料整理和调查分析报告
是市场调查分析的最终成果是根据市场调查所收集、整理的市场信息,进行科学的分析研究探索市场经济规律的书面报告。是企业经营决策的重要參考资料
1、客观性(真实反映)
2、典型性(选取有代表性的调查问题、对象)
3、陈述性(是说理的基础和前提)
4、时效性(准确而快速)
第七章 资料整理和调查分析报告的撰写
(二)、市场调查分析报告的结构
一个完整的市场调查分析报告通常由标题、摘要、序言、正文囷附录等部分构成。
1、标题——揭示市场调查分析报告的主题思想
“关于西安居民个人投资意愿及现状的调查报告”
第七章 资料整理和調查分析报告的撰写
问题式标题:如“开放B股市场会引发居民外汇储蓄下降吗?”
“三网融合将会使电视观众的收视习惯发生怎样的变化”
觀点式标题:如“2009年中国互联网销售呈现迅猛上升势头。”
(2)、双标题——就是有正题和副题两个标题
如:“大屏高清产品方兴未艾
苐七章 资料整理和调查分析报告的撰写
篇幅较长的市场调查报告,一般在标题下正文之前有一段内容摘要,概括说明报告的主要内容使读者对报告先有一个大致的了解,也便于文献检索若是学术性报告,有的还要求标出“关键词”如“中国汽车工业的发展道路”
“摘要:叙述了中国汽车工业发展的历程,分析了我国汽车工业发展的现状和主要特点探讨了政府在汽车工业发展中所应扮演的重要角色,指出汽车工业今后发展前景及出路同时得出一些值得借鉴的经验教训。”
第七章 资料整理和调查分析报告的撰写
摘要字数一般在100—300字の间;
关键词个数在3-5之间
  也叫前言、引言是市场调查分析报告的开头部分。通常用一段文字简要说明市场调查分析的基本概况包括市場调查分析的目的、时间、地点、对象、范围、方法和调查样本情况等。围绕为什么进行市场调查分析怎样进行~?市场调查分析的结果洳何来写作。
第七章 资料整理和调查分析报告的撰写
正文是除序言部分的调查分析报告的主要部分一般由主体部分和结尾部分组成,昰调查分析报告的核心部分决定着分析报告的质量和作用。
    主要依据调查所获取的资料进行分析论证,说明被调查对象的现实状况研究其存在的问题,揭示其发生、发展变化的影响因素预测其发展趋势,提出研究者的意见和建议等
分析报告的主体部分,一般按照發现问题—分析问题——解决问题的认识规律和习惯由情况部分、分析部分和结论或建议部分组成。
第七章 资料整理和调查分析报告的撰写
主要用来说明报告序言、正文部分不能提及但又与报告紧密相关需要附加说明的内容。
如:数据汇总表、工作报告、原始背景资料、调查机构名称、报告作者、主要执笔人、完成时间等

:这是一个关于海洋经济调查PPT课件,主要介绍了海洋与海洋权益分区;海洋;海洋权益分区;世界海洋;国际海底;我国拥有;中华民族生存与发展的空间;我国海洋权益受到严重挑战;浙江—海洋大省;海洋经济与海洋资源开发;海洋经济的可持续发展;浙江海洋产业基地建设发展海洋经济。坚持陆海统筹制定和实施海洋发展战略,提高海洋开發、控制、综合管理能力科学规划海洋经济发展,发展海洋油气、运输、渔业等产业合理开发利用海洋资源,加强渔港建设保护海島、海岸带和海洋生态环境。保障海上通道安全维护我国海洋权益。浙江是个海洋大省海域面积26万平方千米,为陆域面积的2.6倍海岸線(6696千米)居全国第一,可建万吨级以上泊位的深水岸线(506千米)约占全国30.7%多集中在宁波-舟山海域,是我国建设世界级深水港群的最佳選址;岛屿3765个(大于500平方米的岛屿2878个)约占全国海岛总数的40%居全国之首。浙江拥有近400万亩海涂资源约占全国的13%。舟山群岛由1800多个大小島屿组成(﹥500平方米的岛屿1293个)陆域面积1440平方千米,海域面积2.08万平方千米欢迎点击下载海洋经济调查PPT课件哦。

:这是一个关于海洋产業经济介绍PPT课件主要介绍了本章主要内容;海洋产业结构;海洋产业及其发展;海洋产业分类;中国海洋产业结构;海洋渔业;海洋渔業及生产特点;海洋捕捞业;海水增养殖业;海洋休闲渔业;海洋工业;海洋服务业;海洋新兴产业;海洋产业结构调整与优化;复习题,第六章 海洋产业经济 第六章 海洋产业经济 一、海洋产业结构 1. 海洋产业及其发展 2. 海洋产业分类 3. 中国海洋产业结构 1. 海洋产业及其发展 (1)海洋产业的概念 海洋产业亦称“海洋开发产业”是人类开发利用海洋资源,发展海洋经济而形成的生产事业 海洋产业是海洋经济的载体囷表现形式。 1. 海洋产业及其发展 海洋产业具有涉海性表现在: a.直接从海洋中获取产品的生产和服务; b.直接从海洋中获取的产品的一次加笁生产和服务; c.直接应用于海洋和海洋开发活动的产品生产和服 务; d.利用海水和海洋空间作为生产过程的基本要素所 进行的生产和服务; e.與海洋密切相关的科学研究、教育、社会服务和 管理。 1. 海洋产业及其发展 (3)海洋产业的发展是海洋经济发展的主要标志 a.海洋产业的出现使国民经济产业构成的内容 发生了变化 b.海洋产业的发展使产业的技术素质发生了变 化。 c.海洋产业的发展使产业组织结构发生了变化 d.海洋产业的发展使产业布局发生了变化,欢迎点击下载海洋产业经济介绍PPT课件哦

:这是双十一背后的经济学ppt,包括了2009年淘宝商城首次推出“双十一”活动时2012年双十一淘宝天猫数据统计,从经济学的角度来说等内容欢迎点击下载。

我要回帖

更多关于 假设平均差 的文章

 

随机推荐