关于面试:对线面试官之MySQL索引篇

面试官:我看你简历上写了MySQL,对MySQL InnoDB引擎的索引理解吗? 候选者:嗯啊,应用索引能够放慢查问速度,其实上就是将无序的数据变成有序(有序就能放慢检索速度) 候选者:在InnoDB引擎中,索引的底层数据结构是B+树 面试官:那为什么不应用红黑树或者B树呢? 候选者:MySQL的数据是存储在硬盘的,在查问时个别是不能「一次性」把全副数据加载到内存中 候选者:红黑树是「二叉查找树」的变种,一个Node节点只能存储一个Key和一个Value 候选者:B和B+树跟红黑树不一样,它们算是「多路搜寻树」,相较于「二叉搜寻树」而言,一个Node节点能够存储的信息会更多,「多路搜寻树」的高度会比「二叉搜寻树」更低。 候选者:理解了区别之后,其实就很容易发现,在数据不能一次加载至内存的场景下,数据须要被检索进去,抉择B或B+树的理由就很充沛了(一个Node节点存储信息更多(相较于二叉搜寻树),树的高度更低,树的高度影响检索的速度) 候选者:B+树绝对于B树而言,它又有两种个性。 候选者:一、B+树非叶子节点不存储数据,在雷同的数据量下,B+树更加敦实。(这个应该不必多解释了,数据都存储在叶子节点上,非叶子节点的存储能存储更多的索引,所以整棵树就更加敦实) 候选者:二、B+树叶子节点之间组成一个链表,不便于遍历查问(遍历操作在MySQL中比拟常见) 候选者:我略微解释一下吧,你能够脑补下画面 候选者:咱们在MySQL InnoDB引擎下,每创立一个索引,相当于生成了一颗B+树。 候选者:如果该索引是「汇集(聚簇)索引」,那以后B+树的叶子节点存储着「主键和以后行的数据」 候选者:如果该索引是「非聚簇索引」,那以后B+树的叶子节点存储着「主键和以后索引列值」 候选者:比方写了一句sql:select * from user where id >=10,那只有定位到id为10的记录,而后在叶子节点之间通过遍历链表(叶子节点组成的链表),即可找到往后的记录了。 候选者:因为B树是会在非叶子节点也存储数据,要遍历的时候可能就得跨层检索,绝对麻烦些。 候选者:基于树的层级以及业务应用场景的个性,所以MySQL抉择了B+树作为索引的底层数据结构。 候选者:对于哈希构造,其实InnoDB引擎是「自适应」哈希索引的(hash索引的创立由InnoDB存储引擎引擎主动优化创立,咱们是干涉不了) 面试官:嗯...那我理解了,顺便想问下,你晓得什么叫做回表吗? 候选者:所谓的回表其实就是,当咱们应用索引查问数据时,检索进去的数据可能蕴含其余列,但走的索引树叶子节点只能查到当前列值以及主键ID,所以须要依据主键ID再去查一遍数据,失去SQL 所需的列 候选者:举个例子,我这边建了给订单号ID建了个索引,但我的SQL 是:select orderId,orderName from orderdetail where orderId = 123 候选者:SQL都订单ID索引,但在订单ID的索引树的叶子节点只有orderId和Id,而咱们还想检索出orderName,所以MySQL 会拿到ID再去查出orderName给咱们返回,这种操作就叫回表 候选者:想要防止回表,也能够应用笼罩索引(能应用就应用,因为防止了回表操作)。 候选者:所谓的笼罩索引,实际上就是你想要查出的列刚好在叶子节点上都存在,比方我建了orderId和orderName联结索引,刚好我须要查问也是orderId和orderName,这些数据都存在索引树的叶子节点上,就不须要回表操作了。 面试官:既然你也提到了联结索引,我想问下你理解最左匹配准则吗? 候选者:嗯,阐明这个概念,还是举例子比拟容易阐明 候选者:如有索引 (a,b,c,d),查问条件 a=1 and b=2 and c>3 and d=4,则会在每个节点顺次命中a、b、c,无奈命中d 候选者:先匹配最右边的,索引只能用于查找key是否存在(相等),遇到范畴查问 (>、<、between、like左匹配)等就不能进一步匹配了,后续进化为线性查找 候选者:这就是最左匹配准则 面试官:嗯嗯,我还想问下你们主键是怎么生成的? 候选者:主键就自增的 面试官:那假如我不必MySQL自增的主键,你感觉会有什么问题呢? 候选者:首先主键得保障它的唯一性和空间尽可能短吧,这两块是须要思考的。 候选者:另外,因为索引的个性(有序),如果生成像uuid相似的主键,那插入的的性能是比自增的要差的 候选者:因为生成的uuid,在插入时有可能须要挪动磁盘块(比方,块内的空间在以后时刻曾经存储满了,但新生成的uuid须要插入已满的块内,就须要挪动块的数据) 面试官:OK... 本文总结: ...

September 6, 2021 · 1 min · jiezi

关于面试:前端常问问题总结持续更新

1.从输出url到页面渲染的过程2.安全性问题: xss和csrf3.网络的七层协定4.http1.0,http1.1,http2.0, https

September 1, 2021 · 1 min · jiezi

关于面试:手写题实现一个批量请求函数-multiRequesturls-maxNum

题目要求要求最大并发数 maxNum每当有一个申请返回,就留下一个空位,能够减少新的申请所有申请实现后,后果依照 urls 外面的程序顺次打出题解// 模仿申请function request(url) { return new Promise((resolve) => { const time = Math.random() * 1000; setTimeout(() => resolve(url), time); });}async function multiRequest(urls, maxNum) { let data = urls.map((url, index) => ({ index, url })) // 因为最终要依照程序输入,所以给每个url追加一个index属性,用于记录在数组中的地位,确保按序输入 let result = [] // 寄存后果的数组 // 巧用Array.from, length是开拓的数组长度,这个能够管制最大的并发数量。前面回调办法用于寄存异步申请的函数 let promises = Array.from({ length: Math.min(maxNum,data.length) }, () => getChain(data, result)) // 利用Promise.all并发执行异步函数 await Promise.all(promises) // 通过函数参数接管最终的一个后果 return result}async function getChain(data, res = []) { // 利用队列的思维,一个个pop进去执行,只有urls还有,就继续执行 while (data.length) { let one = data.pop() try { let urlRes = await request(one.url) // 后果依照索引顺序存储 res[one.index] = urlRes } catch (e) { res[one.index] = e } }}// 调用const urls = ['www.example1.com', 'www.example2.com', 'www.example3.com', 'www.example4.com', 'www.example5.com']multiRequest(urls, 5).then(finalRes => { console.log('done', finalRes)})

August 28, 2021 · 1 min · jiezi

关于面试:分享一次大厂的辛酸面试经历

本文起源:相学长 链接:https://juejin.im/post/5b9b47c7f265da0ac25658f6本文次要讲讲这几年的面试经验,以及我集体感觉能够从中汲取的经验教训,心愿能给大家提供一点点帮忙。 实习当年我还很愚昧,基本不晓得很多大厂有实习招聘,直到大三要完结了,学校说: “同学们,你们大四没课,肯定要实习阿!” 我才反馈过去,喔,原来我要去找实习。而且本人也从没布局过什么职业方向。我学的是软件工程,但我过后还真不知道本人将来的具体岗位。 安卓?IOS?我基本就没学过。算法?学校的acm较量上都没见过我的名字。C++?大一的课程我早忘的烟消雾散了。如同就Java Web还有些印象。所以我实习时投的大多是java开发。 过后学校组织了专门的实习招聘会。我早晨找了个盲目不错的简历模版,在招聘会时投简历。 咱们的招聘会并没有一线大厂,大部分都是杭州的一些中小企业和守业公司。 我过后还问负责招聘的老师: “老师老师,来咱学校的这些公司,有没有特地举荐的啊?” 老师: “阜博通不错。” 后果这家公司当天基本就没来,我回头又去阜博通网站投简历,也是杳无音信,过后感觉很可惜。 乏味的是当初网上阜博通的口碑差的一逼。也不晓得死没死,得亏过后也没去。 招聘会上大搜车也来了,当年大搜车刚从北京来杭州,还是刚守业阶段。我本人对车也比拟青睐,家里也有汽车相干的生意。另外本人也喜爱守业公司,盲目退出守业公司,没多久说不定本人就是骨干员工,发家致富,不可企及。所以过后特中意大搜车,于是投了简历。 我还有好几个好敌人也投了搜车,起初咱们也大多都被叫了过来面试。出其不意的是,就我没过。 次要起因是: 我Java也忘的差不多了...我对实习面试基本没有任何筹备。自认为本人了不起,还一个劲的吹牛逼。说本人奖学金满满当当,绩点也是面列前茅云云。 印象粗浅的一点是,面试官问我,你感觉你学习能力怎么样? 我:“我学习能力还是不错的,尽管学生会工作很忙,但仍旧能放弃很好的问题。” 面试官: “我感觉你学习能力个别。” 而后我就被刷了,而我另外有三个好敌人都通过了,其中有两位同学过来了实习。不过半年多后,这两位也都来到搜车了,次要还是过后他们给的转正工资低。他们工资低也是因为过后搜车融资遇到问题,能够说是奄奄一息。 搜车当初前端很弱小的一方面起因就是,过后他们后端走了很多人...于是前端承当了很多责任,也上了Node,在外部做了很多输入。所以搜车前端目前在业界还是十分不错的。当然最次要还是芋头领导有方啦! 还好过后搜车保持了下来,蚂蚁金服策略投资后,最近又融了钱,是当初大环境不景气中获活的不错的公司了。 起初我还面了一家公司,亚信。过后如同也是绝对比拟大的公司。面试官正好也是浙工大毕业,他一看简历,说,哟学弟啊。 我: “学长好,学长好!” 面试官: “你这个java怎么样呀?” 我: “还能够喔。我java web跟j2ee绩点都是4点几的。” 面试官: “那你说说,java里的这个锁。” 我: “唔......遗记了。” 而后氛围很难堪,而后不出意外我仍旧被刷了。 总之,我招聘会上投的公司都挂了,都没要我的。起初机缘巧合,面了一家也是学长守业的公司。他们看我尽管技术不行,但脑子还算灵光,才勉强收容了我。 说了这么多,总结一下,咱们实习或者说校招时要留神的点: 投身技术岗,不要太把本人学习成绩当回事。别以为问题好,人家就肯定要你。那些是精益求精,但跟业余程度并不一定挂钩。尤其是学校就不怎么样。(仅限本科,硕博我没读过,无发言权)别打没有筹备的仗!要投什么岗位,就要先温习好对应的专业知识!最好是尽早能有一个业余方向,并做深刻学习,别箭在弦上了还不晓得射哪儿。很多大厂都有校招跟实习的窗口,而且有固定的工夫,别忘记也别错过!尽量还是去大厂,小守业公司大概率还是死。作为刚入职场的人,去守业公司也很难表演要害的角色,轮不到你发家致富的。跳槽我毕业后就留在实习的公司了,所以应届生校招的教训我也没有。 我说下我从第一家公司跳槽到丁香园过程中的面试经验。这个面试的比拟多...尽管没太多干货,然而我感觉还是挺乏味的...大家就当看段子吧... 我到职时是裸辞的,这个也是我太自信犯得谬误...我年前到职,元宵后才回杭,而后找工作又花了一个月工夫。其中经验了很多挫折。我在第一家公司是前后端都开发,但才一年多的工作教训,加之本人业余不过怠惰,公司又不加班,我在前端上的积攒还很单薄。但我就想做专职做前端,便开始投前端岗位。 上面开启我的疯狂面试过程: 年少轻狂,先就找了阿里的同学内推,遗憾的是,一面就挂了,面试评估也很不乐观。投了网易,简历没过。投了微博、Segmentfault、酷家乐、红圈营销、蘑菇街等等等,简历没过。第一家公司做微信相干的开发,于是我自信满满的投了有赞、微店、二维火,盲目应该有加分,然而一样简历都没过。投了招银网络。口试过了,第二轮的技术面试,面试官对我评估也不错。然而终面挂了,终面是hr跟一位男性面试官。那位男性面试官我不晓得他是什么职位,他问了我一个问题:在银行的登录界面上,怎么保障用户登录安全性。我说,在前端上,感觉能做的不多,只晓得必须https。面试官不称心,我盲目也答的不好。招银的口试有一件趣事,我在招银有个同学,起初我才晓得,过后我口试的试卷是他出的,但他并不是前端...招银没啥前端,那卷子也是他网上搜了很多题目拼起来的。我投了一家小外包公司,一面过了,二面老板来谈。老板还是挺好的,我讲话那么傲慢,他还是挺谦和。他感觉我想去大厂,想留住我,说:“其实咱们也有很多一些大厂的外包工作,比方阿里。”我过后因为疑难,问了他一个问题: “为什么像阿里这样的大厂,基本不缺人才呀,为什么还须要找咱们呢?”老板: “这个嘛,有很多起因。比如说,一些大厂呀,他们有一些我的项目呢,也是处在试验阶段,不晓得成不成。如果招了人去做,万一我的项目崩了,招的人怎么办?又没得解雇。这就须要咱们外包啦。”当然我来了阿里后,还没接触过这样的外包。我接触的更多的外包是,有些动态页面比较简单,但总归须要花工夫,让公司前端做又有点儿大材小用,于是就找外包的同学。我还投了一家比拟大的外包公司,那个业务的项目经理晓得我在第一家公司写scala时,就十分的观赏我,十分想我去。惋惜最初我还是抉择了去丁香园。不过我感觉我还是不值得他这么喜爱,毕竟我scala写的真不怎么样...我还投了同花顺,也顺利拿了offer。就是offer工资没到我的冀望,感觉跳槽进去,工资没太大变动,总是心有不甘,而且同花顺周六还须要加班。一个同学给我内推了曹操专车,一面完结后,就跟谈工资冀望。我过后说是16k,预计曹操感觉我能力不足以承当这份巨资,没有下文了。我还投了九言,他们的产品是In,一款图片社交软件,在几年前还是挺火的。在17年年初,我感觉也还行。一面二面都过了,三面是前端负责人跟CTO面。CTO很和善,但那位前端负责人很严格,不过长得挺帅。他问我vue,angular的一些原理,我过后答的不好,最初挂了。我还投了一家叫脸谱中国的,办公地在杭州武林广场坤和核心。办公地极其市中心,hr个个貌美如花。我也拿了offer,待遇也不错。说实话我还是有点儿心动的,毕竟hr真的挺难看。就是我查这个脸谱的流量是真的不咋滴,应该赚不了什么钱,但办公室却这么市中心...总感觉怪怪的,不靠谱,最初没接offer。而后前几天一个老同学通知我...脸谱破产了...工资都发不进去,还说啥老板跟女员工车震、送别墅给小三云云。唔,难怪他们hr小姐姐都这么难看...我还投了一家叫彩虹云直播的守业公司,公司人是真没几个,面试官感觉我还是靠谱的,想我来。可是我看这公司人这么少...产品我感觉我不行,是在微信上做直播购物。而后我就坐地起价了,说我想20k,预计他们也开不起,而后就没而后了。不过他们的hr小姐姐也真的很难看,很温顺。再而后,他们也开张了,起初我在丁香园时还面试了一个他们那过去的前端...面试完后让我拒了...还投了一家守业公司,是一个学妹内推的,叫火球买手。技术面完后,hr面,那个hr长的尽管不错,但谈话切实太矫揉造作了...可能不喜爱我,最初也没过。刚看了下豌豆荚app下载量,不到5万,预计也是靠着资本勉强活着。还投了一家也是做医疗的公司,他们的办公地点在杭州市科技局大楼,起初我才晓得,十年前丁香园刚来杭州时办公地就在这。杭州市科技局看来是真的很喜爱帮忙医疗行业啊!!不过这家医疗公司我感觉不咋滴。我过来面试呢,感觉像是通过面试来解决他们的问题。说他们当初在搞前端工程化,进行到一半了,而后关上一个工程,问我他们当初这个工程,前端工程化应该怎么做。我一看那工程,head里的script援用了jQuery跟angular...就是他们所说的进行到一半的工程化了。我说如果是我的话...我应该会先把这些代码删了...起初我表白了不满,说问题不应该这么问啦,他就说好吧,那这样吧,如果让你用css画个奥运五环,你怎么实现。我说: “呃,我应该会用一张图片...”最终也是不欢而散...最初,说下丁香园的面试经验。丁香园有两面,第一面是我入职后的组长面试的。个别面试题大部分我也遗记了,反正经验了上述十几家,我曾经应答如流了。。。。惟一有印象的是,过后他问我在老的前后端耦合的工程上怎么做前后端拆散的。我说了上一家公司的计划,他哈哈哈哈哈大笑,说丁香园也是这么做的。总之谈的挺开心,而后二面是我过后的前端主管,跟我聊的次要不是技术方向了。一些职业规划、成长指标云云。最初的最初,我抉择了丁香园。从下面的面试经验大家也能晓得过后抉择丁香园的起因了。更好的平台如网易阿里我又去不了。其余要么感觉我工资要求太高,要么我感觉他们略不靠谱。幸好我最初的抉择是正确的。丁香园这家公司从入职到我来到,简直没有什么让我好受的中央。公司倒退也挺好,对社会也有价值。如果有同学想对丁香园有更多的理解,也能够来问我。小结 最初再总结一下前端跳槽留神的几个点: 尽量别裸辞,不然本人很被动。能力不行,运气也不行的话,喜爱的公司进不去,不喜爱的公司不想去但又感觉本人始终闲着也不行,就很难堪。留神社保,别断缴!如果切实不行,能够去淘宝买。如果真的断了再去买补缴,记得多花点钱,买会缴个税的。别问我为什么说这个.....都是泪。最想去的公司前面再面,后面先攒一点面经。没有较高的把握审慎来阿里面试,想攒阿里的面经去看网上其他人的面试教训吧。面了后果评估很差也不是坏事。本人能力还不强时,平台很重要。看我已经面的那么多公司,大部分死的死伤的伤,能去更好的公司就去更好的公司。大厂公司教训对履历加分也是很多很多的。学历与公司经验很重要。尽管这不肯定会成为面试的门槛,然而人家筛简历时,很可能就不违心看你。逆锋起笔是一个专一于程序员圈子的技术平台,你能够播种最新技术动静、最新内测资格、BAT等大厂教训分享、增长本身、学习材料、职业路线、赚钱思维,微信搜寻逆锋起笔关注!入职蚂蚁起初我再从丁香园到职时,就仅面了蚂蚁,过后也是无心插柳,抱着试试,没想到也就进了。至于面进蚂蚁的教训(针对社招P6岗),细节我也不不便说,我说两点我集体感觉比拟重要的: 业余技术能力必须过关。什么学习能力强、致力刻苦之类的,在社招上,并不是决定因素。要有肯定的推动力、执行力。什么顺利的实现工作,线上无bug之类的都是最根本的要求。这要是有bug还能写上简历吗?须要的是本人去推动落实的一些中央,比方性能优化、开发效率晋升之类。有同学问,蚂蚁各轮面试的侧重点,我说一下我本人的经验。不过每个bu的招聘流程可能会有些差别,我是蚂蚁保险事业群,我说的仅是过后的状况: 一面一面问的js/css/html基础知识会偏多。尽管我过后次要写的还是vue,但因为蚂蚁是react的技术栈,还是问了我不少对于react方面的常识。我个人感觉我答的并不是十分现实,但预计因为我集体对react应用不多,面试官还是给了我二轮面试的机会。 二面二面电话打来时,我过后正好在加入敌人婚礼,中途去接了面试电话。绝对一面,二面基础知识问的绝对偏少一丢丢,但总体来说,还是那些题目,大家网上都能搜的到,真的。然而不代表网上能搜失去的货色,本人就能答得好。你的答案是网上看的,还是本人真正的了解,这些一听都能感触的到的。 所以同学们在网上搜面试题时,肯定要有本人的了解。对于那些面试题肯定要深入研究其背地原理,面试答复时能力娓娓而谈。 三面我的三面仍旧还是那些问题。一二面是要招聘的部门的人的面试。三四面是各个部门穿插面。为了就是保障面试流程的偏心公正,为了蚂蚁员工的保质保量。所以不要指望说本人意识部门的什么人,本人的面试就能容易一些。 四面我的四面面试官次要问了我集体感觉本人做的最好的我的项目,以及本人在其中施展的最重要的作用,在其中遇到的问题,本人是如何解决的。 还有因为我用过node以及egg,问了一些我对node应用心得,对egg的认识。以及对阿里的其余开源我的项目的应用教训与个人见解。 次要还是考查业余技术上的深刻思考以及在技术之上的一些能力。这轮面试须要面试者有肯定的我的项目积淀与业余深度,不是简简单单能答上问题就行的。因为理论工作中会遇到很多千奇百怪的问题,这不是一些面试题可能笼罩的。如果你说不出本人的一些问题,那阐明是真的我的项目教训比拟少,或者说本人的思考与积淀比拟少。 不过大部分人遇到的问题其实都很简略,什么如何形象组件、某某兼容性之类的,都是一些点下面的问题。阿里p6的要求是独挡一面,能够负责一条业务线上的所有事件。所以须要大家将点扩散到面,比方我的项目整体工程架构、研发流程与效率等一些问题。 五、六面前面就是技术部的负责人与hr的面试。考差的就不是技术相干的了,次要还是考查人自身。思维状况、价值观、对阿里的认识、对集体倒退的想法等等。这个大家如实说就好,保持本心。 我置信只有是一个品格端正,生存积极向上的人,这轮面试没有太大问题。 逆锋起笔是一个专一于程序员圈子的技术平台,你能够播种最新技术动静、最新内测资格、BAT等大厂教训分享、增长本身、学习材料、职业路线、赚钱思维,微信搜寻逆锋起笔关注!

August 22, 2021 · 1 min · jiezi

关于面试:一次阿里-P7-的面经分享给大家

原文链接:https://juejin.im/post/5e664bdd6fb9a07cd80f3192 集体近期面试状况往年二月以来,我的面试除了一个用友的,根本其余都被毙了,能够说是十分残暴的。其中有很多本人感觉还面的不错的岗位,比方百度、跟谁学、好将来等公司。说实话,打击比拟大。 状况基本上是从三月开始好起来的,这个工夫点,可能疫情快过来了,国家也开启了靠近40万亿的根底建设打算,在这个工夫断,面试的几个代表性的公司,包含腾讯、饿了么、宝宝树、旷世科技等等,根本都成了。 最终,就在三月9号,饿了么刚给我确认了p7的职位。也算本人到了另一个奋斗的阶段了。对本人的经验,做一个面试总结。 我的面试筹备面试其实我是属于一边面试,一边筹备的过程,然而无论如何,肯定要做到根底扎实、比拟好的自我介绍,以及形容本人的职业故事。 1、基础知识的筹备这一块,其实很重要,很多问题,必须轻松的了解,就和呼吸一样天然。 因为这一块的把握水平,就决定了一个前端工程师,能不能达到高级的水平。 抛砖引玉,比方面向对象、原型链、闭包、es6、html5、css3,它们是前端的根底,须要烂熟于心。比方连闭包都解释不明确的,真的该好好下功夫在这些根底上。。 对于前端框架,根本的个性,生命周期、组件、传值交互、路由、redux、vuex等等,根本都没有应用上的纳闷。比方面试官可能问,actions 和 mutations 有什么区别之类的。 这一块,能问的问题简直是无穷多的,哪怕同一个知识点,问法不一样,不真正了解的话,切实是过不去高级那一关。 2、好的自我介绍自我介绍,很多人其实做的不好,其实这是面试官对面试者的第一印象。 如果我是一个面试官,我根本能从自我介绍中,得悉这么一些信息: 1、这个人是不是一个逻辑清晰的人? 2、这个人的性情是积极向上的,还是稍显自大的? 3、这个人能不能很好的表白自我? 这些问题很重要,依照这个思路,其实你反过来就能够向面试官体现自我。 1、学校、业余 2、技术栈 3、职业履历 4、最近一家公司的奉献 千万不要和面试官说,和产品、后盾很好的配合,实现公司的我的项目之类。因为齐全是废话! 自我介绍个别是两分钟左右,你确定你能两分钟,把下面四个问题给面试官讲清楚?并且你还要突出一些重点,比如说,我比拟善于react,做过XXX优化之类,有过XX年的我的项目教训之类。 自我介绍的实质:用最短的话,向面试官灌输你的长处,并且让面试官在以后大抵的范畴内考查你。如果你说你相熟vue,个别面试官都会问vue相干的多一点,应该不会和你死磕react。 3、如何“讲故事”这是一个比拟重要的点。重要的是,这个故事要有看点,示意了你和其他人不一样在哪。 比方我,我会说,我之前在公司,做了咱们前端的我的项目标准化工作,做了咱们外部的组件库建设,集成了咱们本人的脚手架工具。 这是我感觉,我和其余大多数前端不一样的点,面试官的焦点就会集中在,什么是我的项目标准化,定义了哪些维度的规范?组件库的建设,解决了什么问题?脚手架的呈现,又解决了什么问题? 任何一个人,都是惟一的,任何一个我的项目,也是不同的,作为面试者的咱们,重要的是,要把这些重点因素提取进去,造成本人的“故事”。 比方,我独立承当了公司的xxx我的项目。遇到了哪些挑战,我如何在不利的条件下成长起来的。 比方,我通过xxx渠道,钻研了多少个我的项目的架构工作。 肯定要置信,因为你,什么才产生了变动。其实大多数人是一个被动的状态,不晓得本人有什么用,本人在团队中的定位,本人的职责是什么。在工作中,我心愿每个人置信本人的是有用的,而后寻找你能够发力的点,去做真正的扭转。如果你在找工作,那就好好思考,本人的确在团队中,承当了什么。 面试该留神的点面试的外围是什么?肯定要记住,那就是沟通!而咱们做技术的,其实最大的硬伤,多半是沟通,至多对于我本人,就是有这个问题的。 沟通的意义,一方面,是你要让他人听懂你表白的货色;另一方面,是你要听懂他人的话。 1、谈话得留神,让他人懂你间接举个例子,我在面试美团的时候,谈话始终结巴,其实我也不晓得为什么,平时谈话都是失常的,在非凡的场合,就呈现这个问题,尽管把话说完了,然而显然,美团第一面,就pass了。过后是在家中视频面试,我的室友,不好意思间接说我,就给我录音,我听了10分钟左右,的确不尽人意。。 我听了10分钟的录音,给我本人的评估就是,谈话都吃力,当前一起工作,那还不把我累死。 当前,所有的面试,我都把关注点,从我如何说,变成了,如何让他人很欢快的听懂我说的话。 第一、我向面试官说的所有的话,都是成体系的。 第二、我向面试官说的所有的话,都是逻辑清晰的。 第三、我向面试官说的所有的话,我都先进展两秒以上,思考分明了再谈话。 当然了,这一块,可能是我集体的特例,然而根本的语句通顺、逻辑清晰,在程序员中,做到的应该不多。 2、学会聆听,让你懂他人很多状况下,其实面试官在表白的时候,很可能咱们本人没听懂面试官的意思,这个时候,就会特地的难堪。 我个别会这么做,我会说,方才您说的问题,我来形容一遍xxxxxxx。形容完之后,你再问面试官,您表白的是这个意思吗?一般而言,面试官会进行更具体的举例和形容。 我在面试饿了么的时候,二面的面试官,一开始就问了一个业务比较复杂的问题,所以一开始,我其实齐全没明确,面试官说的是什么货色,然而我通过本人的形式,疏导面试官说的更多,而后到某个水平,达成一个共识,这就是比拟欢快的一个交换。 无论是学会谈话,还是学会聆听,其实外围的问题,就是让单方的交换,在一个频道上,因为对于领导,面试面试,其实就是找同类人! 必会的面试题目前端一些外围的经典问题,感觉永远都不会过期,反正我集体遇到的频率十分高,不过集体不会具体解读这些问题,只做一个抛砖引玉。 1、前端浏览器输出URL后产生什么?一般前端会答复,dns解析,获取html文件,解析DOM,渲染页面这么一个流程。 其实过程简单的很,比方一个dns解析阶段,它分为哪几步?解析的ip肯定是一样的吗?每次都会进行dns解析吗?可能还须要理解cdn托管的一些问题。 比方html文件获取,它是如何传输的?如何建设链接的?三次握手、四次挥手是什么?http协定端口是什么?为什么间接能拜访一个html文件? .... 2、前端性能优化?大多数前端,根本会说,缩小http申请、压缩合并js以及css、图片懒加载的技术、避免回流和重绘、css放头部、js放底部。 以上的说法对吗?完全正确!可是在这个过程中,我感觉短少一种思考。 比方缩小http申请,能够从哪些维度上缩小呢?比方合并http申请?比方合并资源?比方图片懒加载?http还有其余维度的优化吗?cookie优化?http申请和资源加载的辨别优化?在webview中呢?和一般的浏览器的优化技术,又有什么区别? ...... 3、前端如何做性能监控、异样监控?性能监控,异样监控,根本在小公司,是没有实际根底的,可是在差不多的大厂中,他们会关注这个问题。 首先是性能监控,应该从这么几个维度来说:一个是http的方面,在后端log日志,流入kafka,而后在kafka生产数据,能够精确的监控到哪些接口有异样?异样率是多少?另一个方面,是前端的 Performance 的api,在用户的实时应用的过程中,就会产生数据,这样就能实现页面性能监控。 前端异样监控,首先要明确什么是异样,html、css这些货色,无非就是一个展现的问题,还不至于让页面白屏的事件产生,所谓的异样监控,其实就是js的异样监控。在前端畛域,window.onerror是进行js异样的监听事件。并且要晓得,它在IE中,是不反对的,所以IE的监控,要应用try catch 的形式进行捕捉,比方咱们可能还要留神到,遇到异步的时候,这个如何做try catch的异样捕捉。 最初一个是前端sdk埋点,间接开发一个js文件,统计用户的UV/PV剖析等等,比方用户的转化率之类的,这一块集体没有什么特地的实际,各位能够在网上百度看看。 4、前端平安方面这是一个高级前端必问的问题,说的是一个前端对整个前端平安的零碎认知。 咱们必须了解这么几个方面:sql注入、xss、csrf、cookie平安、明码平安等等。 sql注入,要了解sql注入的场景,它的原理是什么,以后的数据库的解决方案是什么? xss攻打,常见的攻打场景,什么类型的网站容易被xss攻打,整个流程的原理是什么? csrf攻打,其实就是一个钓鱼网站,要了解为什么会收到攻打,应该采取什么策略进行进攻。 ...

August 18, 2021 · 1 min · jiezi

关于面试:字节跳动-前端面经4轮技术面hr面

作者:甘先森 链接:https://juejin.im/post/5e6a14b1f265da572978a1d3笔者读大三,前端小白一枚,正在筹备春招,人生第一次面试,投了头条前端,总共经验了四轮技术面试和一轮hr面,不多说,间接上题: 一面自我介绍,而后问了为什么学习前端算法:实现36进制转换简述https原理,以及与http的区别操作系统中过程和线程怎么通信node中cluster是怎么开启多过程的,并且一个端口能够被多个过程监听吗实现原生ajaxvue-router源码vue原理(手写代码,实现数据劫持)算法:树的遍历有几种形式,实现下档次遍历算法:判断对称二叉树第一次面试,过后比拟缓和,面试官很和善,面试中问到操作系统的过程,过后不记得操作系统,就提到了node多过程,而后面试官就问了cluster是怎么开启多过程的,并且一个端口能够被多个过程监听吗?答完后面试官就问了前面写完vue数据劫持的时候,面试官又问了Object.defineProperty除了set get外还有什么属性,我答复了configurable enumerable。vue-router次要提到了hashchange事件等,顺便跟面试官聊了一下h5的historyAPI。工夫总共是50分钟左右,一面完了后面试官让我等五分钟,接下来二面就开始了二面介绍一下我的项目中的难点let var const 有什么区别你晓得哪些http头部怎么与服务端放弃连贯http申请跨域问题,你都晓得哪些解决跨域的办法webpack怎么优化7.. 你理解哪些申请办法,别离有哪些作用和不同 你感觉typescript和javascript有什么区别typescript你都用过哪些类型typescript中type和interface的区别react怎么优化算法题:合并乱序区间笔者在答复http头部的时候,顺带跟面试官聊到了浏览器缓存,答复跨域的时候,面试官又让我用jsonp实现一下跨域,答复webpack的时候提到了happypack和treeshaking,面试官就顺带问了一下他们的作用,算法题我过后没有写进去(次要是因为菜),二面大略40多分钟完结,面试完后面试官说稍后hr会分割我,让我留神放弃通信,还没过一小时,hr打电话约我第三次面试工夫,不得不说,字节的效率真的高三面你理解node多过程吗node过程中怎么通信node能够开启多线程吗算法题:老师分饼干,每个孩子只能失去一块饼干,但每个孩子想要的饼干大小不尽相同。指标是尽量让更多的孩子称心。如孩子的要求是 1, 3, 5, 4, 2,饼干是1, 1,最多能让1个孩子满足。如孩子的要求是 10, 9, 8, 7, 6,饼干是7, 6, 5,最多能让2个孩子满足。算法题:给定一个正整数数列a, 对于其每个区间, 咱们都能够计算一个X值;X值的定义如下: 对于任意区间, 其X值等于区间内最小的那个数乘上区间内所有数和;当初须要你找出数列a的所有区间中, X值最大的那个区间;如数列a为: 3 1 6 4 5 2; 则X值最大的区间为6, 4, 5, X = 4 * (6+4+5) = 60;三面大略是1小时,面试官比拟冷酷,就问你晓得不晓得,算法思路,而后实现这个算法,面试完感觉凉凉,然而第二天就收到hr到来的电话,约下一轮的面试工夫。四面算法题:两个有序链表和并成一个有序链表https与http有什么区别(一面刚好也被问到)cookie有哪些属性cookie,session,localstorage,sessionstorage有什么区别怎么禁止js拜访cookieposition有哪些属性你晓得哪些状态码options申请办法有什么用less,sass它们的作用是什么平时怎么学习你什么时候能够来实现能实习多久四面算是比较简单的一次面试,面完后第二天早晨hr打来了电话,约与hr面的工夫hr面你什么时候接触前端的平时怎么学习对将来的布局是什么你对哪个我的项目印象粗浅,说一下我的项目的难点你对咱们公司有什么理解能实习多久等等hr面次要聊一聊人生现实,将来布局啥的,大略半小时的工夫四轮技术面+一轮hr面完结,学习到了不少,面试也是一个学习检测本人的过程,面试前大略温习了一周的工夫,把以前的代码看了一下,字节跳动比拟重视算法,面试前刷了下leetcode和剑指offer,也刷了些在牛客网上的面经。。大略就说这些了,写代码去了~ 祝大家都能播种大厂offer~ 逆锋起笔是一个专一于程序员圈子的技术平台,你能够播种最新技术动静、最新内测资格、BAT等大厂大佬的教训、增长本身、学习材料、职业路线、赚钱思维,微信搜寻逆锋起笔关注!

August 11, 2021 · 1 min · jiezi

关于面试:大厂面试选择排序的特点与适用场景是什么

在日常工作中或面试过程中,常常会遇到算法抉择的问题,本文对常见的抉择排序算法原理与实现进行了可视化介绍,并对其应用场景进行了阐明。算法介绍抉择排序(Selection sort)是一种简略直观的排序算法。它的工作原理如下。首先在未排序序列中找到最小(大)元素,寄存到排序序列的起始地位,而后,再从残余未排序元素中持续寻找最小(大)元素,而后放到已排序序列的开端。以此类推,直到所有元素均排序结束。 算法实现该算法将输出列表分为两局部:在列表的前部(左侧)从左到右构建的已排序我的项目子列表和占据列表其余部分的残余未排序我的项目的子列表。最后,排序的子列表是空的,未排序的子列表是整个输出列表。该算法通过在未排序的子列表中找到最小(或最大,取决于排序程序)元素,将其与最左侧的未排序元素(按排序程序搁置)替换,并将子列表边界向右挪动一个元素来持续进行。 可视化展现 selectionsort.gif 过程阐明最后,该列表分为两局部。一个已排序的列表位于最左侧,其余未排序的列表位于最右侧。同样在开始排序列表是空的,所有元素都在未排序列表中。而后咱们从未排序列表中选取最小的元素并将其放入已排序列表中。而后排序列表的长度减少,未排序列表的长度缩小。该过程始终继续到未排序列表为空。 实用场景抉择排序的次要长处与数据挪动无关。如果某个元素位于正确的最终地位上,则它不会被挪动。抉择排序每次替换一对元素,它们当中至多有一个将被移到其最终地位上,因而对n个元素的表进行排序总共进行至少(n-1)次替换。在所有的齐全依附替换去挪动元素的排序办法中,抉择排序属于十分好的一种。原地操作简直是抉择排序的惟一长处,当空间复杂度要求较高时,能够思考抉择排序。其次就是在查看给定的列表是否曾经排序时能够实用该算法。

August 8, 2021 · 1 min · jiezi

关于面试:前端-面试-HTTP-总结七-HTTP-缓存概述

最近我在做前端面试题总结系列,感兴趣的敌人能够增加关注,欢送斧正、交换。 争取每个知识点可能多总结一些,至多要做到在面试时,针对每个知识点都能够侃起来,不至于哑火。 前言缓存是应用程序中很重要的一个概念,在有大量数据交换的应用程序中,咱们会采取一些形式将那些实时性要求不高的数据生成正本并存储在某个相对来说可疾速达到、拜访、获取的仓库,这样在须要这些数据的时候咱们间接从这个仓库中获取数据。 缓存的目标次要有两点: 晋升数据交换的性能(速度)进步用户体验缩小网络传输缓解服务器或数据库的压力HTTP 缓存作为 WEB 性能优化的重要伎俩,对于从事 Web 开发的同学们来说,应该是常识体系库中的一个根底环节,同时对于有志成为前端架构师的同学来说是必备的常识技能。 概念HTTP 缓存指的是: 当客户端向服务器申请资源时,会先到达浏览器缓存,如果浏览器有“要申请资源”的正本,就能够间接从浏览器缓存中提取而不是从原始服务器中提取这个资源。 常见的 HTTP 缓存只能缓存 GET 申请响应的资源,对于其余类型的响应则无能为力,所以后续说的申请缓存都是指 GET 申请。 HTTP 依据是否要向服务器发送申请将缓存规定分为了两类: 强缓存协商缓存HTTP 缓存都是从第二次申请开始的。 第一次申请资源时,服务器返回资源,并在响应头中回传资源的缓存参数;第二次申请时,浏览器判断这些申请参数,命中强缓存就间接200,否则就把申请参数加到申请头中传给服务器,看是否命中协商缓存,命中则返回 304,否则服务器会返回新的资源。 缓存规定当用户开始拜访一个网站时,浏览器会从指标服务器获取一些资源用以构建最终的 WEB 页面,比方 css、js、html 等动态文件。 假如咱们不采取任何措施,则用户每次拜访这个网站都要发动一系列 HTTP 申请,试想,如果这个网站的 pv 达到上百万甚至上千万,会对网站的后盾服务器造成多大的压力。 为了尽可能晋升网站的性能,HTTP 协定给出了一个优化计划,其大体规定如下图所示: 当用户第一次申请一个资源时的时序图,浏览器会先询问是否有命中缓存没有命中的缓存则浏览器再从服务器获取资源并将资源放进缓存仓库中,下次则能够从缓存中拿资源了。为不便了解,咱们认为浏览器提供了缓存数据库,只有浏览器发现满足了某些缓存规定,就能够间接从缓存数据库中取出你须要的资源。 上述是一个简略过程,然而事实上的缓存策略还要更简单一点。上面是一个较为残缺的缓存流程: 总结HTTP 缓存是保留在浏览器上的HTTP 缓存是应用程序性能优化的重要伎俩HTTP 缓存针对的是那些时效性不是很强的资源,比方 JS、CSS、HTML 等HTTP 缓存分为强缓存和协商缓存HTTP 缓存的相干设置参数都是在头信息中携带的以上就是无关 HTTP 缓存的概述内容,前面我会具体解说强缓存和协商缓存的原理和利用。 ~ ~本文完,感激浏览! ~ 学习乏味的常识,结识乏味的敌人,塑造乏味的灵魂! 大家好,我是〖编程三昧〗的作者 隐逸王,我的公众号是『编程三昧』,欢送关注,心愿大家多多指教! 你来,怀揣冀望,我有墨香相迎! 你归,无论得失,唯以余韵相赠! 常识与技能并重,内力和外功兼修,实践和实际两手都要抓、两手都要硬!

August 7, 2021 · 1 min · jiezi

关于面试:飞书ShowMeBug让技术招聘更高效更便捷

前些天,一用户悄眯眯的在微信上敲Bug君,最近通过飞书进入 ShowMeBug 平台发动面试太不便啦! 事件是这样的,这位用户的整个团队都在应用飞书辅助办公,一次偶尔的机会下,想找一个能进行在线 Coding 面试的工具,于是在飞书上遇见了 ShowMeBug。最开始只是抱着试一下的心理去应用,没想到体验出奇的好,从此便踏上了 ShowMeBug 的在线技术招聘之路。 据理解,该用户曾经从飞书上发动了 ShowMeBug 面试30多场,简略不便效率高。 ShowMeBug +飞书,通过装置飞书利用市场中的 ShowMeBug 机器人,能够在飞书端一键发动在线面试。正如飞书的理念“在飞书,享高效”,ShowMeBug 无疑为飞书追赶高效提供了又一把利器。 飞书科技是字节跳动旗下 to B SaaS 产品,是一款高效的办公平台,整合即时沟通、日历、音视频会议、云文档、云盘、工作台等性能于一体。 ShowMeBug 是一款数字化驱动的可记录、可剖析、可复盘的技术评估与在线 Coding 面试平台,能够高效满足大批量校园招聘和社招人才筛选。 两者的联结,扩宽了技术招聘的可能性,让技术招聘更省时、更省力、更精准。受疫情的影响,整个社会被动的承受了一轮线上办公的模式转变,而 HR 的招聘工作也在大环境的影响下,开始从线下走上线上。疫情期间的“无可奈何”,让在线招聘走出了一条可行之路。 在线口试帮忙初筛候选人,在线面试进一步确认候选人实力,“在线口试+在线面试”的模式进一步让招聘更高效。惯例的在线面试,只须要有音视频通话的性能就根本能够满足需要。但对于技术人才的招聘,单纯的音视频聊天是远远不够的。 “Talk is cheap, show me the code. ”对于技术人员的面试,最好的形式就是写代码,间接的代码演练能够让面试官更直观的理解候选人的实力。 ShowMeBug 基于在线实时协同的编程 IDE 和代码剖析技术,构建了一套规模化、自动化、结构化的技术笔面试工具,在飞书中,企业应用 ShowMeBug 能够随时随地开启一场在线 进入飞书,在左上角搜寻栏中搜寻 ShowMeBug,在与助手的对话框中回复“1”可关上性能清单,在清单中点击“创立面试”或间接输出“创立面试”,即可疾速创立面试,也能够点击控制台进入 ShowMeBug 后盾创立笔面试。ShowMeBug + 飞书,为技术招聘提供了更多的可能性。飞书一体化的招聘流程,搭配 ShowMeBug 的在线口试+在线面试,让招聘技术人才从一开始就变的高效、愉悦。 在线代码面试,开拓了一条高效、智能、精准的技术招聘模式,让企业竞争力赢在人才招聘上。ShowMebug 凋谢 API 接口,轻松对接企业自研零碎,技术团队能够本人入手集成须要的性能,打造完满适配企业倒退的功能模块。

August 5, 2021 · 1 min · jiezi

关于面试:我毕业啦00后的我校招进了字节跳动开启了一段新的人生旅程

前言昨晚接到了字节HR的电话(和三面隔了一周),之后发了意向书。 简略介绍下自己状况:某不出名双非本科,电子信息工程业余(也算半个科班吧),没有实习,也没有奖项(奖学金都没拿过。。)次要的常识获取起源个别是通过网上,因而当初我也来把我的教训分享给大家,心愿能帮忙到大家! 字节跳动1面 7.15 50min怎么了解微服务微服务的毛病微服务之间怎么做负载平衡Oauth2根本流程、原理登录模块是怎么做的cookie和session的区别购物车为什么用Redis存,是永恒存储吗为什么购物车多读多写Redis怎么革除过期key,有哪些策略lru是怎么的过程Redis字典底层怎么实现的hashtable是怎么实现的ziplist怎么实现的一般的哈希表怎么实现的哈希表怎么扩容应用MQ的益处MQ解耦和微服务解耦的区别算法:最长回文子串https建设连贯的过程(SSL/TLS协商的过程)对称加密和非对称加密的优缺点为什么要辨别内核态和用户态什么时候从用户态切换到内核态你编程的状况下,零碎调用什么时候会产生反诘:业务,开发语言,体现,对应届生的要求(重点是根底和算法)面试体验不错,然而我的项目挖的有点深 字节跳动2面 7.19 1h手写单例模式volatile什么作用多线程的几种实现形式四种形式的区别锁用过哪些排它锁什么意思自旋锁什么意思CAS相干MySQL能够不指定主键建表吗,背地的逻辑是什么聚簇索引和其余索引有什么区别建惟一索引,插入数据时是怎么解决的反复插入会报错,是怎么解决的不同事物隔离级别的实现以前没有实习过吗lc40 组合总和II反诘:部门怎么造就新人,刚进来做什么(学根底,语言和中间件,做demo),大略多久做需要(1周到1个月不等,看学习状况),框架和中间件以开源的为主还是以自研的为主(自研的) 字节跳动3面 7.26 1h有在实习吗面试通过后能够实习吗做我的项目的过程中遇到过什么问题内存泄露具体产生在哪什么状况下会呈现多线程拜访缓存穿透,怎么解决 (如同一缓和说成缓存击穿了,面试复盘的时候才发现。。。)缓存雪崩,怎么解决缓存与数据库数据一致性超卖问题怎么解决的集群环境下,Redis内存里的数据怎么保障统一算法:给定一个字符数组,和一个字符串,在字符串里找到任意一个齐全由字符数组组成的子串,字符程序无所谓(滑动窗口)反诘:面试通过还有面试吗,新人入职有培训吗,技术气氛怎么样 一点教训字节算法还是很重要的。我大略刷了600+LeetCode,其中70题根本能够纯熟默写进去,面试时写的算法题,全是写过的高频题。我的意思不是背题,我的状况是天天刷高频,刷的工夫长了,就很容易把思路记下来,前面再写就很熟了。 还有就是我的项目的细节要筹备筹备,我字节一面的时候没筹备我的项目,后果好几个细节都没讲进去,要不是前面算法写进去了,预计一面就凉了。如果是字节的话,我问过,侧重点还是根底和算法,所以我的项目占得比重可能略微少点,倡议还是八股纯熟点,算法多刷点比拟有用。 我的面试教训汇总因为平台限度,不能以图片的模式一一展现了!根底的货色就不进行过多的赘述,咱们将会从面试必问的说起,基本上文档外面的内容都是打出面试必问的技术点和面试真题整顿而成,大家拿到手后倡议间接去把真题做一下,有须要的敌人点击这里自取就好了,心愿材料对你有帮忙!大家一边练手一边考据一下本人的技术水平,全副做完之后再去看面试题解析和技术点解说,这样的学习效率是十分高的!最初祝大家工作顺利,面试胜利!

August 3, 2021 · 1 min · jiezi

关于面试:面试算法单链表反转

面试算法:单链表反转给定一个单链表 list,请将它反转后返回,示例: 原链表: 反转链表: 定义的单链表结点类构造如下: /** * 单向链表结点 */public class ListNode { public Integer value; public ListNode next; public ListNode() { } public ListNode(int value) { this.value = value; }}咱们先写两个办法,用于组装成链表和将链表打印到控制台,不便进行算法后果验证: /** * 组装成链表 */public ListNode assemble(int[] items) { if (items == null || items.length == 0) { return null; } ListNode list = new ListNode(items[0]); ListNode node = list; for (int i = 1; i < items.length; i++) { node.next = new ListNode(items[i]); node = node.next; } return list;}/** * 将链表打印到控制台 */public void print(ListNode list) { if (list == null) { System.out.print("<空>"); } while (list != null) { System.out.print(list.value + " -> "); list = list.next; } System.out.println("null");}1. “栈”反转“栈”是一种先进后出 (FILO)的数据结构,咱们能够利用它的这个个性来实现反转链表。 ...

August 1, 2021 · 5 min · jiezi

关于面试:坐下来谈谈如何写好一份简历

美味值: 口味:鹅肝手握 始终有同学在征询如何写好简历的问题,索性整顿一篇文章分享给有须要的同学。 平凡人格的素质,重要的是一个诚字。 --鲁迅在本文开始之前咱们先构建一个对立的价值观,诚信。 简历里所写的内容要事实求是,不可言过其实。在面试过程中如果面试官发现你的体现与简历不符,那也是白白浪费了面试官的期待和单方的工夫。况且还有背和谐试用期的考查在等着你。所以,千万不要越过诚信这条红线。 公司喜爱招聘什么样的员工?写简历之前,咱们最好先搞清楚一个问题:公司到底喜爱招聘什么样的员工? 首先,要能保质保量的实现工作。其次,除了能把本人的工作做好之外。赋能别人,给团队和公司带来更多的价值也是好员工的规范之一。那么,如何在简历中体现本人的教训、技术能力、后劲以及工作积极性呢,这值得咱们认真思考,也是本文想要达成的指标。 好的简历如同烧一道好菜,考究“色香味”俱全“色”代表布局洁净,详略切当、层次分明;“香”代表匹配性强、有价值、有亮点、充分体现你的技术实力;“味”代表可能感动面试官,让面试官期待与你的面试。好的简历应该蕴含哪些内容?文件名、文件格式倡议参考如下: 文件名:名字-工作年限-动向岗位 文件格式:应用 PDF,兼容性好,毕竟你无法控制看你简历的人用什么设施或软件。 布局排版内容要简洁精炼、档次清晰、突出重点、切记不要太花哨。(除非你是 UI 设计师) 1~2 页曾经足够,其实集体认为 1 页的简历最佳。充沛设计好布局、段落、字号、行低等细节,1 张纸足够展示你的能力,能力越强的大佬可能越不须要过多的语言来证实本人。 比方:尤雨溪-写了一个叫 Vue 的框架。 根本信息根本信息是简历的必填项,倡议蕴含以下 9 点: 姓名、动向岗位、所在城市、联系电话、邮箱地址、GitHub地址、集体博客地址、教育经验。(GitHub、博客内容少不倡议贴) 女同学对本人颜值自信的能够加上照片,男同学就不要臭美放照片了。 个人简介这一项因人而异,蕴含但不限于技术栈、技术成绩、开源我的项目、社区影响力等。 技术栈技术栈听起来很容易写,然而却有很多雷区,很多人常常踩雷。 以下三点,请务必器重起来。 不要堆一列一列的技术名词!你认为很 diao,其实 low 的不行。技术名词肯定要保障大小写、拼写正确!基本素质问题,很多人知法犯法。搞清楚相熟和精通!比方:精通 Vue、React,代表你很相熟它们的源码以及实现原理,并且提交过外围局部的 Pr,不然的话,请写相熟。倡议能够从以下几个方面动手,列出你的核心技术栈,匹配岗位需要即可: 编程语言框架前端工程化数据结构与算法设计模式好的:Vue 全家桶、React 全家桶不好的:Vue、Vue Router、Vuex。。。技术成绩技术成绩包含但不限于你在工作中积淀的工程化计划、技术难题解决方案等。它们是你我的项目教训的结晶和能力的认证,能够起到直击面试官灵魂的作用。 如:自研多端全链路监控零碎、埋点零碎、设计并落地 Deploy 构建公布零碎、深度定制企业级脚手架、定制企业级组件库等等。 开源我的项目、社区影响力Talk is cheap. Show me the code.开源我的项目和社区影响力不仅是你技术能力的佐证,也能够体现出你对技术的热诚,能够从以下几个方面来进行总结: 主导、保护或参加了哪些开源我的项目,如:Vue Contributor、React Contributor;GitHub 有着 1K Star 的技术博客;掘金优良作者 Lv5、CSDN 博客专家;出版过技术书籍或专栏教程;xxx 大会分享了 xxx 议题;经营着万人的技术公众号。等等。 如何参加到开源我的项目中呢?社区中有很多分享,我找到了一篇链接如下,心愿对你有所帮忙。 如何加入开源我的项目-如何给Vue3.0提PR工作经验工作经验按工夫程序倒序,并且要表明好在每家公司的任职起始工夫及任职角色。 比拟容易踩坑的“硬伤”有以下两点,心愿大家能够在职业倒退初期避开: 频繁换工作职业倒退不连接每次换工作都须要付出大量的工夫老本去从新适应新的团队和公司,越简单的我的项目适应的工夫就会越久。况且,频繁跳槽意味着你的稳定性较差、危险较高,难免会让人对你产生这样或那样的狐疑。 职业倒退不连接这个问题也是硬伤之一,举个例子:如果你工作 3 年了,还是一名高级前端工程师。工作 5 年了,还是一名中级前端工程师的话。那么你的职业生涯中肯定有大部分工夫是在做着反复的工作的。这样的话,你的工作教训将会被砍掉大半,进而影响到你的职级评定和职业倒退。 ...

July 30, 2021 · 1 min · jiezi

关于面试:锁屏面试题百日百刷tomcat有哪几种connector运行模式

锁屏面试题百日百刷,每个工作日保持更新面试题。锁屏面试题app、小程序现已上线,官网地址:https://www.demosoftware.cc/#/introductionPage。已收录了每日更新的面试题的所有内容,还蕴含特色的解锁屏幕温习面试题、每日编程题目邮件推送等性能。让你在面试中后人一步,吊打面试官!接下来的是今日的面试题: ====Tomcat的缺省端口是多少,怎么批改?缺省端口80801)找到Tomcat目录下的conf文件夹2)进入conf文件夹外面找到server.xml文件 3)关上server.xml文件4)在server.xml文件外面找到下列信息 <Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" uriEncoding="utf-8"/> port="8080"改成你想要的端口 ====tomcat有哪几种Connector 运行模式(优化)? bio:传统的Java I/O操作,同步且阻塞IO。 maxThreads="150"//Tomcat应用线程来解决接管的每个申请。这个值示意Tomcat可创立的最大的线程 数。默认值200。能够依据机器的期间性能和内存大小调整,个别能够在400-500。最大能够在800左右。 minSpareThreads="25"---Tomcat初始化时创立的线程数。默认值4。如果以后没有闲暇线程,且没有超 过maxThreads,一次性创立的闲暇线程数量。Tomcat初始化时创立的线程数量也由此值设置。 maxSpareThreads="75"--一旦创立的线程超过这个值,Tomcat就会敞开不再须要的socket线程。默认 值50。一旦创立的线程超过此数值,Tomcat会敞开不再须要的线程。线程数能够大抵上用 “同时在线人数 每秒用户操作次数零碎均匀操作工夫” 来计算。 acceptCount="100"----指定当所有能够应用的解决申请的线程数都被应用时,能够放到解决队列中的请 求数,超过这个数的申请将不予解决。默认值10。如果以后可用线程数为0,则将申请放入解决队列中。这个 值限定了申请队列的大小,超过这个数值的申请将不予解决。 connectionTimeout="20000" --网络连接超时,默认值20000,单位:毫秒。设置为0示意永不超时, 这样设置有隐患的。通常可设置为30000毫秒。 nio:JDK1.4开始反对,同步阻塞或同步非阻塞IO。指定应用NIO模型来承受HTTP申请 protocol="org.apache.coyote.http11.Http11NioProtocol" 指定应用NIO模型来承受HTTP请 求。默认是BlockingIO,配置为protocol="HTTP/1.1" acceptorThreadCount="2" 应用NIO模型时接管线程的数目 aio(nio.2):JDK7开始反对,异步非阻塞IO。 apr:Tomcat将以JNI的模式调用Apache HTTP服务器的外围动态链接库来解决文件读取或网络传输操作, 从而大大地 进步Tomcat对动态文件的解决性能。<!-- <Connector connectionTimeout="20000" port="8000" protocol="HTTP/1.1" redirectPort="8443" uriEncoding="utf-8"/> --> <!-- protocol 启用 nio模式,(tomcat8默认应用的是nio)(apr模式利用零碎级异步io) --> <!-- minProcessors最小闲暇连接线程数--> <!-- maxProcessors最大连接线程数--> <!-- acceptCount容许的最大连接数,应大于等于maxProcessors--> <!-- enableLookups 如果为true,requst.getRemoteHost会执行DNS查找,反向解析ip对应域 名或主机名--> <Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol" connectionTimeout="20000" redirectPort="8443 maxThreads=“500” minSpareThreads=“100” maxSpareThreads=“200” acceptCount="200" enableLookups="false" /> 其余配置:maxHttpHeaderSize="8192" http申请头信息的最大水平,超过此长度的局部不予解决。个别8K。 URIEncoding="UTF-8" 指定Tomcat容器的URL编码格局。 disableUploadTimeout="true" 上传时是否应用超时机制 enableLookups="false"--是否反查域名,默认值为true。为了进步解决能力,应设置为false compression="on" 关上压缩性能 compressionMinSize="10240" 启用压缩的输入内容大小,默认为2KB noCompressionUserAgents="gozilla, traviata" 对于以下的浏览器,不启用压缩 compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain" 哪 些资源类型须要压缩 ...

July 22, 2021 · 1 min · jiezi

关于面试:如何用一套笔试题帮你精准初筛程序员

现在技术人才招聘难、招聘老本高曾经成为各大公司的广泛痛点,那怎么能力进步招聘成功率、降本增效呢?技术评估与在线 Coding 面试平台 ShowMeBug 采访了 30 余位业内资深技术面试官,并将以系列文章出现播种到的洞见。 有近 70% 的面试官示意,原本日常开发工作就很重,如果面试还要占据大量工夫,会十分影响工作产出。因而公司在招聘时必须千方百计进步面试成功率,能力实现效益最大化。 那该怎么进步技术面试的成功率呢?80% 的面试官示意,先用笔试题筛人再面试是个好伎俩。 要晓得技术面试波及的知识点又广又多,不可能在一次面试中全副问到。而如果口试题能够包含业务技术点、编程题、算法题,甚至是架构设计题。对于招聘初中级技术岗来说,用这样的口试题来筛人就十分适合,因为既考查到了根底,又考查到了深度,还考查了理论入手能力,能够无效筛选出靠谱候选人来进入面试。 比方, ShowMeBug 的口试题模板就布局了算法、CS 基本功、编程语言、解决问题和专业技能这五个能力版块,从多维度来评估候选人。 将上述能力维度进行拆分,次要考查的目标如下: 算法:对于根本的数据结构和算法的认知程度。CS基本功:操作系统,计算机网络等等。编程语言:对所应用的语言的相熟水平。专业技能:特定工具和畛域的技能,比方 Web 框架,数据库等等。解决问题:解决问题是一种兼具创造性、操作性的思维形式和智性流动,对于评估面试者的后劲十分有帮忙。这些维度尽管不能笼罩候选人的所有能力,然而曾经足够咱们判断候选人的综合能力了,防止了以“算法”为繁多维度来评估候选人。 一般而言,企业都应该针对招聘岗位制作一套这样的口试题,以便科学合理地筛选候选人。但如果资源无限,也没关系。ShowMeBug 提供了按岗位疾速创立试卷的性能,均匀只需五分钟即可创立一份试卷!试卷创立过程如丝般顺滑,招聘效率进一步晋升! 目前已有泛滥知名企业如百度、深服气、雪球抉择 ShowMeBug 进行技术招聘,晋升招聘工作效率和成功率,如果您也想体验 ShowMeBug 这种硅谷风行的技术招聘形式,欢送点此支付收费试用礼包! ShowMeBug 是一款数字化驱动的可记录、可剖析、可复盘的技术评估与在线 Coding 面试平台,利⽤创造性的实时互动代码协同技术和 WebRTC ⾳视频技术,还原实在的 IDE 编程环境,让用户体验硅谷风行的、像真正工作中一样的代码面试。

July 22, 2021 · 1 min · jiezi

关于面试:面试官连漏桶算法和令牌桶算法都不知道吗回去多看看书吧

锁屏面试题百日百刷,每个工作日保持更新面试题。锁屏面试题app、小程序现已上线,官网地址:https://www.demosoftware.cc/#/introductionPage。已收录了每日更新的面试题的所有内容,还蕴含特色的解锁屏幕温习面试题、每日编程题目邮件推送等性能。让你在面试中后人一步,吊打面试官!接下来的是今日的面试题: ====nginx中限流怎么做的?Nginx限流就是限度用户申请速度,避免服务器受不了限流有3种: 失常限度拜访频率(失常流量)突发限度拜访频率(突发流量)限度并发连接数Nginx的限流都是基于漏桶流算法实现三种限流算法1、失常限度拜访频率(失常流量):限度一个用户发送的申请,我Nginx多久接管一个申请。Nginx中应用ngx_http_limit_req_module模块来限度的拜访频率,限度的原理本质是基于漏桶算法原理来实现的。在nginx.conf配置文件中能够应用limit_req_zone命令及limit_req命令限度单个IP的申请解决频率。定义限流维度,一个用户一分钟一个申请进来,多余的全副漏掉 limit_req_zone $binary_remote_addr zone=one:10m rate=1r/m; 绑定限流维度 server{ location/seckill.html{ limit_req zone=zone; proxy_pass http://lj_seckill; } }1r/s代表1秒一个申请,1r/m一分钟接管一个申请, 如果Nginx这时还有他人的申请没有解决完,Nginx就会回绝解决该用户申请。 2、突发限度拜访频率(突发流量):限度一个用户发送的申请,我Nginx多久接管一个。下面的配置肯定水平能够限度拜访频率,然而也存在着一个问题:如果突发流量超出申请被回绝解决,无奈解决流动时候的突发流量,这时候应该如何进一步解决呢?Nginx提供burst参数联合nodelay参数能够解决流量突发的问题,能够设置能解决的超过设置的申请数外能额定解决的申请数。咱们能够将之前的例子增加burst参数以及nodelay参数:定义限流维度,一个用户一分钟一个申请进来,多余的全副漏掉 limit_req_zone $binary_remote_addr zone=one:10m rate=1r/m; 绑定限流维度 server{ location/seckill.html{ limit_req zone=zone burst=5 nodelay; proxy_pass http://lj_seckill; } }为什么就多了一个 burst=5 nodelay; 呢,多了这个能够代表Nginx对于一个用户的申请会立刻解决前五个,多余的就慢慢来落,没有其余用户的申请我就解决你的,有其余的申请的话我Nginx就漏掉不承受你的申请 3、限度并发连接数Nginx中的ngx_http_limit_conn_module模块提供了限度并发连接数的性能,能够应用limit_conn_zone指令以及limit_conn执行进行配置。接下来咱们能够通过一个简略的例子来看下:http { limit_conn_zone $binary_remote_addr zone=myip:10m; limit_conn_zone $server_name zone=myServerName:10m; }server { location / { limit_conn myip 10; limit_conn myServerName 100; rewrite / http://www.lijie.net permanent; } }下面配置了单个IP同时并发连贯数最多只能10个连贯,并且设置了整个虚构服务器同时最大并发数最多只能100个链接。当然,只有当申请的header被服务器解决后,虚构服务器的连接数才会计数。实际上限流个别都是基于漏桶算法和令牌桶算法实现的。 ====讲一讲漏桶流算法和令牌桶算法?1)漏桶算法是网络世界中流量整形或速率限度时常常应用的一种算法,它的次要目标是控制数据注入到网络的速率,平滑网络上的突发流量。漏桶算法提供了一种机制,通过它,突发流量能够被整形以便为网络提供一个稳固的流量。也就是咱们方才所讲的状况。漏桶算法提供的机制实际上就是方才的案例:突发流量会进入到一个漏桶,漏桶会依照咱们定义的速率顺次解决申请,如果水流过大也就是突发流量过大就会间接溢出,则多余的申请会被回绝。所以漏桶算法能控制数据的传输速率。2)令牌桶算法是网络流量整形和速率限度中最常应用的一种算法。典型状况下,令牌桶算法用来管制发送到网络上的数据的数目,并容许突发数据的发送。Google开源我的项目Guava中的RateLimiter应用的就是令牌桶控制算法。令牌桶算法的机制如下:存在一个大小固定的令牌桶,会以恒定的速率源源不断产生令牌。如果令牌耗费速率小于生产令牌的速度,令牌就会始终产生直至装满整个令牌桶。如果申请获取令牌失败则申请会被禁止拜访。 ====什么是动静拆散?为什么要做动静拆散?Nginx是当下最热的Web容器,网站优化的重要点在于动态化网站,网站动态化的关键点则是是动静拆散,动静拆散是让动静网站里的动静网页依据肯定规定把不变的资源和常常变的资源辨别开来,动静资源做好了拆分当前,咱们则依据动态资源的特点将其做缓存操作。让动态的资源只走动态资源服务器,动静的走动静的服务器Nginx的动态解决能力很强,然而动静解决能力有余,因而,在企业中罕用动静拆散技术。对于动态资源比方图片,js,css等文件,咱们则在反向代理服务器nginx中进行缓存。这样浏览器在申请一个动态资源时,代理服务器nginx就能够间接解决,无需将申请转发给后端服务器tomcat。 若用户申请的动静文件,比方servlet,jsp则转发给Tomcat服务器解决,从而实现动静拆散。这也是反向代理服务器的一个重要的作用。 更多面试题或学习资源可查看我主页或评论获取

July 20, 2021 · 1 min · jiezi

关于面试:赌你无法坚持看完的nginx配置文件解析

锁屏面试题百日百刷,每个工作日保持更新面试题。锁屏面试题app、小程序现已上线,官网地址:https://www.demosoftware.cc/#/introductionPage。已收录了每日更新的面试题的所有内容,还蕴含特色的解锁屏幕温习面试题、每日编程题目邮件推送等性能。让你在面试中后人一步,吊打面试官!接下来的是今日的面试题: ====什么是Nginx?Nginx是一个 轻量级/高性能的反向代理Web服务器,他实现十分高效的反向代理、负载平衡,他能够解决2-3万并发连接数,官网监测能反对5万并发。 ====为什么要用Nginx?跨平台、配置简略、方向代理、高并发连贯:解决2-3万并发连接数,官网监测能反对5万并发.内存耗费小:开启10个nginx才占150M内存 ,nginx解决动态文件好,消耗内存少,而且Nginx内置的健康检查性能:如果有一个服务器宕机,会做一个健康检查,再发送的申请就不会发送到宕机的服务器了。从新将申请提交到其余的节点上。应用Nginx的话还能: 节俭宽带:反对GZIP压缩,能够增加浏览器本地缓存稳定性高:宕机的概率十分小接管用户申请是异步的====为什么Nginx性能这么高?因为他的事件处理机制:异步非阻塞事件处理机制:使用了epoll模型,提供了一个队列,排队解决 ====Nginx怎么解决申请的?nginx接管一个申请后,首先由listen和server_name指令匹配server模块,再匹配server模块里的location,location就是理论地址server { # 第一个Server区块开始,示意一个独立的虚拟主机站点 listen 80; # 提供服务的端口,默认80 server_name localhost; # 提供服务的域名主机名 location / { 第一个location区块开始root html; # 站点的根目录,相当于Nginx的装置目录 index index.html index.htm; # 默认的首页文件,多个用空格离开 } # 第一个location区块后果 } ====什么是正向代理和反向代理?(重点)1)正向代理暗藏实在客户端正向代理,就是一个位于客户端和原始服务器之前的服务器,为了从原始服务器获得内容,客户端向代理发送一个申请并且指定指标(原始服务器),而后代理向原始服务器转交申请并将取得的内容返回给客户端,客户端能力应用正向代理。比方咱们要去拜访某个网站,咱们间接拜访不通,那么咱们就能够找一个代理服务器为咱们服务,咱们通过代理服务器申请到这个网站。对于这个网站而言他只晓得有一个服务器拜访了本人,并不知道你拜访了他。 2)反向代理暗藏实在服务端反向代理服务器位于用户与指标服务器之间,然而对于用户而言,反向代理服务器就相当于指标服务器,即用户间接拜访反向代理服务器就能够取得指标服务器的资源。同时,用户不须要晓得指标服务器的地址,也毋庸在用户端作任何设定。反向代理服务器通常可用来作为Web减速,即应用反向代理作为Web服务器的前置机来升高网络和服务器的负载,进步拜访效率。反向代理形式是指以代理服务器来接管internet网上的连贯申请,而后将申请转发给外部网络上的服务器,并从服务器上失去的后果返回给internet上申请连贯的客户端,此时代理服务器对外就体现为一个节点服务器。 ====应用反向代理服务器的长处是什么?反向代理服务器能够暗藏源服务器的存在和特色。它充当互联网云和web服务器之间的中间层。这对于平安方面来说是很好的,特地是当您应用web托管服务时。 ====Nginx的优缺点?长处: 占内存小,可实现高并发连贯,解决响应快可实现http服务器、虚拟主机、反向代理、负载平衡Nginx配置简略能够不裸露正式的服务器IP地址毛病: 动静解决差:nginx解决动态文件好,消耗内存少,然而解决动静页面则很鸡肋,当初个别前端用nginx作为反向代理抗住压力====Nginx利用场景? http服务器。Nginx是一个http服务能够独立提供http服务。能够做网页动态服务器。虚拟主机。能够实现在一台服务器虚构出多个网站,例如集体网站应用的虚拟机。反向代理,负载平衡。当网站的访问量达到肯定水平后,单台服务器不能满足用户的申请时,须要用多台服务器集群能够应用nginx做反向代理。并且多台服务器能够均匀分担负载,不会因为某台服务器负载高宕机而某台服务器闲置的状况。nginx中也能够配置平安治理、比方能够应用Nginx搭建API接口网关,对每个接口服务进行拦挡。====Nginx目录构造有哪些?(重点) ├── client_body_temp├── conf # Nginx所有配置文件的目录 │ ├── fastcgi.conf # fastcgi相干参数的配置文件 │ ├── fastcgi.conf.default # fastcgi.conf的原始备份文件 │ ├── fastcgi_params # fastcgi的参数文件 │ ├── fastcgi_params.default │ ├── koi-utf │ ├── koi-win │ ├── mime.types # 媒体类型 │ ├── mime.types.default │ ├── nginx.conf # Nginx主配置文件 │ ├── nginx.conf.default │ ├── scgi_params # scgi相干参数文件 │ ├── scgi_params.default │ ├── uwsgi_params # uwsgi相干参数文件 │ ├── uwsgi_params.default │ └── win-utf ├── fastcgi_temp # fastcgi长期数据目录 ├── html # Nginx默认站点目录 │ ├── 50x.html # 谬误页面优雅代替显示文件,例如当呈现502谬误时会调 用此页面 │ └── index.html # 默认的首页文件 ├── logs # Nginx日志目录 │ ├── access.log # 拜访日志文件 │ ├── error.log # 谬误日志文件 │ └── nginx.pid # pid文件,Nginx过程启动后,会把所有过程的ID号写 到此文件 ├── proxy_temp # 长期目录 ├── sbin # Nginx命令目录 │ └── nginx # Nginx的启动命令 ├── scgi_temp # 长期目录 └── uwsgi_temp # 长期目录 ...

July 19, 2021 · 1 min · jiezi

关于面试:字节跳动面试官你有份offer待领取

引文本文会介绍一个二本学历一般公司小小开发如何三年迈进字节跳动大门,次要讲的是办法、思维模式、认知降级、学习、技巧,对每个人都实用,对非技术岗位的打工人也通用。 介绍单刀直入,笔者在往年3月份胜利拿到了字节前端offer,然而我的经验很平庸,来自一个普普通通的二本,并且在中小公司混迹了三年,还换了3家公司,有1家是被pua每天朝8晚11上6天,有1家还是被解雇的,因为一周要做50个页面就和PM撕逼就差打起来,能够说这种经验想进大厂真的是天方夜谭。你要是方才很同意这种想法,我感觉能够缓缓转换下思维模式了,我强烈推荐看看这段谈话,人生的剧本90%都不是咱们本人抉择的,包含出身、境遇、导师等都没法本人抉择,咱们要做的就是致力表演好本人的角色;如果二本学历刚毕业就想着进大厂,往往会因为指标太高步子太大而扯到,咱们要搞清楚大厂须要什么样的人,本人间隔这样的人还有哪些差距,而后制订指标和学习打算一点点致力,找一些胜利的大厂经验文章,去模拟去好高鹜远做,比方参考本篇文章笔者进大厂的实在历程。 面试四因素简历一份好的简历能让你跳出学历的枷锁,大厂HR一天要筛选几百份简历,精炼简洁肯定是首要,构造排序也是很重要,重要的内容往上放,有以下几个方面能够改良: 构造 介绍:尽量裸露要害信息,比方会的技术栈、带过团队、集体学习办法、我的项目亮点难点工作经验:清晰明确的写出工作干过的事件,承当的角色、集体奉献挑些有挑战的牛逼的写上我的项目经验:次要是介绍分明做了什么,负责了什么角色,写出我的项目的难点和怎么解决的,我的项目亮点,怎么实现的,原理是什么集体技能:从理解、相熟、把握/精通三个维度写,理解的倡议不写,被问到反而减分,把握的肯定是会原理,有本人的认知加分项介绍:社区文章、gitlab、博客,不肯定全写,挑有内容有深度的写一两个就行获奖作品:不是国家级的倡议不写语言组织 用专业名词保持一致,每个构造下的内容构造都要清晰,比方我的项目经验上面都能够再分成我的项目角色、我的项目概述、我的项目亮点/难点、集体奉献四个维度,语言要简略通顺有逻辑 排版款式 黑白简历和黑白简历,有照片和没照片,这些细节往往会决定面试官对你的第一印象,至多阐明黑白有照片排版好的同学是比其他人更加认真、仔细、器重面试 根底功底文治学的再好,根底不扎实,真正上场打的时候就没法灵活应变(参考马老师被one punch)。街霸5不晓得大家有没有玩过,一个角色的连招技能表往往有好几页,然而真正能使用好要害的技能,能打出挫伤最高的组合的人,肯定是对这些技能都烂熟于心,并且有了本人的思考,练就出官网都意想不到的精彩Combo。比方面试官要问你一个知识点,你如果有本人的思考,就会从知识点的根底概念、使用场景、实现原理、长处毛病、相干常识等方面来答复,这就是有本人的思考,这种人必然是面试官很观赏的人。试想歌手如果一味模拟他人,但没有本人特有的唱法,没有作词作曲的能力,没有一套本人的体系,那就没方法在挑剔的人群中火那么多年,顶多只能火一两年(除非有脑残粉)。 举个经典面试题例子,说一下继承 根底普通级:会说出继承的概念,原型继承、经典继承、组合继承、寄生组合式继承、es5继承的其中一种是如何实现,和背题没啥区别有本人认知级:先说原型继承如何实现,并说出这种继承的问题是援用类型的属性被所有实例共享和在创立 Child 的实例时不能向Parent传参,而后说下借用构造函数(经典继承),他解决了原型继承的两个问题,然而又有新的问题是办法都在构造函数中定义,每次创立实例都会创立一遍办法,那能解决这个问题的天然是组合继承,那组合式继承就没有毛病了吗?当然是还能优化!组合继承最大的毛病是会调用两次父构造函数,如何解决呢,把寄生组合式继承搬出来说明确吧,这样有体系的常识认知是十分重要的,不仅能增强本人对知识点的把握,还能面试场上一骑绝尘,一听就晓得你很NB!我的项目你做的我的项目NB,那不重要,我的项目因为你而NB,那才是真的NB跟根底一样重要的就是你的我的项目,对于做过的我的项目,至多要形容进去以下几个点1.我的项目简介 一段清晰的形容:让面试官理解是干嘛的,做了什么业务,用户群体是谁,你对产品有多理解应用的技术栈:晓得你纯熟什么,好用人所长2.负责角色 至多写一个我的项目中的角色:如主开发,参加开发,次要负责人,架构师3.我的项目难点 知难而能改良:做一个我的项目下来肯定会遇到难点,可能好好复盘我的项目的人,肯定晓得难点在哪,如何解决的,有没有更优的解计划,遇到的阻塞点,如何协调之类的4.我的项目亮点 加分加分加分:把用到的最牛的技术,改良他人的源码,和同类型的我的项目的劣势等全写上,不肯定是本人做的,但肯定要相熟怎么做的闪光点开源奉献、社区文章、上线的我的项目、酷炫的集体网站等等都搬出来,筹备好几个最NB的来讲,最好把要讲的写下来好好组织下语言多训练下,兵士上战场,还得真枪实弹演习下。还有还有!!什么学生会长、组这社团活动、志愿者这些我见一个砍一个,面试官是你的男朋友吗,这么关怀你的大学生存?->_- 我是如何筹备的制订指标布局早在一年前就定好了要去大厂的指标,过后还不大清楚大厂须要什么样的人,一个扭转的契机是接触到前端早早聊公布的文章《你为什么迟迟进不去大厂》,总结来说,就是不要因为本身学历、非科班、转岗等因素不可一世,你要做的是用90%的致力来填补这90%的缺点,比方晋升你的社区影响力,公布/参加热门开源作品,为公司我的项目做到极致的优化、增强团队治理能力等等。于是便拨云见雾,充满信心去一步一步布局如何进大厂,别离从优化简历、夯实面试知识点、训练手写代码晋升代码能力、积极参与团队分享(训练语言组织能力和沟通力)、踊跃承当有挑战的我的项目晋升综合能力(SPA转微前端)、优化团队我的项目(微前端)、放弃浏览技术文章晋升认知和常识广度(每天刷掘金首页)、积极参与开源我的项目改良(参加了开源微前端我的项目 qiankun的代码奉献)、公布技术文章晋升影响力和写作能力(公布了分析qiankun外围原理等文章)这些方面来一点点晋升本人。 根底知识点脑图梳理用脑图梳理芜杂的知识点,不仅有助于记忆,还疾速定位要找的常识和跳转链接文章,用蜘蛛匍匐的形式把每个知识点延展开来,这和谷歌搜索引擎算法一模一样,你甚至能在脑子里存储这张知识点图谱,因为这耳濡目染地用到了联想和关键词记忆法,通过设置优先级和完成度,来增强关键点的印象,而再试想你小时候印象最深的事件,是不是都有一个“动人”的场景,而这个场景就是你联想到的一段段印象粗浅的记忆画面的拼接,同样,脑图里的知识点也能以画面的模式出现在脑海,你甚至能够把脑子当成一个画廊宫殿,给每个宫殿一个房间来放一个知识点以及和他相干的常识图谱。 建设本人的知识点文库把一些知识点用问答的模式整顿进去,多组织语言多改进构造,改到最好的版本而后梳理和记忆,这样不仅能帮你梳理知识结构,也能模仿面试场景,本人做本人的面试官,试着本人问本人这些问题,看是否给出称心答案,我发一个整顿的知识库地址能够参考(留神不会的没有答案,有善于和不善于的很失常,重要的是把善于的货色做到极致,如果面试问到不善于的,能够间接说不会,不要不懂装懂,坦诚不装) 我的前端问答知识库 代码手写列了常见的手写代码,目标都不是看你会不会写,而是看你怎么写的NB,比方节流和防抖,个别人就间接写一个闭包完事,然而真正NB的,是写出上面这种神仙代码(能秒懂的也是仙人) function throttle(func, wait, options) { var timeout, context, args, result; var previous = 0; if (!options) options = {}; var later = function() { previous = options.leading === false ? 0 : new Date().getTime(); timeout = null; func.apply(context, args); if (!timeout) context = args = null; }; var throttled = function() { var now = new Date().getTime(); if (!previous && options.leading === false) previous = now; var remaining = wait - (now - previous); context = this; args = arguments; if (remaining <= 0 || remaining > wait) { if (timeout) { clearTimeout(timeout); timeout = null; } previous = now; func.apply(context, args); if (!timeout) context = args = null; } else if (!timeout && options.trailing !== false) { timeout = setTimeout(later, remaining); } }; return throttled;}手写合乎PromiseA+标准的代码手写观察者模式代码手写vue外围流程源码:实现响应式手写常考js代码:new、call、bind、apply、继承、柯里化、闭包、节流、防抖……手写常考css代码:所有div居中的实现、双飞翼/圣杯布局的所有实现、革除浮动的所有实现…… ...

July 19, 2021 · 2 min · jiezi

关于面试:面试又挂了大厂面试到底看重什么

前言:最近跟我的一些读者交换,有一位读者的经验让我记忆粗浅: “有一次和大学同学聚会,和几个在BAT的同学聊了聊技术,发现自己在守业公司这几年,齐全是吃老本的状态,没有什么机会精进技术,同样是工作了三年,和同学的差距越来越大”我持续问他,他说真正让他受打击的是这个月的一次面试。 “面的是一个大厂,面试官问了很多问题,一大半的问题我都是只知其一;不知其二,答复上来问题也是特没底。 大略回顾了这场面试:上来先是问了网络基础知识,TCP/IP模型、对等模型、IP协定等等,这部分我还算筹备的充沛。第二局部开始简单了,次要是Web应用程序技术、平安工具-信息收集、浸透测试的问题,像是SQL注入、破绽扫描,验证码平安,业务平安问题?我之前工作上经验的少,加上本人技术储备肤浅,到这部分时我就感觉本人快凉了。面试到最初,问了的,过后曾经懵了,我只记得一个问题:你晓得怎么挖破绽吗?我。。。。“ 面完后他说,感觉本人在技术上欠了很多债,最惨的是,在这之前他基本不晓得。 听了这位读者的经验,于是有了明天这篇文章。很多工作了1-3年的平安人,想够一够 3w月薪的岗位,但在底层技术上却有很大的问题: 毕业几年,外表上用过很多技术,但都没能深刻学习,一年的工作教训,干了好几年。后果就是遇到理论问题时无从下手,最终还是走着一般工程师的路线,和高手的间隔越来越远。 都说三年是程序员的一个坎,是否降职或者进步本人的外围竞争力,这几年就非常要害。 技术倒退的这么快,从哪些方面开始学习,能力达到高级工程师程度,最初进阶到平安架构师/技术专家?我总结了这 8 大能力—— 熟练掌握各种浸透测试工具并且对其原理有深刻理解(不仅限于Burpsuite、sqlmap、appscan、AWVS、nmap、MSF,cobalt strike 等等)至多把握一门开发语言,操作语言不限 C/C++、Golang、Python、Java 都可,要求至多能上手写代码熟练掌握常见的攻防技术以及对相干破绽( web 或二进制)的原理有深刻的了解具备丰盛的实战经验可独立实现浸透测试工作能从防御者或者运维人员的角度思考攻防问题,对后浸透有深刻理解者更佳对平安有浓重的趣味和较强的独立钻研能力,有良好的团队精神具备浸透大型指标的教训,特地是善于内网浸透这一块的。相熟常见 Windows,Linux 平安机制,具备肯定的平安开发能力以及problem solving能力当然,想要深刻学习并把握这些能力,并不简略。对于如何学习,做程序员这一行什么工作强度大家都懂,然而不论工作多忙,每周也要雷打不动的抽出 10 小时用来学习,不出半年,你就能看出变动。 我这里有一份网络安全经典解析视频和滴滴、美团等大厂的面试真题,外面有很多浸透测试面试的必考点、高频点、加薪点,看看大厂的浸透测试工程师都有哪些要求,知己知彼能力百战不殆。想要的同学能够点击下方支付 【材料获取】如果没有很好的自律性,没人领导,自觉自学大概率就是浪费时间精力,因为不仅效率低、学习没有体系,学完了也没方法保障待业 那么要怎么要能力零碎学习 而后吊打面试官呢? 上面我给大家整顿一些浸透测试/网络安全工程师大厂热门面试题 Web 平安次要包含 HTTP 协定、注入破绽、XSS 破绽、SSRF 破绽、CSRF 破绽、文件解决破绽、访问控制破绽、会话治理破绽等。 [](https://shimo.im/docs/TdpXTY6... 1.1 HTTP协定http是一个简略的申请-响应协定,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的音讯以及失去什么样的响应。申请和响应音讯的头以ASCII码模式给出;而音讯内容则具备一个相似MIME的格局。 学习要点: 申请办法: OPTIONS, PUT, DELETE,和TRACE 办法的基本概念HTTP申请的根本办法和产生的申请后果HTTP 状态码的标准HTTP 状态码的作用常见的 HTTP 状态码HTTP 状态码 2,3,4,5 代表的含意用计算机语言获取 HTTP 状态码的办法GET 申请的规范格局POST 申请提交表单,上传文件的办法HEAD 申请与 GET 申请的区别常见的 HTTP 响应头HTTP 响应头的作用HTTP 响应头的名称HTTP 响应头的格局URL 的基本概念URL 的构造URL 编码格局1.2 注入破绽1.2.1 SQL注入 ...

July 14, 2021 · 2 min · jiezi

关于面试:锁屏面试题百日百刷网络篇一

锁屏面试题百日百刷,每个工作日保持更新面试题。锁屏面试题app、小程序现已上线,官网地址:https://www.demosoftware.cc/#/introductionPage。已收录了每日更新的面试题的所有内容,还蕴含特色的解锁屏幕温习面试题、每日编程题目邮件推送等性能。让你在面试中后人一步,吊打面试官!接下来的是今日的面试题: ====什么是网络编程?网络编程的实质是多台计算机之间的数据交换。数据传递自身没有多大的难度,不就是把一个设施中的数据发送给其余设施,而后承受另外一个设施反馈的数据。当初的网络编程基本上都是基于申请/响应形式的,也就是一个设施发送申请数据给另外一个,而后接管另一个设施的反馈。在网络编程中,发动连贯程序,也就是发送第一次申请的程序,被称作客户端(Client),期待其余程序连贯的程序被称作服务器(Server)。客户端程序能够在须要的时候启动,而服务器为了可能时刻相应连贯,则须要始终启动。 ====网络编程中两个次要的问题? 一个是如何精确的定位网络上一台或多台主机,另一个就是找到主机后如何牢靠高效的进行数据传输。在TCP/IP协定中IP层次要负责网络主机的定位,数据传输的路由,由IP地址能够惟一地确定Internet上的一台主机。而TCP层则提供面向利用的牢靠(TCP)的或非牢靠(UDP)的数据传输机制,这是网络编程的次要对象,个别不须要关怀IP层是如何解决数据的。目前较为风行的网络编程模型是客户机/服务器(C/S)构造。即通信单方一方作为服务器期待客户提出申请并予以响应。客户则在须要服务时向服务器提 出申请。服务器个别作为守护过程始终运行,监听网络端口,一旦有客户申请,就会启动一个服务过程来响应该客户,同时本人持续监听服务端口,使起初的客户也能及时失去服务。====网络协议是什么?在计算机网络要做到东倒西歪的替换数据,就必须恪守一些当时约定好的规定,比方替换数据的格局、是否须要发送一个应答信息。这些规定被称为网络协议 ====为什么要对网络协议分层?1)简化问题难度和复杂度。因为各层之间独立,咱们能够宰割大问题为小问题。2)灵活性好。当其中一层的技术变动时,只有层间接口关系放弃不变,其余层不受影响。3)易于实现和保护。4)促成标准化工作。离开后,每层性能能够绝对简略地被形容 ====讲一讲计算机网络体系结构?1)OSI参考模型OSI(Open System Interconnect),即开放式系统互联。个别都叫OSI参考模型,是ISO(国际标准化组织)组织在1985年钻研的网络互连模型。ISO为了更好的使网络应用更为遍及,推出了OSI参考模型,这样所有的公司都依照对立的规范来指定本人的网络,就能够互通互联了。OSI定义了网络互连的七层框架(物理层、数据链路层、网络层、传输层、会话层、表示层、应用层)。2)TCP/IP参考模型TCP/IP四层协定(数据链路层、网络层、传输层、应用层) 应用层 应用层最靠近用户的一层,是为计算机用户提供利用接口,也为用户间接提供各种网络服务。咱们常见应用层的网络服务协定有:HTTP,HTTPS,FTP,TELNET等。传输层 建设了主机端到端的链接,传输层的作用是为下层协定提供端到端的牢靠和通明的数据传输服务,包含解决差错控制和流量管制等问题。该层向高层屏蔽了上层数据通信的细节,使高层用户看到的只是在两个传输实体间的一条主机到主机的、可由用户管制和设定的、牢靠的数据通路。咱们通常说的,TCP UDP就是在这一层。端口号既是这里的“端”。网络层 本层通过IP寻址来建设两个节点之间的连贯,为源端的运输层送来的分组,抉择适合的路由和替换节点,正确无误地依照地址传送给目标端的运输层。就是通常说的IP层。这一层就是咱们常常说的IP协定层。IP协定是Internet的根底。数据链路层 通过一些规程或协定来管制这些数据的传输,以保障被传输数据的正确性。实现这些规程或协定的 硬件 和软件加到物理线路,这样就形成了数据链路。====什么是TCP/IP和UDP?TCP/IP即传输管制/网络协议,是面向连贯的协定,发送数据前要先建设连贯(发送方和接管方的成对的两个之间必须建 立连贯),TCP提供牢靠的服务,也就是说,通过TCP连贯传输的数据不会失落,没有反复,并且按程序达到UDP它是属于TCP/IP协定族中的一种。是无连贯的协定,发送数据前不须要建设连贯,是没有可靠性的协定。因为不须要建设连贯所以能够在在网络上以任何可能的门路传输,因而是否达到目的地,达到目的地的工夫以及内容的正确性都是不能被保障的。 ====TCP与UDP区别?1)TCP是面向连贯的协定,发送数据前要先建设连贯,TCP提供牢靠的服务,也就是说,通过TCP连贯传输的数据不会失落,没有反复,并且按程序达到;2)UDP是无连贯的协定,发送数据前不须要建设连贯,是没有可靠性;3)TCP通信相似于于要打个电话,接通了,确认身份后,才开始进行通行;4)UDP通信相似于学校播送,靠着播送播报间接进行通信。5)TCP只反对点对点通信,UDP反对一对一、一对多、多对一、多对多;6)TCP是面向字节流的,UDP是面向报文的; 面向字节流是指发送数据时以字节为单位,一个数据包能够拆分成若干组进行发送,而UDP一个报文只能一次发完。7)TCP首部开销(20字节)比UDP首部开销(8字节)要大8)UDP 的主机不须要维持简单的连贯状态表 更多面试题或学习资源可查看我主页或评论获取

July 13, 2021 · 1 min · jiezi

关于面试:ShowMeBug带你轻松招聘

从简略开始,抉择一个工具,组织一场批量口试,帮你疾速筛选海量简历。当初注册,取得一个轻松招聘的机会: https://www.showmebug.com/write#技术口试 #ShowMeBug #coding面试 #校招

July 12, 2021 · 1 min · jiezi

关于面试:面试总结项目经理持续更新

1、自我介绍您好, 我叫XX,来自黑龙江哈尔滨,17年来北京,刚开始做技术,由19年开始转做项目管理,目前来说我所在的公司的产品为企业外部管理系统,大抵是以团体的业务流程建设业务模型,而后提供给全团体内勤搭档应用,以便更简捷、高效的实现企业外部相应工作。我的日常工作是: 1、我的项目需要跟踪和我的项目的需要调研。 2、我的项目启动过程的执行,召开我的项目启动会,公布我的项目工作。 3、我的项目执行中的问题解决,和我的项目品质与进度的监控。 4、我的项目完结后的我的项目材料提交和总结会议。2、介绍一下较重要的一个我的项目较重要的我的项目为“XXXX零碎”,这个我的项目次要目标为解决因为团体及子公司制度治理缺失,造成了公司制度凌乱,影响公司运行效率,危险事件频发的问题。XXXX零碎不单蕴含制度库,也蕴含制度草拟、会签、审批、评估等在内的全生命周期治理的残缺机制。整体框架由Java、Vue组合搭建。我次要负责的就是我的项目的整个周期,从启动,布局,执行,到验证完结整体的把控。3、工作中遇到的问题工作中遇到的问题肯定有需要变更,这个是所有的项目经理都会遇到的问题。我的计划是看需要的重要度和我的项目基准,如果需要优先级较高不影响基准,我会走变更流程。如果优先级不高,我会跟业务方磋商看是否能够放到下一个迭代的版本中进行。如果影响到了我的项目的基准,那我会先评估影响,而后再提交到下级领导批示是否要变更。4、如何解决工作中团队的人际关系,遇到不配合你工作的共事,应该如何应答在日常工作中常常会遇到这种状况,目前很多时候都在解决两类人的关系:程序员和产品,程序员的前端和后盾。个别我的办法是:把他们拉到同一个房间去沟通,做中间人去调解,因为大家都是要做事的,所以总会找到一个折中的方法。我也有遇到不配合本人工作的共事,我是用本人的方法解决的,就是,没有一顿饭解决不了的问题,如果有,那就再喝点酒。吃个饭,聊一下。很多时候都是沟通没到位,说开了就好了。5、项目管理中,你认为哪些最重要我感觉项目管理中,沟通是最重要的,因为不论做什么我的项目,咱们必须要在规定的工夫,保质保量的实现要做的事件。其中都少不了沟通。对上和对下,都须要不同的沟通办法和形式。6、为什么到职我在泰康的工作其实是十分欢快,在那里的我成长了很多,然而因为目前的职级为研发主管,出于职业规划思考,还是想找一个项目经理的工作机会,所以抉择了到职。7、如何获取产品需要1、用户访谈 用户访谈前:明确访谈指标、尽量面对面访谈、抉择适合的场地、对访谈中进行细分。 用户访谈时:简略给受访用户论述访谈的内容和目标、激励受访用户讲故事、让受访用户对访谈中的问题进行排序、让受访者尝试提供解决方案。 用户访谈后:给予用户肯定的处分、问题整顿、疑难点趁热打铁、需要开掘。2、问卷调研 问卷设计:确定调研指标、确定指标用户。 调研形式:线上投放问卷、线下投放问卷。 问卷总结:线上投放的个别平台均会有统计性能,通过统计报告即可实现需要剖析开掘、线下投放的须要将问卷后果通过Excel统计整顿后进行需要剖析开掘。3、业务剖析 产品经理对企业各条业务线的进行体验,包含现有业务流程和现有工具所能提供的能力,进行业务建模,形象演绎后提炼出优化点。在做业务剖析的时候还要思考企业的策略、企业的倒退方向、企业的盈利模式等,找到与公司倒退策略相符合的产品需要。8、如何管制我的项目范畴1、制订范畴打算:范畴计划编制是将产生我的项目产品所需进行的我的项目工作(我的项目范畴)渐进明细和归档的过程。不同的打算详尽水平不一样,其中范畴阐明和范畴治理打算必须蕴含在内。 范畴阐明:在我的项目参加人之间确认或建设了一个我的项目范畴的共识,作为将来我的项目决策的文档基准。范畴阐明中至多要阐明我的项目论证、我的项目产品、我的项目可交付成绩和我的项目指标。 范畴治理打算:形容我的项目范畴如何进行治理,我的项目范畴怎么变动能力与我的项目要求相一致等问题。它应该包含一个对我的项目范畴预期的稳固而进行的评估,以及对变动范畴怎么确定,变动应归为哪一类等问题的分明形容。2、我的项目合成:取合成的伎俩把次要的可交付成绩分成更容易治理的单元,最终得出我的项目的工作合成构造(WBS)。 罕用的形式:以我的项目进度为根据划分WBS,第一层是大的我的项目成绩框架,每层上面再把工作合成,这种形式的长处是联合进度划分直观,工夫感强,评审中容易发现脱漏或多出的局部,也更容易被大多数人了解。3、范畴变更:项目经理在治理过程中必须通过监督绩效报告、以后停顿状况等来剖析和预测可能呈现的范畴变更,在产生范畴变更时遵循标准的变更程序来治理变更。9、如何进行我的项目变更管制1、谁有权确认变更:当时明确客户方有权提出变更申请的人员和项目组有权受理变更的人员,并且变更申请必须有书面材料。2、什么样的变更须要执行:必须对客户提出的范畴变更进行审核,决定哪些变更须要批改和何时批改。用户的镀金需要能够延期解决甚至不思考,用户的新增需要如果不是影响到外围业务的实现,也能够安顿在现有性能的欠缺之后。3、变更的影响多大:必须评估变更的代价和对我的项目的影响,并且要让客户理解到变更可能会产生的问题,一起判断变更是否仍然要进行。4、客户是否承受变更的代价:让客户对于显著的变更做出确认,个别是签字确认。这样既可避免频繁变更,也让客户意识到变更带来的工作量加大是我的项目延期的起因。5、变更进行时必须保障最终计划的唯一性和完整性。同时,要对所有变更进行跟踪和验证,确保变更按要求实现。10、如何管制我的项目进度1、制订详尽的、可行的我的项目进度的基准打算 进度打算包含:工作、资源、工夫等三局部内容。工作来源于工作合成构造和流动定义。要进行无效的进度管制,就要求必须有粗疏的、可执行的、可查看的、可管制的流动定义(工作)。2、建设无效的危险防备打算 a、制订一套项目风险防备的体系,蕴含:危险辨认,危险确认,危险应答等方面的残缺内容。 b、针对我的项目,提出项目风险的协调负责人,及相应的协调措施。 c、在项目组外部建设对危险辨认的非凡机制,如:每个人能够依据本人的工作内容,定期列举危险指数最高的5个危险,并提出相应的应答计划。3、建设良好的项目组外部及我的项目干系人之间的沟通管理制度 a、及时与我的项目客户进行沟通,理解其对于我的项目的非凡进度要求,以履行对工作工作的非凡解决。 b、对于须要项目组之外的资源进行配合的工作,及时通过无效的沟通路径提交给相干人员,以提前筹备好配合的工作,省得影响我的项目的停顿。 c、充分发挥我的项目组成员的作用,使之参加到问题解决当中来,如我的项目偏差的解决,危险的预防等。 d、定期举办我的项目停顿的沟通会议,理解各成员的工作执行状况,通报我的项目的整体停顿状况。4、进行停顿查看,并针对查看后果采取相应的对策 进度查看工作能够分为四个步骤执行: a、收集我的项目工作的停顿信息 办法:进度汇报和进度查验。 须要收集的我的项目停顿信息:工作执行情况和变更信息。 b、进行我的项目理论停顿信息与进度基准打算的比拟。 c、针对呈现的进度偏差,寻求最佳解决方案。 d、执行进度调整后的进度打算和确定的解决方案。5、预见性的发现和解决我的项目施行中的问题11、如何管制我的项目品质1、需要的时候做需要评审。2、概要设计时体系结构的评审、屡次探讨。3、具体设计尽可能对立、标准。4、测试要在需要和设计阶段就开始(研发中CodeReview)。5、对重要的性能实现代码做CODEREVIEW(上线前)。6、版本控制。7、文档要做到标准、虚浮。8、齐备的测试集。12、如何解决比拟强势的用户适当弱势先聆听需要,再做出正当评估,决策上及时汇报领导,在波及到底线的指标要强势维持,不能逞强。和客户沟通需要时,管控好范畴,做且只在合同内的需要,不镀金也不蔓延。

July 11, 2021 · 1 min · jiezi

关于面试:锁屏面试题百日百刷Redis篇二

锁屏面试题百日百刷,每个工作日保持更新面试题。锁屏面试题app、小程序现已上线,已收录了每日更新的面试题的所有内容,还蕴含特色的解锁屏幕温习面试题、每日编程题目邮件推送等性能。让你在面试中后人一步,吊打面试官!接下来的是今日的面试题: ====Redis 的优缺点?长处:a) 性能极高 – Redis 能反对超过 100K+ 每秒的读写频率。b) 丰盛的数据类型 – Redis 反对二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。c) 原子 – Redis 的所有操作都是原子性的,同时 Redis 还反对对几个操作全并后的原子性执行。d)丰盛的个性 – Redis 还反对 publish/subscribe, 告诉, key 过期等等个性。毛病: a)因为是内存数据库,所以,单台机器,存储的数据量,跟机器自身的内存大小无关。尽管 redis 自身有 key 过期策略,然而还是须要提前预估和节约内存。如果内存增长过快,须要定期删除数据。 b)如果进行残缺重同步,因为须要生成 rdb 文件,并进行传输,会占用主机的 CPU,并会耗费现网的带宽。不过 redis2.8 版本,曾经有局部重同步的性能,然而还是有可能有残缺重同步的。比方,新上线的备机。 c)批改配置文件,进行重启,将硬盘中的数据加载进内存,工夫比拟久。在这个过程中,redis 不能提供服务。 ====讲一讲Redis 的长久化?RDB 长久化:该机制能够在指定的工夫距离内生成数据集的工夫点快照(point-in-time snapshot)。AOF 长久化:记录服务器执行的所有写操作命令,并在服务器启动时,通过从新执行这些命令来还原数据集。AOF 文件中的命令全副以 Redis 协定的格局来保留,新命令会被追加到文件的开端。 Redis 还能够在后盾对 AOF 文件进行重写(rewrite),使得 AOF 文件的体积不会超出保留数据集状态所需的理论大小无长久化:让数据只在服务器运行时存在。同时利用 AOF 和 RDB:当 Redis 重启时, 它会优先应用 AOF 文件来还原数据集, 因为 AOF 文件保留的数据集通常比 RDB 文件所保留的数据集更残缺。 ...

July 9, 2021 · 2 min · jiezi

关于面试:为什么我建议你用ShowMeBug

• 简洁的操作界面,无论HR、面试官还是候选人,都能疾速上手;• 99%的稳定性,随时随地高效面试;• 真正还原理论工作中的编程场景,让候选人领有了极佳的面试体验;• 面试过程全记录,绝不错过候选人的每一个闪光点。 更多实用功能,欢送大家收费试用:https://www.showmebug.com/

July 9, 2021 · 1 min · jiezi

关于面试:锁屏面试题百日百刷Mybatis篇一

锁屏面试题百日百刷,每个工作日保持更新面试题。锁屏面试题app、小程序现已上线,官网地址:https://www.demosoftware.cc/#...。已收录了每日更新的面试题的所有内容,还蕴含特色的解锁屏幕温习面试题、每日编程题目邮件推送等性能。让你在面试中后人一步,吊打面试官!接下来的是今日的面试题:====Mybatis 中#和$的区别?"#"相当于对数据 加上 双引号,$相当于间接显示数据 "#"将传入的数据都当成一个字符串,会对主动传入的数据加一个双引号。如:order by #user_id#,如果传入的值是111,那么解析成 sql 时的值为 order by "111", 如果传入的值是 id,则解析成的 sql 为 order by "id".$将传入的数据间接显示生成在 sql 中。如:order by $user_id$,如果传入的值是 111,那么解析成 sql 时的值为order by 111, 如果传入的值是 id,则解析成的 sql 为 order by id."#"形式可能很大水平避免 sql 注入。$形式无奈避免 Sql 注入。4.$形式个别用于传入数据库对象,例如传入表名.5.个别能用#的就别用$.====Mybatis 的编程步骤是什么样的?1、创立 SqlSessionFactory // 依据 mybatis-config.xml 配置的信息失去 sqlSessionFactoryString resource = "mybatis-config.xml";InputStream inputStream = Resources.getResourceAsStream(resource);SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);2、通过 SqlSessionFactory 创立 SqlSession3、通过 sqlsession 执行数据库操作4、调用 session.commit()提交事务5、调用 session.close()敞开会话 ====JDBC 编程有哪些不足之处,MyBatis 是如何解决这些问题的? 数据库链接创立、开释频繁造成系统资源节约从而影响零碎性能,如果应用数据库链接池可解决此问题。解决:在 SqlMapConfig.xml 中配置数据链接池,应用连接池治理数据库链接。Sql 语句写在代码中造成代码不易保护,理论利用 sql 变动的可能较大,sql 变动须要扭转 java 代码。解决:将 Sql 语句配置在 XXXXmapper.xml 文件中与 java 代码拆散。向 sql 语句传参数麻烦,因为 sql 语句的 where 条件不肯定,可能多也可能少,占位符须要和参数一一对应。解决: Mybatis 主动将 java 对象映射至 sql 语句。对后果集解析麻烦,sql 变动导致解析代码变动,且解析前须要遍历,如果能将数据库记录封装成 pojo 对象解析比拟不便。解决:Mybatis 主动将 sql 执行后果映射至 java 对象。====应用 MyBatis 的 mapper 接口调用时有哪些要求? ...

July 7, 2021 · 2 min · jiezi

关于面试:独创技术带你更好复盘技术面试

ShowMeBug 让你的面试可剖析、可复盘。ShowMeBug 采纳自主研发,独创的电影式回放技术,随时随地电影式疾速复盘整个面试过程,不便企业外部不同部门、不同职位人员进行剖析和决策,缩小沟通老本。 欢送大家前来试用:https://www.showmebug.com

July 2, 2021 · 1 min · jiezi

关于面试:备战秋招4轮车轮战Web安全面试总结收割字节40K-Offer

前言:前段时间,有个敌人又进来面试了,这次他面试指标比拟清晰,面的都是业务量大、业务比拟外围的部门。前前后后去了不少公司,几家大厂里,他说给他印象最深的是字节。 3 轮技术面 + 1 轮 HR 面,他最终拿到了 40k*18薪的 Offer。 第一轮次要考查 Web平安根底,二、三轮重视对应浸透技术的把握,以及对过往我的项目的业务了解。之所以令他印象粗浅,是因为每轮都聊了一个半小时以上,的确让他受益匪浅。 他最终抉择字节,除了这是外围我的项目之外,还有一个起因,字节的福利号称业内最好,薪资也是同类公司中最高。 “薪资高、倒退好、福利待遇优” 仿佛曾经成为字节跳动的标签。 而很多人感觉大厂门槛高: “渣本双非学历进不了大厂!” “工作不满 3 年进不了大厂!” “非科班毕业的,进不了大厂! 可对于我这个渣本双非毕业的敌人来说,进字节,仿佛并没有那么难。用他的话说,进大厂就靠一条:技术实力。 你只有技术实力够好+在面试中体现得还不错,就能拿下 Offer。 一面1、一个登录的页面会存在那些平安问题? 弱口令,爆破,SQL注入,敏感信息泄露 2.对那种编程语言最相熟? 这个因为咱们也就最近学过python,尽管在必修课的时候学过些java,c++但自我感觉还不到能说进口的境地。 3.用python做过那些事件? 好在上个月还用python编写了一个简略的poc, 4.编写poc罕用的库? re(正则申请库),request(网络申请库) 5.暴力破解应该怎么防备? 限度登录次数,减少多重认证 6.验证码有哪些绕过的形式? 绕过验证码。跳过验证码间接拜访须要的页面内容。 申请头中自带验证码。有些网站的验证码会在前台 js 校验服务器生成的验证码会在申请头中。能够获取申请头,并把验证码解析进去。 session不刷新。有的网站验证码验证胜利后,间接获取申请资源。(遗记了刷新 cookie 对应的验证码)能够事后设定一个 cookie和验证码。利用这个破绽拜访网站。对于多线程无法控制以及有些网站验证码定期不拜访生效问题。能够增加一个定时拜访程序来解决 利用第三方插件。对于有些网站验证码比较简单。只含阿拉伯数字和英文字母。能够用第三方的插件来辨认。例如:tess4j、tesseract 有些网站的验证码是从库中随机取出一个来的。对于这类动态的验证码。能够本人建设一个验证码动态库。本人建设好图片和验证码答的链接。采纳map的映射办法就能够进行辨认。 7.在windows里查看当前目录的命令? dir 8.在linux查看以后命令? pwd 9.查看以后文件的信息和权限 ls -al 10.ctf当中负责的局部? 我是打辅助的... 11.本人是否独立做出ctf的题? 当然 退一步讲,就算你不去大厂,但你凡是想在技术之路上走远一点,想成为技术大牛,做大零碎,就必须搞定基础知识。 浸透测试中,从端口扫描、破绽扫描、入侵检测、红队攻打、蓝队进攻等都和网络协议无关,所以浸透测试人员学好基础知识至关重要,是成为大牛的必备技能。10 个程序员外面,10 个都说本人学过网络安全,9 个说本人懂网络安全。但真正面试的时候,能答复出相干问题的,可能只有两三个。比方: “TCP 协定跟 UDP 协定有什么区别?” “HTTPS 协定的底层原理是什么?” “阿里的 Dubbo框架都应用了哪些传输协定和序列化协定?”想想这些你都能答出来吗?其实,加入过大厂面试的小伙伴应该都分明,无论是国内的互联网大厂还是硅谷的 IT 公司,面试多少会问基础知识常识。 ...

June 29, 2021 · 2 min · jiezi

关于面试:面试系列六八-之-java知识点

1.1 hashMap底层源码,数据结构hashMap的底层构造在jdk1.7中由数组+链表实现,在jdk1.8中由数组+链表+红黑树实现,以数组+链表的构造为例。 JDK1.8之前Put办法: JDK1.8之后Put办法: 1.2 Java自带有哪几种线程池?1.2.1、newCachedThreadPool 创立一个可缓存线程池,如果线程池长度超过解决须要,可灵便回收闲暇线程,若无可回收,则新建线程。这种类型的线程池特点是: 工作线程的创立数量简直没有限度(其实也有限度的,数目为Interger. MAX_VALUE), 这样可灵便的往线程池中增加线程。 如果长时间没有往线程池中提交工作,即如果工作线程闲暇了指定的工夫(默认为1分钟),则该工作线程将主动终止。终止后,如果你又提交了新的工作,则线程池从新创立一个工作线程。 在应用CachedThreadPool时,肯定要留神管制工作的数量,否则,因为大量线程同时运行,很有会造成零碎瘫痪。 1.2.2、newFixedThreadPool 创立一个指定工作线程数量的线程池。每当提交一个工作就创立一个工作线程,如果工作线程数量达到线程池初始的最大数,则将提交的工作存入到池队列中。FixedThreadPool是一个典型且优良的线程池,它具备线程池进步程序效率和节俭创立线程时所耗的开销的长处。然而,在线程池闲暇时,即线程池中没有可运行工作时,它不会开释工作线程,还会占用肯定的系统资源。 1.2.3、newSingleThreadExecutor 创立一个单线程化的Executor,即只创立惟一的工作者线程来执行工作,它只会用惟一的工作线程来执行工作,保障所有工作依照指定程序(FIFO, LIFO, 优先级)执行。如果这个线程异样完结,会有另一个取代它,保障程序执行。单工作线程最大的特点是可保障程序地执行各个工作,并且在任意给定的工夫不会有多个线程是流动的。 1.2.4、newScheduleThreadPool 创立一个定长的线程池,而且反对定时的以及周期性的工作执行,反对定时及周期性工作执行。提早3秒执行。 1.3、 HashMap和HashTable区别线程安全性不同 HashMap是线程不平安的,HashTable是线程平安的,其中的办法是Synchronize的,在多线程并发的状况下,能够间接应用HashTabl,然而应用HashMap时必须本人减少同步解决。 是否提供contains办法 HashMap只有containsValue和containsKey办法;HashTable有contains、containsKey和containsValue三个办法,其中contains和containsValue办法性能雷同。 key和value是否容许null值 Hashtable中,key和value都不容许呈现null值。HashMap中,null能够作为键,这样的键只有一个;能够有一个或多个键所对应的值为null。 数组初始化和扩容机制 HashTable在不指定容量的状况下的默认容量为11,而HashMap为16,Hashtable不要求底层数组的容量肯定要为2的整数次幂,而HashMap则要求肯定为2的整数次幂。 Hashtable扩容时,将容量变为原来的2倍加1,而HashMap扩容时,将容量变为原来的2倍。 1.4 TreeSet和HashSet区别 HashSet是采纳hash表来实现的。其中的元素没有按顺序排列,add()、remove()以及contains()等办法都是复杂度为O(1)的办法。 TreeSet是采纳树结构实现(红黑树算法)。元素是按程序进行排列,然而add()、remove()以及contains()等办法都是复杂度为O(log (n))的办法。它还提供了一些办法来解决排序的set,如first(), last(), headSet(), tailSet()等等。 1.5 String buffer和String build区别1、StringBuffer 与 StringBuilder 中的办法和性能齐全是等价的, 2、只是StringBuffer 中的办法大都采纳了 synchronized 关键字进行润饰,因而是线程平安的,而 StringBuilder 没有这个润饰,能够被认为是线程不平安的。 3、在单线程程序下,StringBuilder效率更快,因为它不须要加锁,不具备多线程平安而StringBuffer则每次都须要判断锁,效率绝对更低 1.6 Final、Finally、Finalizefinal:修饰符(关键字)有三种用法:润饰类、变量和办法。润饰类时,意味着它不能再派生出新的子类,即不能被继承,因而它和abstract是反义词。润饰变量时,该变量应用中不被扭转,必须在申明时给定初值,在援用中只能读取不可批改,即为常量。润饰办法时,也同样只能应用,不能在子类中被重写。 finally:通常放在try…catch的前面结构最终执行代码块,这就意味着程序无论失常执行还是产生异样,这里的代码只有JVM不敞开都能执行,能够将开释内部资源的代码写在finally块中。 finalize:Object类中定义的办法,Java中容许应用finalize() 办法在垃圾收集器将对象从内存中革除进来之前做必要的清理工作。这个办法是由垃圾收集器在销毁对象时调用的,通过重写finalize() 办法能够整顿系统资源或者执行其余清理工作。 1.7 ==和Equals区别== : 如果比拟的是根本数据类型,那么比拟的是变量的值 ...

June 28, 2021 · 1 min · jiezi

关于面试:面试系列七-之-业务交互数据分析

6.1 电商常识SKU:一台银色、128G内存的、反对联通网络的iPhoneX SPU:iPhoneX Tm_id:品牌Id苹果,包含IPHONE,耳机,mac等 6.2 电商业务流程 6.3 业务表关键字段6.3.1 订单表(order_info)标签含意id订单编号total_amount订单金额order_status订单状态user_id用户idpayment_way领取形式out_trade_no领取流水号create_time创立工夫operate_time操作工夫6.3.2 订单详情表(order_detail) 6.3.3 商品表 6.3.4 用户表 6.3.5 商品一级分类表标签含意ididname名称6.3.6 商品二级分类表标签含意ididname名称category1_id一级品类id6.3.7 商品三级分类表标签含意ididname名称Category2_id二级品类id6.3.8 领取流水表 订单表跟订单详情表有什么区别? 订单表的订单状态会变动,订单详情表不会,因为没有订单状态。订单表记录user_id,订单id订单编号,订单的总金额order_status,领取形式,订单状态等。订单详情表记录user_id,商品sku_id ,具体的商品信息(商品名称sku_name,价格order_price,数量sku_num)6.4 MySql中表的分类实体表,维度表,事务型事实表,周期性事实表 其实最终能够把事务型事实表,周期性事实表统称实体表,实体表,维度表统称维度表 订单表(order_info)(周期型事实表) 订单详情表(order_detail)(事务型事实表) 商品表(实体表) 用户表(实体表) 商品一级分类表(维度表) 商品二级分类表(维度表) 商品三级分类表(维度表) 领取流水表(事务型实体表) 6.5 同步策略 实体表,维度表统称维度表,每日全量或者每月(更长时间)全量 事务型事实表:每日增量 周期性事实表:拉链表 6.6 关系型数据库范式实践 1NF:属性不可再宰割(例如不能存在5台电脑的属性,害处:表都没法用) 2NF:不能存在局部函数依赖(例如主键(学号+课名)-->问题,姓名,但学号 -->姓名,所以姓名局部依赖于主键(学号+课名),所以要去除,害处:数据冗余) 3NF:不能存在传递函数依赖(学号 --> 宿舍品种 --> 价格,害处:数据冗余和增删异样) Mysql关系模型:关系模型次要利用与OLTP零碎中,为了保证数据的一致性以及防止冗余,所以大部分业务零碎的表都是遵循第三范式的。 Hive 维度模型:维度模型次要利用于OLAP零碎中,因为关系模型尽管冗余少, 然而在大规模数据,跨表剖析统计查问过程中,会造成多表关联,这会大大降低执行效率。 所以HIVE把相干各种表整顿成两种:事实表和维度表两种。所有维度表围绕着事实表进行解释。 6.7 数据模型雪花模型、星型模型和星座模型 (在维度建模的根底上又分为三种模型:星型模型、雪花模型、星座模型。) 星型模型(一级维度表),雪花(多级维度),星座模型(星型模型+多个事实表) 6.8 业务数据数仓搭建sqoop 导数据的原理是mapreduce, import 把数据从关系型数据库 导到 数据仓库,自定义InputFormat, ...

June 26, 2021 · 2 min · jiezi

关于面试:HR-别找我面试了我还想写代码内附笔试出题指南

眼看2021年只剩半年工夫,你的招聘打算实现的怎么样啦?其实 2022 届秋招提前批都曾经开启了一段时间,不仅 HR 忙到飞起,面试官也没闲着。 作为一个技术大佬,眼睛死死盯着屏幕,手下正在劈啪作响敲代码的时候,却被 HR 小姐姐打断了: “快,我这有个候选人,你连忙去面一下!” “面啥面,别打搅我写代码!” “帮你们组招的人,招来了你就不必加班了~” “好嘞,马上!” 你心里想:嗯,招个技术大牛过去,我的项目按时上线就有心愿了! 后果,一天面了13集体,都要面吐了...         能不能缩小一下面试官的工作量? 当初 bug君答复你:当然能! 来一套口试题,让候选人先做,做完合格的再约来面试,是不是一下子就筛掉了很多人呢? 想得美,你出的题还得候选人违心做才行... 不然候选人一听要口试全跑了,你面谁去啊... 知乎有一个帖子,有67万的浏览量:”为什么程序员越来越排挤面试时做题?“                程序员不是排挤做题,是排挤你出的题,包含出题的内容和模式。 在V2EX技术论坛上就有一个很热的帖子,浏览量1w+,评论盖楼127,你会发现外面完满地分成了对抗两派: 面试官:必须做题啊,不做题我一个个去面试,不得累死? 候选人:我又不是应届生,什么小破公司啊还要我做题?这不是看不起我吗?不去拉倒 没错,做题让程序员们像吃了苍蝇一样好受。其实duck不用,不是所有的程序员都厌恶做题,只是你出题的姿态不对而已。那应该怎么出题呢?前面我再来具体说。 话又说回来,为啥咱们程序员这么厌恶做题?我总结了以下三点: 最让程序员厌恶的口试题题目太多,浪费时间动不动就几十页,做上3/4个小时,甚至好几天,还要手写!更过分的是,做完之后面试官也不问,HR也没告诉,这不是白做了吗!                                              出题程度太低题目多也就算了,还有些公司出题太简略了,全是基础知识; 还有些公司让一小时内爬某个站,还是盲爬(我:黑人问号???) 还有公司敲代码只能网页上敲的,可是他那网页代码留空贼小就能看见两行的中央,还是记事本,敲空格那个累; 还有公司全是算法题,贼烦这种找法则的题,鸡肋一样的题目。               ...

June 23, 2021 · 1 min · jiezi

关于面试:面试系列五-之-项目涉及技术Spark

一、Spark1.1 Spark有几种部署形式?请别离简要阐述1)Local:运行在一台机器上,通常是练手或者测试环境。2)Standalone:构建一个基于Mster+Slaves的资源调度集群,Spark工作提交给Master运行。是Spark本身的一个调度零碎。3)Yarn: Spark客户端间接连贯Yarn,不须要额定构建Spark集群。有yarn-client和yarn-cluster两种模式,次要区别在于:Driver程序的运行节点。4)Mesos:国内大环境比拟少用。1.2 Spark工作应用什么进行提交,javaEE界面还是脚本Shell 脚本。 1.3 Spark提交作业参数(重点)1)在提交工作时的几个重要参数 executor-cores —— 每个executor应用的内核数,默认为1,官网倡议2-5个,咱们企业是4个num-executors —— 启动executors的数量,默认为2executor-memory —— executor内存大小,默认1Gdriver-cores —— driver应用内核数,默认为1driver-memory —— driver内存大小,默认512M2)边给一个提交工作的款式 spark-submit \ --master local\[5\] \ --driver-cores 2 \ --driver-memory 8g \ --executor-cores 4 \ --num-executors 10 \ --executor-memory 8g \ --class PackageName.ClassName XXXX.jar \ --name "Spark Job Name" \ InputPath \ OutputPath1.4 简述Spark的架构与作业提交流程(画图解说,注明各个局部的作用)(重点)参考: https://blog.csdn.net/wuxintd... 1.4.1、standlone 1.4.2、yarn-cluster 1.5 如何了解Spark中的血统概念(RDD)(口试重点)参考:https://blog.csdn.net/wuxintd... RDD在Lineage依赖方面分为两种Narrow Dependencies与Wide Dependencies用来解决数据容错时的高效性以及划分工作时候起到重要作用。 1.6 简述Spark的宽窄依赖,以及Spark如何划分stage,每个stage又依据什么决定task个数? (口试重点)Stage:依据RDD之间的依赖关系的不同将Job划分成不同的Stage,遇到一个宽依赖则划分一个Stage。 Task:Stage是一个TaskSet,将Stage依据分区数划分成一个个的Task。 1.7 请列举Spark的transformation算子(不少于8个),并简述性能(重点)参考: https://blog.csdn.net/wuxintd... 1)map(func):返回一个新的RDD,该RDD由每一个输出元素通过func函数转换后组成. 2)mapPartitions(func):相似于map,但独立地在RDD的每一个分片上运行,因而在类型为T的RD上运行时,func的函数类型必须是Iterator[T] => Iterator[U]。假如有N个元素,有M个分区,那么map的函数的将被调用N次,而mapPartitions被调用M次,一个函数一次解决所有分区。 ...

June 21, 2021 · 2 min · jiezi

关于面试:百万Java-面试题整理10

Java面试题整顿Java 面向对象 super()与this()的区别?This():以后类的对象,super 父类对象。Super():在子类拜访父类的成员和行为,必须受类继承规定的束缚而this 他代表以后对象,当然所有的资源都能够拜访.在构造函数中,如果第一行没有写super(),编译器会主动插入.然而如果父类没有不带参数的构造函数,或这个函数被私有化了(用 private 润饰).此时你必须退出对父类的实例化结构.而 this 就没有这个要求,因为它自身就进行实例化的结构.而在办法中super 和this 应用的办法就差不多了.只不过super 要思考是否能拜访其父类的资源.作用域public,protected,private, 以及不写时的区别?Public:不同包、同一包、类内都可用Private:类内Protected: 不同包的子类、同一包、类内都可用不写时:同一包内、类内编程输入如下图形?***代码如下:public class Print {public static void main(String[] args) {for (int i = 0; i < 5; i++) {for (int j = 5; j > i; j--) {System.out.print("*");}System.out.println();}}}JAVA 的事件委托机制和垃圾回收机制java 事件委托机制的概念,一个源产生一个事件并将它送到一个或多个监听器那里。在这种计划中,监听器简略的期待,直到它收到一个事件。一旦事件被承受,监听器将解决这个事件,而后返回。垃圾回收机制 垃圾收集是将调配给对象但不再应用的内存回收或开释的过程。如果一个对象没有指向它的援用或者其赋值为 null,则次对象适宜进行垃圾回收在JAVA 中,如何跳出以后的多重嵌套循环?用 break; return 办法。什么是java 序列化,如何实现 java 序列化?(写一个实例)序列化:能够将一个对象保留到一个文件,所以能够通过流的形式在网络上传输,能够将文件的内容读取,转化为一个对象。解决对象流的机制,所谓对象流也就是将对象的内容进行流化。能够对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间。序列化是为了解决在对对象流进行读写操作时所引发的问题。序列化的实现:将须要被序列化的类实现 Serializable 接口,该接口没有须要实现的办法, implements Serializable 只是为了标注该对象是可被序列化的,而后应用一个输入流(如:FileOutputStream)来结构一个 ObjectOutputStream(对象流)对象,接着,应用ObjectOutputStream 对象的 writeObject(Object obj)办法就能够将参数为 obj 的对象写出(即保留其状态),要复原的话则用输出流。一个".java"源文件中是否能够包含多个类(不是外部类)?有什么限度?能够。如果这个类的修饰符是public,其类名与文件名必须雷同。排序都有哪几种办法?请列举。用JAVA 实现一个疾速排序?排序的办法有:插入排序(间接插入排序、希尔排序),替换排序(冒泡排序、疾速排序),抉择排序(间接抉择排序、堆排序),归并排序,调配排序(箱排序、基数排序) 疾速排序的伪代码。Overload 和 Override 的区别。Overloaded 的办法是否能够扭转返回值的类型?办法的重写 Override,子类笼罩父类的办法,将子类传与父类的援用调用的还是子类的办法。重载Overloading 一个类多个办法,名称雷同,参数个数类型不同。两者都是Java 多态性的不同体现。Overloaded 的办法是能够扭转返回值的类型。1, public class Ctest(){Public static void main(){System.out.prinln(8+8+”88”+8+8);}}168888Final 类有什么特点?属性常量办法不能够 overridding类不能够继承继承时候类的执行程序问题,个别都是选择题,问你将会打印出什么.答 : 父 类 :package test;public class FatherClass{public FatherClass(){System.out.println("FatherClass Create");}}子类:package test;import test.FatherClass;public class ChildClass extends FatherClass{public ChildClass(){System.out.println("ChildClass Create");}public static void main(String[] args){FatherClass fc = new FatherClass();ChildClass cc = new ChildClass();}}输入后果:C:>java test.ChildClass FatherClass Create FatherClass Create ChildClass Create外部类的实现形式?答:示例代码如下:package test;public class OuterClass{private class InterClass{Public Interlass(){System.out.println("InterClass Create");}}public OuterClass(){InterClass ic = new InterClass(); System.out.println("OuterClass Create");}public static void main(String[] args){OuterClass oc = new OuterClass();}}输入后果:C:>java test/OuterClassInterClass CreateOuterClass Create13.用JAVA 实现一种排序,JAVA 类实现序列化的办法(二种)?如在COLLECTION 框架中,实现比拟要实现什么样的接口?Collection 框架中实现比拟要实现Comparable 接口和 Comparator 接口用插入法进行排序代码如下package test; import java.util.*; class InsertSort{ArrayList al;public InsertSort(int num,int mod){al = new ArrayList(num); Random rand = new Random();System.out.println("The ArrayList Sort Before:"); for (int i=0;i<num ;i++ ){al.add(new Integer(Math.abs(rand.nextInt()) % mod + 1)); System.out.println("al["+i+"]="+al.get(i));}}public void SortIt(){Integer tempInt; int MaxSize=1;for(int i=1;i<al.size();i++){tempInt = (Integer)al.remove(i); if(tempInt.intValue()>=((Integer)al.get(MaxSize-1)).intValue()){al.add(MaxSize,tempInt); MaxSize++; System.out.println(al.toString());} else {for (int j=0;j<MaxSize ;j++ ){if(((Integer)al.get(j)).intValue()>=tempInt.intValue()){al.add(j,tempInt); MaxSize++;System.out.println(al.toString()); break;}}}}System.out.println("The ArrayList Sort After:"); for(int i=0;i<al.size();i++){System.out.println("al["+i+"]="+al.get(i));}}public static void main(String[] args){InsertSort is = new InsertSort(10,100); is.SortIt();}}JAVA 类实现序例化的办法是实现java.io.Serializable 接口编程:编写一个截取字符串的函数,输出为一个字符串和字节数,输入为按字节截取的字符串。然而要保障汉字不被截半个,如"我 ABC"4,应该截为"我 AB", 输出"我ABC 汉 DEF",6,应该输入为"我ABC" 而不是"我 ABC+汉的半个"。public static void split(String source,int num) throws Exception{int k=0;String temp="";for (int i = 0; i <source.length(); i++){byte[] b=(source.charAt(i)+"").getBytes(); k=k+b.length;if(k>num){break;}temp=temp+source.charAt(i);}System.out.println(temp);}17.Java 编程,打印昨天的以后时刻public classYesterdayCurrent{ public voidmain(String[] args){Calendar cal = Calendar.getInstance();cal.add(Calendar.DATE, -1); System.out.println(cal.getTime());}}18.文件读写,实现一个计数器public int getNum(){ int i = -1;try{String stri="";BufferedReader in = new BufferedReader(new FileReader(f)); while((stri=in.readLine())!=null){i = Integer.parseInt(stri.trim());}in.close();}catch(Exception e){ e.printStackTrace();}return i;}public void setNum(){ int i = getNum(); i++;try{PrintWriter out=new PrintWriter(new BufferedWriter(new FileWriter(f,false))); out.write(String.valueOf(i)); //可能是编码的起因,如果间接写入 int 的话,将呈现java 编码和windows 编码的凌乱,因而此处写入的是Stringout.close() ;}catch(Exceptione){ e.printStackTrace();}19.指出上面程序的运行后果。class A{ static{System.out.print("1");}public A(){ System.out.print("2");}}class B extends A{ static{ System.out.print("a");}public B(){ System.out.print("b");}}public class Hello{public static void main(String[] ars){ A ab = new B(); //执行到此处,后果: 1a2b ab = new B(); //执行到此处,后果: 1a2b2b}}注:类的 static 代码段,能够看作是类首次加载(被虚拟机加载)执行的代码,而对于类的加载,首先要执行其基类的结构,再执行其自身的结构extends (2)接口只有定义,抽象类能够有定义和实现(3)接口的字段定义默认为:public static final, 抽象类字段默认是"friendly"(本包可见)20.抽象类和接口的区别?(1)接口能够被多重 implements,抽象类只能被繁多extends (2)接口只有定义,抽象类能够有定义和实现(3)接口的字段定义默认为:public static final, 抽象类字段默认是"friendly"(本包可见)当性能须要累积时用抽象类,不须要累积时用接口。21.什么是类的反射机制?通过类(Class 对象),能够得出以后类的 fields、method、construtor、interface、superClass、modified 等,同是能够通过类实例化一个实例、设置属性、唤醒办法。Spring 中一切都是返射、struts、hibernate 都是通过类的返射进行开发的。22.类的反射机制中的包及外围类?u java.lang.Classu java.lang.refrection.Methodu java.lang.refrection.Fieldu java.lang.refrection.Constructoru java.lang.refrection.Modifieru java.lang.refrection.Interface23.失去Class 的三个过程是什么?对象.getClass()类.class 或 Integer.type(int) Integer.class(java.lang.Integer) Class.forName();24.如何唤起类中的一个办法?产生一个Class 数组,阐明办法的参数通过Class 对象及办法参数失去Method通过method.invoke(实例,参数值数组)唤醒办法25.如何将数值型字符转换为数字(Integer,Double)?Integer.parseInt(“1234”)Double.parseDouble(“123.2”)26.如何将数字转换为字符?1+””1.0+””27.如何取小数点前两位,并四舍五入。double d=1256.22d;d=d/100;System.out.println(Math.round(d)*100);有须要全副文件的麻烦关注点赞私信我

June 21, 2021 · 2 min · jiezi

关于面试:一年1万场在线面试的校招体验是怎样的

高科技企业的人才储备机制始终以来比拟重视从源头争取优秀人才,校园招聘是高科技企业每年人才招募的重头戏。然而,对于技术类的校招,如何批量、疾速的测验候选人的编程根底能力,疾速的找到企业适合的人才,是技术招聘中十分要害的一环。 近几年高速倒退的深服气科技,对人才的需要特地是技术类的用人需要在一直增长,明天Bug君为大家来解读下深服气的校招在线面试教训。 据理解,自2020年秋招开始,深服气在 ShowMeBug 平台上组织过14,895场面试,2020年校园招聘胜利入职数百名学员,节俭人力老本40%,晋升校招效率80%。对于深服气 深服气科技(股票代码:300454)成立于2000年,是专一于企业级平安、云计算、IT基础设施与物联网的产品和服务供应商。目前深服气有超过7000名员工,专利申请总数近1500件,业务笼罩寰球50多个国家和地区,超过10万家用户的IT由深服气承载和爱护。 校招带来的批量化人才甄选挑战 随着业务的飞速发展,截目2020年底深服气在职员工超过7000名,每年企业的社招和校招需求量都比拟大,特地是在秋季和秋季两个时间段的集中招聘季,在HR人力无限的状况下,须要协调各事业部面试官重复沟通,进行简历调配与面试甄选,实现超高数量的应届生招聘,这给招聘团队带来肯定的挑战和压力。 以往的校园招聘形式是组织人员别离去各大高校进行地推式宣传和推广,一场校园招聘的筹备,不亚于一场产品发布会的筹备,须要付出人力、物力、财力与工夫进行精心筹备,尤其碰上疫情等非凡起因,校招的工作就须要延缓,影响公司既定的招聘指标实现。 在校园招聘中最具挑战的是技术人员招聘,传统的程序员招聘是以候选人口述或者纸张做题、批改试题为根底,效率比拟低,每场面试都须要耗费更多的工夫和精力去理解候选人,不容易精准分别候选人的编程程度。 线上线下笔面试一体化,高精准且疾速的找到想要的人才 规模化企业里的组织流程效力晋升,是深服气始终关注的话题,在招聘工作数字化、效率化方面,深服气抉择了与ShowMeBug携手单干,一起赋能企业的大规模技术招聘,特地是每年的校园招聘,通过ShowMeBug平台在线测评应届生候选人的代码能力程度,帮忙HR和各用人部门进行人才筛选,甄选出优良的技术人才。 1、不受疫情影响,线上技术招聘省人省时省力 疫情期间,深服气的校招模式根本线上化进行,在启动校招时会借助地面宣讲会、KOL联动等模式在招聘官微和各互联网平台吸引应届学生投递简历,对于程序员技术岗位的招聘,HR会邀请学生在ShowMeBug平台进行面试筛选,跟据面试状况再决定是否进入下一轮面试,这样的一站式数字化面试流程,不仅数据可追踪,还省人省时省力。 2、一分钟发动上千名笔面试邀请,精准甄别候选人Coding实力 相比传统线下面试模式,ShowMeBug在线口试能够最大化笼罩参加面试的候选人,HR一分钟向上千名学生邀请参加在线笔面试,极大地晋升企业人才筛选效率,节俭地推式的校园招聘老本。 另外,在所有学生交卷后,主动评卷性能能够解放面试官双手,更好回归于工作,并且口试后果能够无障碍跨部门沟通、查看,帮忙HR和面试官做人才剖析与复盘。 3、晦涩敌对的用户体验,面试官和候选人轻松易上手 ShowMeBug的在线面试性能内置30多种语言,能够还原程序员编辑工作环境,学生再也不必通过纸张或口述答复编程问题,深服气面试官只有提前准备一批面试考题,导入到平台上,即可发卷给学生考试,并且在视频面试环节,间接向学员提出工作中理论遇到的编程问题,更好地考查学生编程能力和思维形式,从而实现不看简历只看实力和后劲的选人指标。 在ShowMeBug平台上,深服气已组织了1万多场在线笔面试,招聘入职数百名员工,通过优化招聘面试过程中的流程和细节,极大地晋升了人力资源工作效率,同时还让候选人触摸到、感知到企业高效治理中良好的雇主品牌形象。 Explore More On https://www.showmebug.com/

June 17, 2021 · 1 min · jiezi

关于面试:面试了一个-46-岁程序员我总结了很多

本文作者:frank909 原文链接https://blog.csdn.net/briblue/article/details/103609814最近始终忙于面试,人事推给了我一份简历,职位是算法工程师,年龄是 46 岁,我揉了揉眼睛后再看看,的确是 46 岁。抱着忐忑的心,我电话面试一番后,还是不感觉他和咱们的团队很适宜。 人都会有同理心,尤其是这么大岁数的程序员还是为了生计来找工作,心还是会隐隐触痛。 年龄是少数程序员的天敌,之前没有概念因为生存中样本较少,当初来了一个显明的例子,并且还须要本人亲手敞开一扇门,总会有一个世道轮回的后怕。 写这篇文章的目标,是以这件事作为一面镜子,让我本人好好思考一下,我本人的前途和前途。 面试细节学历亮眼 那位学生的学历其实挺好的,很早就研究生毕业,处于隐衷爱护我就不透漏具体了。 并且毕业后就始终从事视觉方面的工作,每一份工作都呆了 5 年以上,算是很稳固的那类人。 我能设想他年少轻狂,英姿飒爽的状态,只是当初有些境遇大有不同,这是一个变动的世界。 表达能力的缺点看简历的时候,我有认真看过他的简历。 简历的我的项目经验都没有什么问题。 然而有个细节让我很意外。 错别字。 简历上有很多的错别字,按照道理讲,退职场上打拼这么多年这是不应该的,况且电话面试的时候他说有负责过项目经理的经验。 除了错别字以外,简历上的形容没有重心。 兴许是做了太多的我的项目,很多货色一股脑往上整,关键词都很少,间接对简历而言,很难让人一时搞清楚他到底善于什么。 还有一个细节,电话面试的时候,我始终皱眉头竖起耳朵在听,因为他口音极重,谈话时轻时重,这让沟通老本变得很高。 与年龄不相符的总结陈说能力我的项目经验和我团队当初的业务需要有相关性,然而不是那么强烈,所以我简略搞清楚他做的货色后,重点想关注的是他对这个行业怎么认识。 但后果有些悲观。 他做人脸识别很多年了,简历上说对指标检测也颇有钻研,然而这么多年过来了,仿佛他的认知并没有因而有显著的进步。 他始终说传统的机器视觉不行了,当初要用 AI 的形式,而后又始终说 AI 也不是万能的。 我问他为什么感觉机器视觉传统的形式不行了。 他答复说须要大量的数据训练,模型能力好。 他又说人们都感觉 AI 很厉害,但 AI 不是万能的,因为它须要数据训练,没有数据也不行。 那他说的这些对吗? 他的论断都对,但不粗浅,刚毕业的大学生都晓得。既然认知和刚毕业的大学生没有差异,那么公司不会领取更多的用人老本,尽管事实,但就是这个理。 而后,我又问了一个问题: 为什么通过数据训练可能进行人脸检测或者辨认指标?他又答复了一堆,他用了什么 MTCNN 模型而后这个那个开源的模型。 其实,我冀望的是他能答复相似这样: 从大量的训练数据中,寻找无效特色,从输出空间或者是特色空间失去输出,通过模型回归 landmark 值或者用超平面拆散数据等等等等。我想要那种把技术分拆的很细的观点,不是简略的说用哪个开源模型,我想理解的是为什么而不是怎么做。 我冀望失去为什么而不是怎么做的起因是团队成员当初都很年老,攻克难题须要有人带,薪资不同,面对的压力也不同,责任也就不同。况且,他的经验与团队的畛域方向相关性不是那么高。面试的目标是试一试看。 我抵赖他的教训有,然而他的表达能力吃亏了。 我感觉他应该有高度总结的能力,但这次面试过程没有体现进去。 我讲的高度总结能力指的是对于技术或者是架构比拟深的了解,或者是对于业务逻辑有比较清楚的意识。 我惟一的感觉是,这些年来可能他始终执着于比拟底层的术,忙忙碌碌,蹉跎了很多岁月。 在咱们团队,工龄大的人须要带团队老手的,如果领头人认知不高,上面的成员成长就少,容易起矛盾。 自我反思面试完结后,我始终在思考一个问题。 我如何能力不在 10 多年后变成这样? 我没有必定的答案,但认真思考后,我决定从上面几个方面动手。 业务能力晋升开源代码诚然好,然而对于新问题而言,还是须要团队有本人的核心技术。这个核心技术也包含针对性地革新开源代码,让它更适应于本人的业务。 逻辑十分重要。 南征北战同时也不要遗记思考,这个能力带你脱离永远在底层繁忙的窘境。 人人都爱能解决问题的人,反复的问题大多数人能搞定,新问题或难题须要高手。 所以,我的认知是高手不会落寞。 学习能力人是须要自我降级的。 这个自我降级次要是指认知。 所以,放弃浏览是十分重要的。 业余论文行业动态新技术作为一个纯正的技术人,这些不可少。 认知晋升沟通技巧根本的常识与见解根本的状态体态礼仪人是社交动物,能力越大影响就越大,所谓影响就是与更多人的社交或者互动。 ...

June 16, 2021 · 1 min · jiezi

关于面试:我的Java面试复习

通过这段时间的面试温习,整顿了不少材料文章,这里将我整顿的知识点导图分享进去,仅供大家参考,欢送多多倡议 原文地址(能够点击查看文章):https://zhimap.com

June 14, 2021 · 1 min · jiezi

关于面试:来自小姐姐的灵魂拷问位运算是什么

前两天下班,忽然小叶给我发音讯:哥哥,你看这两段代码是什么意思啊? 乍一看,感觉这代码既相熟又生疏。如同在哪里见过,但平时如同又很少用到。 我喝口水,沉着的想了 3s:咦,这个不就是那个位运算符吗?之前大学就学过,前一段看react源码也有看到过啊! 小叶:哥哥,那你能不能给我讲一下这是什么呢? 我:没问题,等我整顿一下~ 什么是位运算?位运算简略来说就是基于整数的二进制示意进行的运算。它间接解决每一个比特位,是十分底层的运算,益处是速度极快,毛病是不太直观。 你这会可能会问:二进制是什么? 哈哈,其实如果不是科班出身的同学,对二进制有点生疏也失常了。上面我就简短的介绍一下二进制。 二进制咱们罕用的 2、8、16 等数字是十进制示意,而位运算的根底是二进制。即人类采纳十进制,机器采纳的是二进制,要深刻理解位运算,就须要理解十进制和二进制的转换方法和对应关系。 十进制转二进制十进制整数转换为二进制整数采纳除2取余,逆序排列法。具体做法是:用 2 整除十进制整数,能够失去一个商和余数;再用 2 去除商,又会失去一个商和余数,如此进行,直到商为小于 1 时为止,而后把先失去的余数作为二进制数的低位无效位,后失去的余数作为二进制数的高位无效位,顺次排列起来。 这里以十进制数 156 为例: 二进制转十进制小数点前或者整数要从右到左用二进制的每个数去乘以 2 的相应次方并递增,小数点后则是从左往右乘以二的相应负次方并递加。 这里以 1011.01 为例: 介绍完了二进制和十进制的互相转换,上面咱们就来看下在js中常常用到的几个位运算符吧。 JS 中罕用的 7 个位运算符根本的位运算共 7 种,别离为 按位与(AND) &按位或(OR) |按位异或(XOR) ^按位非(NOT) ~左移(Left shift)<<有符号右移>>无符号右移>>>这里用一个表格来汇总下以上 7 种运算符的简介: 运算符用法形容按位与(AND) &a & b对于每一个比特位,只有两个操作数相应的比特位都是 1 时,后果才为 1,否则为 0。`按位或(OR)`ab对于每一个比特位,当两个操作数相应的比特位至多有一个 1 时,后果为 1,否则为 0。按位异或(XOR) ^a ^ b对于每一个比特位,当两个操作数相应的比特位有且只有一个 1 时,后果为 1,否则为 0。按位非(NOT) ~~a反转操作数的比特位,即 0 变成 1,1 变成 0。左移(Left shift)<<a << b将 a 的二进制模式向左移 b (< 32) 比特位,左边用 0 填充。有符号右移>>a >> b将 a 的二进制示意向右移 b (< 32) 位,抛弃被移出的位。无符号右移>>>a >>> b将 a 的二进制示意向右移 b (< 32) 位,抛弃被移出的位,并应用 0 在左侧填充。按位与(AND) &&运算符(位与)用于对两个二进制操作数逐位进行比拟。如果对应的位都为 1,那么后果就是 1, 如果任意一个位是 0 则后果就是 0。 ...

June 8, 2021 · 4 min · jiezi

关于面试:国内高薪面试必问SpringMVC的执行过程

本文章转自:乐字节 文章次要解说:SpringMVC执行过程 获取更多Java相干常识能够关注公众号《乐字节》 发送:999 SpringMVC ,这个应该是国内面试必问题,网上有很多答案,其实背背就能够。但明天笔者带大家一起深入浅出源码,看看他的原理。以期让印象更加粗浅,面试的时候熟能生巧。 先来张图: 代码地位:com.interface21.web.servlet.DispatcherServlet#doService (没错,就是 Spring 1.0 的代码,大道至简,当初的 Spring 通过 15 年的倒退,曾经太过臃肿,从学习角度来说,interface 21 是最好的代码,不承受反驳) 代码如下: 对于这个适配器,作用到底是啥呢?HandlerAdapter 正文写到:This interface is not intended for application developers. It is available to handlers who want to develop their own web workflow. 译:此接口不适用于应用程序开发人员。它实用于想要开发本人的Web工作流程的处理程序。 也就说说,如果你想要在解决 handler 之前做一些操作的话,可能须要这个,即适配一下这个 handler。例如 Spring 的测试程序做的那样: 这个没什么好讲的吧? 感激大家的认同与反对,小编会继续转发《乐字节》优质文章

June 4, 2021 · 1 min · jiezi

关于面试:callapplybind-的区别call-和-apply-哪个性能会更好如何实现-callapplybind

相同点bind、apply、call 都是用来绑定函数执行时this的指向(扭转函数执行时的上下文),同时还能够传参,调用它们的对象必须是一个函数 Function。 区别区别次要提当初传参上。 // callFunction.call(obj, arg1, arg2, arg3, ...);// apply,有两个参数,第二个是类数组Function.apply(obj, [argArray]);// bind,bind 办法的返回值是函数,须要手动调用才会执行,而 apply 和 call 则是立刻调用Function.bind(obj, arg1, arg2, arg3, ...);const obj = { name: '小鸭子',};function say (arg1, arg2) { console.log(`${this.name ? `我是一只${this.name},` : ''}${arg1},${arg2}`);}say('咿呀咿呀哟', '呱呱!'); // 咿呀咿呀哟,呱呱!say.call(obj, '咿呀咿呀哟', '呱呱!') // 我是一只小鸭子,咿呀咿呀哟,呱呱!say.apply(obj, ['咿呀咿呀哟', '呱呱!']); // 我是一只小鸭子,咿呀咿呀哟,呱呱!const manualSay = say.bind(obj, '咿呀咿呀哟', '呱呱!'); // 绑定但不是立刻执行manualSay(); // 手动执行,输入:我是一只小鸭子,咿呀咿呀哟,呱呱!性能比拟call 的性能要比 apply 好一些(尤其是传递给函数的参数超过三个的时候) 大略因为,apply 的第二个参数是数组,函数在执行时,解析数组获取参数,须要消耗性能。call 实现// call 实现Function.prototype.myCall = function(context) { context = context || window; // 默认 window const args = [...arguments].slice(1); // 参数 const fn = Symbol(); // 给 context 设置一个举世无双的属性,防止笼罩原有属性 context[fn] = this; // 这里的 this 指向调用它的函数 fn const result = context[fn](...args); // 调用之 delete context[fn]; // 删除增加的属性 return result; // 返回值}say.myCall(obj, '咿呀咿呀哟', '呱呱!') // 我是一只小鸭子,咿呀咿呀哟,呱呱!apply 实现// apply 实现Function.prototype.myApply = function(context, args) { context = context || window; // 默认 window args = [...args]; // 参数 const fn = Symbol(); // 给 context 设置一个举世无双的属性,防止笼罩原有属性 context[fn] = this; // 这里的 this 指向调用它的函数fn const result = context[fn](...args); // 调用之 delete context[fn]; // 删除增加的属性 return result; // 返回值}say.myApply(obj, ['咿呀咿呀哟', '呱呱!']) // 我是一只小鸭子,咿呀咿呀哟,呱呱! bind 实现// bind 实现Function.prototype.myBind = function(context) { context = context || window; // 默认 window const args = [...arguments].slice(1); // 参数 const fn = this; // 这里的 this 指向调用它的函数 fn return function () { return fn.apply(context, args); };}const manualSay = say.myBind(obj, '咿呀咿呀哟', '呱呱!');manualSay(); // 手动执行,输入:我是一只小鸭子,咿呀咿呀哟,呱呱! 总结起来,call、apply、bind 的实现,要解决好以下几点: ...

May 22, 2021 · 2 min · jiezi

关于面试:给你个机会体验一把面试官从逆向思维学习怎么提升面试软实力

前言看全网,大家发了很多面试攻略、面试技巧、面试八股文,但简直没有人站在面试官的角度发文章。 明天我来发发对于招聘的文章,给大家体验一把面试官~ (本文的主题是讲“规范化招聘流程晋升招聘效率”,但对受众来说是“站在面试官的角度通过逆向思维晋升面试软实力”) 先来看下近期的招聘数据: 从过完年到 4 月底,大概 2 个月的工夫,面试的候选人有 128 人,均匀每天 2 人,最终仅入职 5 人,真是千里马难求 年初刚好是业务忙碌的阶段,面试官个别都是主管和团队外围,他们手上的业务原本就比拟沉重,还须要兼顾面试。 所以候选人在面试过程中,要学会抓重点去说,简明扼要很容易就给面试官留下一个“浪费时间”的不好印象。 好,接下来咱们正式进入面试官的角色。咱们从五个局部来讲述面试的流程标准,发现如何从细节晋升招聘效率。 (请进入面试官的角色) 一、咱们为什么要招人?为什么招聘,起因有很多,人员到职、我的项目须要、非凡技能人才、造就等,都会产生招聘的需要如果是人员到职,往往心愿招到等同的,或更好的候选人如果是我的项目须要,个别都比拟紧急,降低要求招聘适合的候选人即可如果是招非凡技能的人才,这类人才绝对比拟难找一些,会是比拟漫长的周期如果是招聘的目标是造就,多以招聘实习生为主,实习生的益处也有很多,比方能够促成公司的活跃度,能够为远期的人才培养做思考,能够升高人力的老本(总是会有很多基础性的工作),晋升公司的影响力等依据不同的状况制订不同的招聘计划,明确招聘的指标人群,更有针对性,也能力更快达到目标和后果二、我应该去哪找优良的简历?抉择平台,对于技术研发岗位,个别可抉择的平台有 BOSS 直聘、脉脉、掘金发文章时插播招聘广告、各大公众号(如前端早读课)的推送单干等,这几个平台中 BOSS 直聘相对来说是门槛最低,最容易捞到简历的,当然有条件的也能够走内推咱们先看看以后人才市场处于什么期间,是金三银四社招高峰期,还是春、秋季校招高峰期在顶峰期间,人才多,但捞人的公司更多,如果我司的待遇比其余公司更有竞争力,那就撒手去招吧,否则就先好好思考一下我司还有什么劣势,比方:我司的天文区位劣势、生存福利劣势、不加班、技术气氛沉闷、妹子多……而后捞几个简历看看以后市场整体简历品质怎么样,简历品质是有稳定的,一段时间好,一段时间差,这个要多察看,在好的时间段内放松捞他个几百三、怎么吸引求职者来投简历?被动捞简历是一种形式,但须要大量的浏览、筛选的工夫,如果没这么多工夫怎么办?那就想方法让求职者本人找上门 在明确招聘的背景和市场状况后,就能够针对性的制订招聘计划了,包含招聘的 JD(Job Description 三要素:岗位名称、职责形容、任职要求),还能够蕴含福利待遇、团队亮点等JD 做的有特色一点,能够更加吸引人才的留神,比方 JD 中体现出优良的团队气氛、丰盛的技术摸索、有挑战的我的项目等JD 中也能够体现出暖心的一面,比方对候选人的倡议(e.g: 如果你感觉暂未达到该岗位的招聘要求,能够在工作中多做一些技术摸索和思考,加油致力哦~)另外,团队中如过有丑陋妹子,那间接让妹子发招聘岗位吧,成果更好~在面试的环节、流程方面也须要制订分明,比方一共有几面,第一面次要考核内容,第二面次要考核内容……每一面的次要考核内容都要抓不同的重点,不能大家都抱着一份《面试发问表》,全副问根底的货色 四、候选人施展很不错,咱们聊得很畅快面试官须要更多思考候选人的面试体验,比方提前电话、短信、微信约好具体的面试工夫、地点、模式等,重点是提前约一下,不要间接打电话过来了就开始面试,候选人会很仓促与候选人约好面试工夫、地点、模式之后,该当给候选人发送一份确认邮件,这是作为一个面试的凭证面试开始时,面试官该当先自我介绍,再让候选人做自我介绍,候选人个别都是从大老远的中央跑过来面试,如果有条件的话筹备一杯水给候选人那就最好了面试过程中,面试官该当放平常心,多以疏导式发问的形式,开放式的发问,逐渐疏导候选人施展出最佳的体现,切勿居高临下、轻蔑面试者面试完结后,面试官肯定要询问一下候选人还有没有问题,候选人面试了几十分钟~几个小时,憋了一肚子问题,须要给候选人被动发问的机会面试完结后,无论面试通过与否,都尽可能在几日之内发送一下面试后果的邮件,告知候选人具体情况五、明天面了十几个人,有点乱套了,怎么治理这些简历呢?候选人的简历是须要存档的,不仅仅是记录候选人的状况,也是为招聘者本身积攒重要的人脉关系,尽量把微信也加上个别每个公司都会有招聘的零碎,自建的或者洽购的,总之都会有,但好不好用就~ 谁用谁晓得如果你只是想简略的记录,那就间接用 Excel 或腾讯文档最直观,记录候选人的姓名、电话、工作年限、面试日期、面试进度、简历特色、面试评语等总的来说简历的管理工作其实比拟随便,想怎么来就怎么来,清晰便于管理就行,都能比拟好的解决凌乱的问题总结好了,这次就先说说这些外表的货色,规范化流程是提效的第一步~ 置信作为求职者的读者们,终于明确为什么有的公司给你的感触十分好,而有的公司给你的感触极度差了吧~ 效率、体验都产生在细节~

May 19, 2021 · 1 min · jiezi

关于面试:算法转-Java-后端2021秋招斩获腾讯京东百度等大厂-offer-面经分享JavaGuideGuide哥

这是一篇来自算法转Java后端的一位读者的投稿!文章次要分享了作者从迷茫解体到最终斩获腾讯、京东、百度等大厂 offer 的经验。文章内容很全面、实在,置信能够对正在筹备面试的小伙伴有帮忙! 看到公众号上逐步的放出了 2022 的秋招信息,意识到又一年的秋招大戏要开始了,也不禁的想起了去年这会的本人。就想写这篇文章记录一下已经的秋招之路,也心愿能帮忙到看到这篇文章的各位。 举荐:Github标星100k的Java面试指南 个人简介不必太多介绍,也不必太多指教,三秒钟之内就能让大家尖叫...嗯...好了,不闹了。开始! 我是 2021 年毕业的研究生。本科是在一所双非大学读的,业余是软件工程,本科时学过一些 Java 开发。因为学历个别,又对科研存在空想,我抉择了考研,拼了老命总算是考上了一所中游 985。 读研期间,我次要做的是自然语言解决方向。然而!因为咱们组做自然语言解决是在我读研刚退学时起步的,甚至过后整个实验室只有一块显卡,所以,研一基本上没做什么货色。研一寒假的时候,我才在师兄的帮忙下入了门,搞了一个研究性的我的项目和一个工程类的算法我的项目。 迷茫期过后是 2020 年的 2 月底,也就是研二的下学期,因为疫情被困在家,过后的想法还是做算法,于是就把算法的我的项目筹备了一下,又筹备了筹备基础知识,就开始投实习试水。然而因为没有比拟硬的论文,也没有比拟硬的我的项目,所以投了几家大厂都没理我。 尽管,美团给了我面试机会,然而,我被面试官吊打了。到最初,只过了两家还行的“中厂”。然而,因为导师严禁进来实习,所以也没实习成。 那段时间特地迷茫,天天在网上问一些算法大佬,焦虑的不行! 我过后想:以我本人的条件筹备到 6 月,简直没可能在秋招面试上岸大厂的算法岗。 算法转 Java 后端整个 3 月都在纠结一个事件,持续硬刚算法还是转做 Java 后端。算法的确工资比拟高,然而本人其实打心里更喜爱做一些工程利用(因为就算让我做算法,我也喜爱做工程利用类型的算法)。 并且,过后本人的条件进大厂算法曾经很难了,必定去不了好的算法团队,拼一拼开发或者还能去比拟好的团队。 然而,因为 Java 次要是在本科时学的,曾经很久没有做过,很多都忘了,甚至 Java 语法都很陌生了。并且,像 JVM,Redis,RabbitMQ 相干的,过后也没学过,始终在想就几个月的工夫真的能不能把这些货色学好。还好在四月初的一天中午,躺在床上睡不着,做出了一个重要的决定: 转 Java 后端。 举荐:2021 最新Java实战我的项目!太凎了! 在征询了几个学长学姐,以及几个敌人当前,订好了学习打算。过后的打算是这样的。 首先温习 Java 的根本语法以及一些汇合用法,先达到能比拟纯熟的用 Java 写代码。因为从 2 月多就开始刷 LeetCode 了,过后曾经用 Python 刷了 30 多道,就又用 Java 把这些做过的题写了一遍,到 9 月底我的秋招完结时一共刷了 130 道左右,刷了两遍。把本人本科时用 Java 做的电商零碎又拿进去复习了一下改成了秒杀零碎,这当作我的第一个我的项目。另一个我的项目是看着网课仿照 Spring 源码做了一个简化版的 Spring 框架(只实现了几个最根本的性能)。开始学习 JVM,MySQL,Redis 的原理,以及 Java 汇合的一些实现办法等。这是在过后 4-6 月所做的筹备。到六月的时候,我的项目梳理的不太分明,其实有些中央是看网上代码写的,只是能用了,具体怎么做本人也说不清,那些面试基础知识也记得不太劳。然而因为工夫也差不多了,就开始往外投简历。 ...

May 18, 2021 · 1 min · jiezi

关于面试:常见面试题之操作系统

title: 常见面试题之操作系统categories: [操作系统]tags:[面试题]date: 2021/05/12 作者:hackett 微信公众号:加班猿 1 请你说一下过程与线程的概念,以及为什么要有过程线程,其中有什么区别,他们各自又是怎么同步的基本概念: 过程是对运行时程序的封装,是零碎进行资源调度和调配的的根本单位,实现了操作系统的并发; 线程是过程的子工作,是CPU调度和分派的根本单位,用于保障程序的实时性,实现过程外部的并发;线程是操作系统可辨认的最小执行和调度单位。 区别: 1.一个线程只能属于一个过程,而一个过程能够有多个线程,但至多有一个线程。线程依赖于过程而存在。 2.过程在执行过程中领有独立的内存单元,而多个线程共享过程的内存。(资源分配给过程,同一过程的所有线程共享该过程的所有资源。同一过程中的多个线程共享代码段(代码和常量),数据段(全局变量和动态变量),扩大段(堆存储)。然而每个线程领有本人的栈段,栈段又叫运行时段,用来寄存所有局部变量和长期变量。) 3.过程是资源分配的最小单位,线程是CPU调度的最小单位; 4.零碎开销: 因为在创立或吊销过程时,零碎都要为之调配或回收资源,如内存空间、I/o设施等。因而,操作系统所付出的开销将显著地大于在创立或吊销线程时的开销。相似地,在进行过程切换时,波及到整个以后过程CPU环境的保留以及新被调度运行的过程的CPU环境的设置。而线程切换只须保留和设置大量寄存器的内容,并不波及存储器治理方面的操作。可见,过程切换的开销也远大于线程切换的开销。 5.通信:因为同一过程中的多个线程具备雷同的地址空间,以致它们之间的同步和通信的实现,也变得比拟容易。过程间通信IPC,线程间能够间接读写过程数据段(如全局变量)来进行通信——须要进程同步和互斥伎俩的辅助,以保证数据的一致性。在有的零碎中,线程的切换、同步和通信都毋庸操作系统内核的干涉 6.过程编程调试简略可靠性高,然而创立销毁开销大;线程正相反,开销小,切换速度快,然而编程调试绝对简单。 7.过程间不会相互影响 ;线程一个线程挂掉将导致整个过程挂掉 8.过程适应于多核、多机散布;线程实用于多核 过程间通信: 管道(是一个内核缓冲区,过程以先进先出从缓冲区存取数据)命名管道FIFO(对应一个磁盘索引节点,任何过程都能够拜访)音讯队列(对每个音讯指定特定的数据类型,能够依据自定义条件接管特定类型的音讯)共享内存(效率高,间接读写内存,不须要数据的拷贝)信号量(原子操作,传递数据须要联合共享内存)套接字socket(用于不同机器间的过程通信)信号(用于告诉接管过程的某个事件曾经产生)2 请问MySQL的端口号是多少,如何批改这个端口号查看端口号: 应用命令show global variables like 'port';查看端口号 ,mysql的默认端口是3306 批改端口号: 批改端口号:编辑/etc/my.cnf文件 3 请你说一说有了过程,为什么还要有线程?线程产生的起因: 过程能够使多个程序能并发执行,以进步资源的利用率和零碎的吞吐量;然而其具备一些毛病: 过程在同一时间只能干一件事 过程在执行的过程中如果阻塞,整个过程就会挂起,即便过程中有些工作不依赖于期待的资源,依然不会执行。 和过程相比,线程的劣势如下: 从资源上来讲,线程是一种十分"勤俭"的多任务操作形式。在linux零碎下,启动一个新的过程必须调配给它独立的地址空间,建设泛滥的数据表来保护它的代码段、堆栈段和数据段,这是一种"低廉"的多任务工作形式。 从切换效率上来讲,运行于一个过程中的多个线程,它们之间应用雷同的地址空间,而且线程间彼此切换所需工夫也远远小于过程间切换所须要的工夫。据统计,一个过程的开销大概是一个线程开销的30倍左右。 从通信机制上来讲,线程间不便的通信机制。对不同过程来说,它们具备独立的数据空间,要进行数据的传递只能通过过程间通信的形式进行,这种形式不仅费时,而且很不不便。线程则不然,因为同一进城下的线程之间奉献数据空间,所以一个线程的数据能够间接为其余线程所用,这不仅快捷,而且不便。 除以上长处外,多线程程序作为一种多任务、并发的工作形式,还有如下长处: 1、使多CPU零碎更加无效。操作系统会保障当线程数不大于CPU数目时,不同的线程运行于不同的CPU上。 2、改善程序结构。一个既长又简单的过程能够思考分为多个线程,成为几个独立或半独立的运行局部,这样的程序才会利于了解和批改。 4 请问单核机器上写多线程程序,是否须要思考加锁,为什么?在单核机器上写多线程程序,依然须要线程锁。因为线程锁通常用来实现线程的同步和通信。在单核机器上的多线程程序,依然存在线程同步的问题 5 请你说一说线程间的同步形式,最好说出具体的零碎调用信号量 信号量是一种非凡的变量,可用于线程同步。它只取天然数值,并且只反对两种操作: P(SV):如果信号量SV大于0,将它减一;如果SV值为0,则挂起该线程。 V(SV):如果有其余过程因为期待SV而挂起,则唤醒,而后将SV+1;否则间接将SV+1。 其零碎调用为: sem_wait(sem_t *sem):以原子操作的形式将信号量减1,如果信号量值为0,则sem_wait将被阻塞,直到这个信号量具备非0值。 sem_post(sem_t *sem):以原子操作将信号量值+1。当信号量大于0时,其余正在调用sem_wait期待信号量的线程将被唤醒。 互斥量 互斥量又称互斥锁,次要用于线程互斥,不能保障按序拜访,能够和条件锁一起实现同步。当进入临界区 时,须要取得互斥锁并且加锁;当来到临界区时,须要对互斥锁解锁,以唤醒其余期待该互斥锁的线程。其次要的零碎调用如下: pthread_mutex_init:初始化互斥锁 pthread_mutex_destroy:销毁互斥锁 pthread_mutex_lock:以原子操作的形式给一个互斥锁加锁,如果指标互斥锁曾经被上锁,pthread_mutex_lock调用将阻塞,直到该互斥锁的占有者将其解锁。 pthread_mutex_unlock:以一个原子操作的形式给一个互斥锁解锁。 条件变量 条件变量,又称条件锁,用于在线程之间同步共享数据的值。条件变量提供一种线程间通信机制:当某个共享数据达到某个值时,唤醒期待这个共享数据的一个/多个线程。即,当某个共享变量等于某个值时,调用 signal/broadcast。此时操作共享变量时须要加锁。其次要的零碎调用如下: ...

May 12, 2021 · 1 min · jiezi

关于面试:让我在面试官面前结巴的24个XX和XX的区别

最近面试总能遇到有面试官问到let,const和var的区别,箭头函数与一般函数的区别等等等等,各种区别,我也能答出一二,但恨不能答到残缺,答全要点,而且结巴,所以这里我就对此进行一些总结(翻看各种材料,只能算偏残缺,缺失的还要靠大家评论补充,我再批改)。 1. 箭头函数和一般函数的区别a. 箭头函数和一般函数的款式不同,箭头函数语法更加简洁、清晰,箭头函数是=>定义函数,一般函数是function定义函数。 b. 箭头函数会捕捉其所在上下文的 this 值,作为本人的 this 值,定义的时候就确定并固定了。 c. 箭头函数不能作为构造函数应用,也不能应用new关键字(因为箭头函数没有本人的this,它的this其实是继承了外层执行环境中的this,且this指向永远不会扭转,作为构造函数其的this要是指向创立的新对象)。 d. 箭头函数没有本人的arguments。在箭头函数中拜访arguments实际上取得的是外层部分(函数)执行环境中的值。 e. call、apply、bind 并不会影响其 this 的指向。 f. 箭头函数没有原型prototype。 g. 箭头函数不能当作 Generator 函数,不能应用 yield 关键字。 2. var,let和const之间的区别从以下三个方面说。 变量晋升方面:var申明的变量存在变量晋升,即变量能够在申明之前调用,值为undefined。let和const不存在变量晋升问题(留神这个‘问题’后缀,其实是有晋升的,只不过是let和const具备一个暂时性死区的概念,即没有到其赋值时,之前就不能用),即它们所申明的变量肯定要在申明后应用,否则报错。 块级作用域方面:var不存在块级作用域,let和const存在块级作用域 申明方面:var容许反复申明变量,let和const在同一作用域不容许反复申明变量。其中const申明一个只读的常量(因为如此,其申明时就肯定要赋值,不然报错)。一旦申明,常量的值就不能扭转。 如何使const申明的对象内属性不可变,只可读呢?如果const申明了一个对象,对象里的属性是能够扭转的。 const obj={name:'蟹黄'};obj.name='同学';console.log(obj.name);//同学复制代码因为const申明的obj只是保留着其对象的援用地址,只有地址不变,就不会出错。 应用Object.freeze(obj) 解冻obj,就能使其内的属性不可变,但它有局限,就是obj对象中要是有属性是对象,该对象内属性还能扭转,要全不可变,就须要应用递归等形式一层一层全副解冻。 3. Bigint和Number的区别Number类型的数字有精度限度,数值的精度只能到 53 个二进制位(相当于 16 个十进制位, 正负9007199254740992),大于这个范畴的整数,就无奈准确示意了。 Bigint没有位数的限度,任何位数的整数都能够准确示意。然而其只能用于示意整数,且为了与Number进行辨别,BigInt 类型的数据必须增加后缀n。BigInt 能够应用负号(-),然而不能应用正号(+)。 另外number类型的数字和Bigint类型的数字不能混合计算。 12n+12;//报错 4. 根本数据类型和援用数据类型的区别根本数据类型:a. 根本数据类型的值是不可变的,这里你就能够联想到,是不是所有对于字符串和数字的办法都是带有返回值的,而不是扭转原字符串或数字。例如 let a='abc';a.split('');console.log(a);//abc复制代码b. 根本数据类型不能够增加属性和办法,尽管不会报错,但也只是一瞬间转为了相应包装对象,操作完又转化回原根本数据类型,不会保留后果。 c. 根本数据类型的赋值是简略赋值,根本数据类型的比拟是值的比拟。 d. 根本数据类型是寄存在栈区的 援用数据类型:a. 援用类型的值是能够扭转的,例如对象就能够通过批改对象属性值更改对象。 b. 援用类型能够增加属性和办法。 c. 援用类型的赋值是对象援用,即申明的变量标识符,存储的只是对象的指针地址。 d. 援用类型的比拟是援用(指针地址)的比拟。 e. 援用类型是同时保留在栈区和堆区中的,栈区保留变量标识符和指向堆内存的地址。 5. defer和async的区别大家应该都晓得在script标签内有这两个属性async和defer,例如<script src="./home.js" async defer></script> ...

May 8, 2021 · 4 min · jiezi

关于面试:字节一二三面面经已经OC四月底真实面试经历

一面: 自我介绍, 简略问了下我的项目实现流程, 算法题1:而后函数计算n以内三的倍数和五的倍数和,开始写了工夫复杂度O(n),面试官说不行,而后优化到了工夫空间都是O(1): 算法题2:最长无反复子串长度,一遍过力扣原题 算法题3:SQL,因为我筹备面试遗记筹备SQL了,只会简略查问,这个须要左链接子查问间接放弃 mysql索引:B+树,哈希索引,聚簇索引,非聚簇索引 汇合类:set,list,map,而后到了HashMap,TreeMap实现原理,而后到了红黑树实现原理和长处,而后到ConcurrentHashMap,HashTable 三次握手四次挥手 Mysql事物隔离级别和脏读幻读不可反复读,以及MVCC 而后就到了我的项目细节一点,就是对于我的项目细节深刻挖,事实问了对于redis和mysql双写一致性,我说应用RocketMQ事务型音讯,二阶段提交。而后问了如果音讯失落了怎么解决,我解说了对于rocketMQ避免音讯失落原理。而后面试官说这个也不能保障音讯齐全不失落,而后我说rocketMQ日志记录,呈现非凡状况能够依据日志解决,面试官问我能不能在代码层面优化一下我说不能。 而后就是另一个方面,对于超卖少卖问题,我的解决方案就是惯例计划,落单前减去库存,失败事务回滚,中间件同步音讯,个别这个计划尽管不能齐全保障不会呈现数据一致性,然而也会小概率呈现少卖状况。后果面试官说这个不对,超卖少卖都有可能,我重复解说为什么不会呈现超卖状况,后果面试官说了你有思考过勾销预约状况呈现问题的状况吗? 而后起初面试官说了我还挺不错, 二面: 自我介绍 我的项目介绍了下 算法题:k个一组翻转链表 算法题:翻转链表中指定区间的链表 全是原题间接ac了 持续深挖我的项目,有局部问题和后面反复不再具体叙述。 Tcp月udp区别,http 次要是手写RPC实战我的项目,整个流程,而后就是我的项目细节具体包含: 1:cap原理,zookeeper是cp还是ap的,为什么,选举协定,集群搭建音讯同步。 2:为什么应用netty,延长到netty线程模型,linux五种io,java三种io,零拷贝 3:自定协定原理:如何解决粘包半包问题,json,kryo序列化比拟以及原理 4:非凡状况:如果服务提供端忽然挂掉怎么办?我分了两种状况,被动下线和忽然生效解决,两头设计钩子和心跳包 Redis: 几种搭建办法 数据类型以及跳表 如何解决雪崩和缓存穿透: Java:sychornized和retreenltock 次要说了Sychornized:四种锁状态,Retreenltock:AQS 而后就是垃圾回收算法, cms过程,浮动垃圾,三色标记法 Java汇合相干,还有多线程创立的七个参数 三面: 自我介绍和我的项目介绍: 职业规划实习工夫 算法题: SQL还是不会 烧香问题:两个不平均香,每个香焚烧结束一个小时,确定45分钟(早就看过了,伪装认真思考,笔画演算,而后说出答案) Tcp如何保障可靠性 输出url过程:包含dns解析以及网络结构每层都产生什么 https:只晓得大体的, 如何避免其余网站取得ca证书混充?数字证书保留网站信息, 如何避免篡改?数字签名 数字签名具体原理?不会 虚拟内存的益处:答对了 页面缓存算法?答对了 具体实现细节:LRU答对了,然而LFU遗记了 我的项目:有些和之前一样,多了一个避免反复领取问题,答复了乐观锁和乐观锁 而后就是mysql语句执行过程 Spring IOC,AOP,动静代理 Java汇合几种,重点map问了一下 而后HashMap,为什么查找是O(1),答复到基于数组实现,数组查找公式是:元素地位=根底地位+k(参数类型占位)面试官才称心而后就是问了一些最近找实习状况,实验室状况,将来布局等等... 最初说一句(求关注,别白嫖我)三连反对一下 谢谢!

May 5, 2021 · 1 min · jiezi

关于面试:剑指-Java第-4-弹绝对硬货Spring-面试知识点总结大全

1. Spring 特点Spring 次要有如下特点: 轻量级:Spring 是非侵入式,其中的对象不依赖 Spring 的特定类;管制反转(IoC):通过 IoC,促成了低耦合,一个对象依赖的其余对象通过被动的形式传递进来,而不必该对象被动创立或查找;面向切面(AOP):反对面向切面编程,将利用业务逻辑层和零碎服务层离开;容器:蕴含并治理利用对象的配置以及生命周期,此时 Spring 就相当于一个容器;框架汇合:能将简略的组件进行配置,组合成为更为简单的利用;在 Spring 中,利用对象被申明式地组合在一个 XML 文件中;此外,Spring 也提供了事务管理、 长久化框架集成等根底性能,将应用逻辑的开发留给开发者;2. Spring 外围组件Spring 是一个分层架构,次要由如下 7 大模块所形成。Spring 模块位于外围容器,定义了创立、配置和治理 Bean 的形式。 Spring Core:提供 Spring 框架基本功能,次要组件是 BeanFactory,是工厂模式的实现,通过 IOC 机制将应用程序的配置和依赖性标准与理论的利用程序代码离开。Spring Context:一个配置文件,给 Spring 框架提供上下文信息,上下文包含 JNDI、EJB、电子邮件、国际化、校验和调度等企业服务。Spring AOP :通过配置管理个性,Spring AOP 间接将 AOP(面向切面)性能集成到 Spring 框架。从而咱们可能非常不便的应用 Spring 框架来治理任何反对 AOP 的对象。模块为基于 Spring 的应用程序中的对象提供了事务管理服务。通过应用该组件,能够不依赖其余组件九江申明性事务管理集成到应用程序中。Spring DAO:JDBC DAO 形象层提供了有意义的异样层次结构,能够用来治理异样解决和不同数据库供应商抛出的错误信息。异样层次结构简化了错误处理,而且极大升高了须要编写的异样代码数量。Spring DAO 面向 JDBC 的异样听从通用的 DAO 异样层次结构。Spring ORM:Spring 框架中插入了若干个 ORM 框架,从而提供了 ORM 的对象关系工具,其中包含 JDO、Hibernate 和 iBatis SQL Map,这些都听从 Spring 的通用事务和 DAO 异样层次结构;Spring Web:Web 上下文模块建设在应用程序上下文模块之上,为基于 Web 的应用程序提供了上下文,所以 Spring 框架反对与 Jakarta Structs 的集成。同时该模块还简化了解决多局部申请以及申请参数绑定到域对象的工作。Spring MVC:MVC 是一个全功能的构建 Web 利用的 MVC 实现,能够通过策略接口对 MVC 框架实现高度可配置。而且 MVC 还包容了 JSP、Velocity、Tiles 等视图技术。3. Spring 罕用注解注解阐明@Controller1. 用于标注管制层组件2. 用于标记一个类,示意它是一个 SpringMVC Controller 对象3. 散发处理器将扫描应用了该注解的类的办法,同时检测办法是否应用 @RequestMapping4. 可能将 Request 申请 header 局部的值绑定到办法的参数上@RestController相当于 @Component 与 @ResponseBody 的组合@Component泛指组件,当组件不好归类时进行注解@Repository用于注解 DAO 层,在 DaoImpl 类中注解@Service用于注解业务层组件@ResponseBody1. 异步申请2. 用于将 Controller 的办法返回的对象,通过适当的 HttpMessageConverter 转换为指定格局后,写入到 Response 对象的 body 数据区3. 返回的数据并非 html 的页面,而是其余某种格局的数据(json、xml)时应用@RequestMapping用于解决申请地址映射的注解,用于类或办法,用于类时,示意类中所有响应申请的办法都以该地址作为父门路@Autowired对类成员变量、办法以及构造函数进行标注,从而实现主动拆卸,通过 @Autowired 的应用来打消 get、set 办法@PathVariable用于将申请 URL 中的模板变量映射到性能解决办法的参数上,即取出 URL 模板中的变量作为参数@RequestParam用于在 Spring MVC 后盾管制层获取参数,相似 request.getParameter("name")@RequestHeader将 Request 申请 header 局部的值绑定到办法的参数上@ModelAttribute在该 Controller 所有办法在调用前,先执行该注解,可用于注解和办法参数中@SessionAttributes将值放到 session 作用域,写在 Class 下面@Valid实体数据校验,联合 Hibernate Validator 一起应用@CookieValue获取 cookie 中的值4. IoC 原理4.1 定义Spring 通过一个配置文件来形容 Bean 之间的相互依赖关系,利用 Java 的反射性能来实例化 Bean 并建设 Bean 之间的依赖关系。Spring 的 IoC 容器在实现这些底层工作的根底上,还提供 Bean 实例缓存、生命周期治理、Bean 实例代理、事件公布、资源装载等高级服务; ...

April 29, 2021 · 4 min · jiezi

关于面试:剑指-Java第-3-弹纯干货计算机网络面试知识点总结

1. 计算机网络根底1.1 主机间的通信形式客户端-服务器(C/S)客户端是服务的申请放,服务器是服务的提供方。 对等(P2P)不必辨别谁是客户端,谁是服务器,单方都可能向对方申请与提供服务。 1.2 电路 & 分组替换分组替换每个分组由首部和尾部组成,蕴含源地址和目标地址等管制信息,在同一个传输线路上同时传输多个分组互不影响,因而在同一条传输线路上容许同时传输多个分组,即分组替换不会占用传输线路。 电路替换电路替换用于电话通信零碎,两个用户之间建设通信前须要有一条专用的物理链路,而且在通信过程中始终占用该链路。因为通信过程中不可能始终在应用传输线路,因而电路替换对线路利用率很低,通常不到 10%. 1.3 时延排队时延分组在路由器的输出和输入队列中排队期待所需工夫,取决于以后网络的通信量; 解决时延主机或路由器接管到分组时进行解决所需工夫,个别这些解决包含剖析首部、从分组中提取数据、进行过错校验或查找适当路由等; 传输时延主机或路由器传输数据帧所需工夫: $$delay = length(bit)/v(bit/s)$$ 其中 length 示意数据帧的长度,v 示意传输速率; 流传时延电磁波在信道中传输所需工夫,电磁波传播速度有限靠近于光速: $$delay = length(m)/v(m/s)$$ 其中 length 示意信道的长度,v 示意电磁波在信道中的传播速度; 1.4 体系结构 体系结构协定物理层RJ45、CLOCK、IEEE802.3(中继器、集线器)数据链路PPP、FR、HDLC、VLAN、MAC(网桥、交换机)网络层IP、ICMP、ARP、RARP、OSPF、IPX、RIP、IGRP(路由器)传输层TCP(HTTP/S、FTP、POP3、SMTP、TENET、SSH)、UDP(BOOTP、NTP、DHCP)、SPX会话层NFS、SQL、NETBIOS、RPC表示层JPEG、MPEG、ASII应用层FTP、DNS、Telenet、SMTP、HTTP、WWW、NFSOSI 七层体系结构为把在一个网络结构下开发的零碎与在另一个网络结构下开发的零碎互联起来,以实现更高一级的利用,使异种机之间的通信成为可能,便于网络结构标准化,国际标准化组织(ISO)于1984年造成了开放系统互连参考模型OSI/RM(Open Systems Interconnection Reference Model,简称OSI)的正式文件。 物理层(Physical,PH): 传递信息须要利用一些物理传输媒体,如双绞线、同轴电缆、光纤等。物理层的工作就是为下层提供一个物理的连贯,以及该物理连贯体现进去的机械、电气、性能和过程个性,实现通明的比特流传输。在这一层,数据还没有组织,仅作为原始的比特流提交给下层——数据链路层。数据链路层(Data-link,D):数据链路层负责在2个相邻的结点之间的链路上实现无差错的数据帧传输。每一帧包含肯定的数据和必要的管制信息,在接管方接管到数据出错时要告诉发送方重发,直到这一帧无差错地达到接管结点,数据链路层就是把一条有可能出错的理论链路变成让网络层看起来像不会出错的数据链路。实现的次要性能有:帧的同步、差错控制、流量管制、寻址、帧内定界、通明比特组合传输等。网络层(Network,N):网络中通信的2个计算机之间可能要通过许多结点和链路,还可能通过几个通信子网。网络层数据传输的单位是分组(Packet)。网络层的次要工作是为要传输的分组抉择一条适合的门路,使发送分组可能正确无误地依照给定的目标地址找到目标主机,交付给目标主机的传输层。传输层(Transport,T):传输层的次要工作是通过通信子网的个性,最佳地利用网络资源,并以牢靠与经济的形式为2个端系统的会话层之间建设一条连贯通道,以通明地传输报文。传输层向上一层提供一个牢靠的端到端的服务,使会话层不晓得传输层以下的数据通信的细节。传输层只存在端系统中,传输层以上各层就不再思考信息传输的问题了。会话层(Session,S):在会话层以及以上各层中,数据的传输都以报文为单位,会话层不参加具体的传输,它提供包含拜访验证和会话治理在内的建设以及保护利用之间的通信机制。如服务器验证用户登录便是由会话层实现的。表示层(Presentation,P):这一层次要解决用户信息的语法示意问题。它将要替换的数据从适宜某一用户的形象语法,转换为适宜OSI外部示意应用的传送语法。即提供格式化的示意和转换数据服务。数据的压缩和解压缩、加密和解密等工作都由表示层负责。应用层(Application,A):这是OSI参考模型的最高层。应用层确定过程之间通信的性质以满足用户的需要,以及提供网络与用户软件之间的接口服务。五层协定咱们日常网络中应用的体系结构,总共能够分为 5 层,别离是: 应用层 :为特定应用程序提供数据传输服务,例如 HTTP、DNS 等协定。数据单位为报文。传输层 :为过程提供通用数据传输服务。因为应用层协定很多,定义通用的传输层协定就能够反对一直增多的应用层协定。运输层包含两种协定:传输控制协议 TCP,提供面向连贯、牢靠的数据传输服务,数据单位为报文段;用户数据报协定 UDP,提供无连贯、尽最大致力的数据传输服务,数据单位为用户数据报。TCP 次要提供完整性服务,UDP 次要提供及时性服务。网络层 :为主机提供数据传输服务。而传输层协定是为主机中的过程提供数据传输服务。网络层把传输层传递下来的报文段或者用户数据报封装成分组。数据链路层 :网络层针对的还是主机之间的数据传输服务,而主机之间能够有很多链路,链路层协定就是为同一链路的主机提供数据传输服务。数据链路层把网络层传下来的分组封装成帧。物理层 :思考的是怎么在传输媒体上传输数据比特流,而不是指具体的传输媒体。物理层的作用是尽可能屏蔽传输媒体和通信伎俩的差别,使数据链路层感觉不到这些差别。TCP/IP不严格遵循 OSI 分层概念,只有四层,相当于将五层协定中的数据链路层和物理层合并为网络结构层。 2. 五层协定详解2.1 物理层物理层上传送的数据单位是比特,其作用是实现相邻计算机节点间比特流的通明传送,尽可能屏蔽调具体传输介质和屋里设施的差别。依据信息在传输线上的传输方向,能够分为如下三种通信形式: 单工通信:单向传输半双工通信:双向交替传输全双工通信:双向同时传输2.2 链路层两台主机之间的数据传输,总是在一段一段的链路上进行传送的,此时就须要应用专门的链路层协定。在两个相邻节点间传输数据时,数据链路层将网络层交下来的 IP 数据包组装成帧,在两个相邻节点间的链路上传送帧,每帧包含数据和必要的管制信息(如同步信息,地址信息,差错控制等)。 2.3 网络层互联网的外围,向上提供数据报服务,通过 IP 协定将异构的物理网络连接起来。其工作是抉择适合的网间路由和替换节点,从而确保计算机通信的数据及时传送,配套应用的有如下三个协定: 地址解析协定 ARP网际管制报文协定 ICMP网际组治理协定 IGMP2.4 传输层传输层提供了过程间的逻辑通信,负责向两台主机过程之间的通信提供通用的 数据传输服务,向高层用户屏蔽网络层的外围细节,这一层中次要波及 UDP 和 TCP 两个协定。 ...

April 29, 2021 · 3 min · jiezi

关于面试:面经

1.自我介绍2.我的项目相干3.我的项目中遇到的艰难4.平时有看过或者钻研过哪些开源我的项目mall,翻译过去也就是商场的意思.接触的比拟多的还是无关电商零碎的开源我的项目,因为电商的我的项目里边知识点很多,学习到的货色比拟多.我在毕业设计也做无关电商我的项目的,无关秒杀那方面,最近也在学习这块的常识. 5.你感觉什么样的代码才是好的代码命名标准,在类和办法上有明了的正文,代码整洁不冗余. 6.你最善于的畛域7.你有对于本人代码进行优化过吗做过通用的异样解决,通过restful格调对url跳转进行优化,而后对于服务器来说,数据库的话配置主从库,读写拆散. 8.你最相熟的语言,说一下两个毛病最相熟的语言是java。毛病:须要下载jdk、配置运行环境, 性能相比c要略差一些。 9.面向对象有理解吗,简略说一下面向对象三大个性10.什么是递归,应用递归须要留神哪些点程所须要的多次重复计算,大大地缩小了程序的代码量. 11.说一下MySQL增删改查具体语句insert into [table] ([column],[column],[column]) values(?,?,?)delete from [table] where column = ?update [table] set column = ? where column = ?select * from [table] where [column] = ?12.SQL的语句要如何留神它的安全性13.判断链表是否有环的存在1)快慢指针. 定义两个指针,我这里就用A指针,B指针来示意. a指针在链表中一次前进一次,b指针前进两次.应用dowhile循环.如果没有环的话,b指针肯定会比a指针先到链表的尾部.如果a/b指针有下一次 指向同一个元素的援用.那么这个链表就有环.2)用java的个性来说.应用set.遍历,将这些元素一一放入hashset.判断set汇合的size是否增长. 14.栈和队列的区别1)队列是先进先出 栈是先进后出2)队列只在表的一端进行插入,并在表的另一端进行删除栈只能在表的一端插入和删除3)无关遍历:队列:基于地址指针进行遍历,而且能够从头部或者尾部进行遍历,但不能同时遍历,无需开拓空间,因为在遍历的过程中不影响数据结构,所以遍历速度要快栈:只能从顶部取数据,也就是说最先进入栈底的,须要遍历整个栈能力取出来,而且在遍历数据的同时须要为数据开拓长期空间,保持数据在遍历前的一致性15.对于二叉树的遍历16.平时有逛哪些网站17.平时有看哪些技术相干的书吗18.如何一个点是不是多边形外部19.设计模式有理解哪些,什么是代理模式20.什么是编译,什么是链接21.算法题:给定一个汇合S(没有反复元素), 输入它所有的子集 输出 1 2 3 输入 1, 2, 12, 3, 13, 23, 12322.对于互联网行业加班你怎么看23.996你怎么看24.反诘25.数据库问题多版本并发管制:读取数据时通过一种相似快照的形式将数据保留下来,这样读锁就和写锁不抵触了,不同的事务session会看到本人特定版本的数据,版本链 26.SQL语句安全性的问题(SQL注入、用户权限等,防泄露)1)sql注入,比如说mybatis框架应用${},用户输出# or等关键字造成2)当报错的时候,比如说明码谬误,在异样解决,给用户提醒账号密码谬误 ,不将全副的错误信息,或者说不将具体的异样信息裸露给用户.3)无关权限方面的,比如说给root权限,可能会引发一些数据库的关键问题.个别就是要给比拟 小的权限,不给多余的权限.27.理论有遇到过SQL注入?有遇到过,是一个敌人写的我的项目,无关打字的一个我的项目,明码忘了,就尝试过sql注入,没想到居然胜利了.我本人的我的项目没遇到过,写的时候就思考过这些.而且大多都是使用框架,相对来说这种问题比拟少见.7.链表跟数组的区别不同:链表是链式的存储构造;数组是程序的存储构造。链表通过指针来连贯元素与元素,数组则是把所有元素按秩序顺次存储。链表的插入删除元素绝对数组较为简单,不须要挪动元素,且较为容易实现长度裁减,然而寻找某个元素较为艰难;数组寻找某个元素较为简单,但插入与删除比较复杂,因为最大长度须要再编程一开始时指定,故当达到最大长度时,裁减长度不如链表不便。28.HashMap线程安不平安,为什么不平安.1)数据笼罩问题 两个线程执行put()操作时,可能导致数据笼罩.2)扩容时导致死循环.从新定位每个桶的下标,并采纳头插法将元素迁徙到新数组中。头插法会将链表的程序翻转.ab两个线程同时执行扩容操作,造成环链表.29.什么是线程平安什么是线程不平安不是线程平安、应该是内存平安,堆是共享内存,能够被所有线程拜访当多个线程拜访一个对象时,如果不必进行额定的同步控制或者其余的协调操作,调用这个对象的行为都能够取得正确的后果.栈是每个线程独有的,保留其运行状态和部分主动变量的。栈在线程开始的时候初始化,每个线程的栈.相互独立,因而,栈是线程平安的。操作系统在切换线程的时候会主动切换栈。30 多用组合少用继承,为什么继承是is-a的关系,耦合度很高,一处改会导致处处须要批改组合是一种has-a的关系,就是在一个类里对另一个类的援用.场景:平时用继承,个别还是对于它多态的使用.交给运行时判断.父子类继承的话,尽管能够缩小代码复用,但耦合度还是比拟高的.31对加班的认识对加班冲突不大.我感觉加班是失常的.依据我本人的理解. 32 GC的机制、回收的原理援用计数法:每个对象有一个援用计数属性,新增一个援用时计数加1,援用开释时计数减1,计数为0时能够回收,可达性分析法:从 GC Roots 开始向下搜寻,搜寻所走过的门路称为援用链。当一个对象到GCRoots 没有任何援用链相连时,则证实此对象是不可用的,那么虚拟机就判断是可回收对象。(1)虚拟机栈(栈帧中的局部变量区,也叫局部变量表)中援用的对象。(2)办法区中的类动态变量属性援用的对象。(3)办法区中常量援用的对象。(4)本地办法栈中JNI(Native办法)援用的对象。 3.redis和mysql的区别5.面向过程和面向对象的区别8.进入到一个景区,app怎么智能举荐商铺或者饭店?11.有理解到什么新技术吗12.编程题:输入一个数组的子集,如123,输入1,2,3,12,23,123 HTTPS和HTTP的区别次要如下:1、https协定须要到ca申请证书,个别收费证书较少,因此须要肯定费用。2、http是超文本传输协定,信息是明文传输,https则是具备安全性的ssl加密传输协定。3、http和https应用的是齐全不同的连贯形式,用的端口也不一样,前者是80,后者是443。4、http的连贯很简略,是无状态的;HTTPS协定是由SSL+HTTP协定构建的可进行加密传输、身份认证的网络协议,比http协定平安。

April 27, 2021 · 1 min · jiezi

关于面试:归类总结金三银四前端面试题8个方面让你金九银十收获满满

前言随着4月份还有几天的完结,金三银四也要完结了, 小编想综合一次面试题,把大家面试中问的面试题归类总结,于是和加入了面试的小伙伴大抵聊了一下面试状况(聊得不多),最初小编把面试题分为了8个方面,每个局部都会带有面试题及局部参考答案,可能波及到面试题范畴小,那么大家遇到的面试题也能够在评论区说说哦,给要加入金九银十的小伙伴们做个参考。 8个面试题方面(上面题目的代表面试频率呈现过屡次) JavaScript 根底Css 以及优化vue 或 react 框架相干前端打包等工程化浏览器及常见平安问题相干跨平台技术网络相干大量算法其中并没有 Html 相干的货色,一方面的确是相干的题目少,另外不会有太难的问题,平时开发时常见的状况根本能够解决。 还有很常见的 nodejs、serverless、GraphQL 等等面试题小编没有总结到,但很有可能呈现在你的题目里,相干题目要自行补课哦! 原生 JS 代码1. JavaScript 实现对上传图片的压缩? 答:读取用户上传的 File 对象,读写到画布(canvas)上,利用 Canvas 的 API 进行压缩,实现压缩之后再转成 File(Blob) 对象,上传到近程图片服务器;不过有时候咱们也须要将一个 base64 字符串压缩之后再变为 base64 字符串传入到近程数据库或者再转成 File(Blob) 对象。 思路就是 File + Canvas 的 drawImage 2. 谈一谈 JavaScript 的异步? 答: setTimeout、MutationObserver、postMessage、Promise、async、await、generator 从 MutationObserver、postMessage 会牵扯到 vue 的 $nextTick 从 generator 会聊到 co.js 实现 从 Promise 和 setTimeout 会聊到上面要说的事件循环 3. 浏览器和 nodejs 事件循环? 答:执行栈,promise 是 microTask,setTimeout 是 task ...

April 27, 2021 · 2 min · jiezi

关于面试:老哥一百个程序员居然遇到骂人的求职者

前言哈喽大家好,我是IT老哥,最近老哥面了很多人,看过的简历快上千份了,面过的程序员也差不多一百人,然而通过面试的寥寥无几,老哥会从一个面试官的角度登程,给大家剖析剖析他们面试失败的起因。 简历从简历到面试,咱们一个环节一个环节的讲,首先简历肯定要发PDF的,千万别发word,我看有的工作十年的还不晓得这个规定,Word格局是会乱的,面试官看到一份格局乌七八糟的简历,你感觉对你的印象会好吗? 我见过最离谱的Word简历就是编码都乱了,整个简历一堆乱码,是想考考老哥的技术吗?让老哥把乱码给你复原成失常格局在看?最可怕的是你本人还不晓得编码乱了,还在哪里疯狂的投简历,后果就是没有面试邀请 社招简历个别面试官比拟看重的就是技术栈和我的项目教训,技术栈别写什么把握Java根底这些,这就是一句废话,还不如写读过hashmap源码,读过AQS源码强,还有JSP、Struts、serlvet就别写了,技术栈这块把会的都写上,别写的太少,尽量多写点,前提是本人能hold住啊。 我的项目教训还有我的项目教训,要业务和技术联合起来写,每段就是一句业务背景形容,一句对应的技术实现,尽量往里套一些高级点的技术点,像做了某某性能的crud工作,这种就别写了,crud有什么可写的。 记住老哥一句话,简历上除了根本信息之后,只写重点和亮点,其余的废话不要写,因为HR每天要看很多简历,没那个工夫去抠字眼。 如果是校招简历,最好能有一些较量奖项写在下面,这样被大厂面试的几率高些。 遇到的奇葩面试者第一个案例前阵子我面试一个毕业没多久的,戴着口罩,背着书包坐在那里,感觉随时筹备走人的节奏,口罩还是放在下巴的地位,这口罩带了和没带有啥区别,而且还让面试官感觉你这个人太随便。 而后这个人还嚼口香糖,一边在那里呱唧嘴一边答复问题,遇到答复不上的间接报粗口,一场面试下来说了十几次我擦的口头禅,技术不行态度还差,这怎么能让你面试通过呢? 第二个案例一个技术还行的小伙来面试,有点自负清高,我问了几个问题答复的不对,间接反诘我要怎么答复才算对,必须要让我答复他正确的答案,每个答错的问题都是这样。 兄弟,你是来面试的,你逼迫面试官答复你正确答案,还用着挑战的口气说,还不是虚心求教的口气,罗唆你当面试官算了,这情商也太低了。老哥问了几分钟后间接让他走人,技术在牛也不必你,何况几个问题全答错了。 第三个案例一个工作8年的哥们,讲话毫无生机,整个人感觉很消极,这会让面试官感觉你这个人积极性不够,到了工作中会消极看待工作的,而且这个哥们明确说本人不想钻研技术,感觉钻研技术太累了,也不想做管理层,心累。 那兄弟你想干啥呢,你来面试跟面试官说不想钻研技术,这哪个面试官敢让你进公司工作,老哥问他那你想做什么,他说我想去做讲师,教他人学技术,我真是无奈了,态度又消极,又不想钻研技术,你怎么去教学生技术,快别误人子弟了。 第四个案例也是一个工作几年的哥们来面试,技术一般般,我预估是中级的程度,我就问他你感觉本人的技术是什么程度,他也感觉本人是中级的程度,而后我问你期待的薪资是多少,他说我要20K,真是把我惊到了,我问你上家工资多少,他说10K左右,我问他为啥要涨百分之百的工资,他说我都三年没跳槽了,涨这些失常吧。 我听完登时感觉头晕目眩。这答复真是让我无言以对。你工资涨多少和几年没跳槽没有间接关系,你的技术实力决定你的薪资高下,大家要认清这点。个别失常跳槽薪资涨幅个别在30%左右。如果你很多年没跳槽,同时技术实力又晋升了很多,那么涨幅超过30%是没问题的。 总结面试的时候,简历上写的技术点肯定要温习到位,场景题答复不上来,起码八股文要能答复上,八股文答复上来是最根本的常识把握,而后在是场景题。场景题答复不上来,八股文也答复不上来,你让面试官怎么录用你呢? 除了技术过硬,面试的态度十分重要,肯定要虚心,尊重面试官,答复问题要踊跃,不要有气无力的,面试不仅仅是考技术,还要从各个方面综合考量一个人,肯定要然面试官在技术和感觉上都对你很难受,那你面试通过的几率就十分大了。 大家有什么对于找工作的问题吗?欢送留言!!!

April 26, 2021 · 1 min · jiezi

关于面试:2021金三银四面试记录与真题分享字节美团滴滴蚂蚁等

写在后面笔者三年工作教训,平时工作上也会技术面试一些候选人,听江湖上风闻三年是个坎,目前刚好也有三年没有进去面试了,想进去考验考验本身功底如何? 次要投递了一些可视化与基础设施建设相干方向的职位,通过一个多月次要的面试后果如下: 字节:根底工程方向,offer美团:可视化方向,offer百度:小程序方向,业务面挂滴滴:可视化方向,offer360:奇舞团,offer蚂蚁:可视化方向,offer上面就别离开展面试的一些公司,列出记得的技术与业务面的一些面试题,这里不列出答案,如果对问题感兴趣,自我思考或者播种更大一些 面试考查内容会次要依据集体我的项目经验状况进行考核,故局部内容仅供参考面试公司字节一面typeof 类型判断状况代码执行状况let a = 0, b = 0;function fn(a) { fn = function fn2(b) { alert(++a+b); } alert(a++);}fn(1);fn(2);代码执行状况async function async1() { console.log('async1 start') await new Promise(resolve => { console.log('promise1') }) console.log('async1 success') return 'async1 end'}console.log('srcipt start')async1().then(res => console.log(res))console.log('srcipt end')编程题:实现 add 办法const timeout = (time) => new Promise(resolve => { setTimeout(resolve, time)})const scheduler = new Scheduler()const addTask = (time, order) => { scheduler.add(() => timeout(time)) .then(() => console.log(order))}// 限度同一时刻只能执行2个taskaddTask(4000, '1')addTask(3500, '2')addTask(4000, '3')addTask(3000, '4').....//Scheduler ?//4秒后打印1//3.5秒打印2//3进入队列,到7.5秒打印3 //...require('xxx') 查找包过程算法题:判断是否有环function ListNode(val) { this.val = val; this.next = null;}let a = new ListNode(4);let b = a.next = new ListNode(1);let c = b.next = new ListNode(8);let d = c.next = new ListNode(4);let e = d.next = b;//判断是否有环//比方上述是有环的Vue use 实现逻辑Vue 中 nextTick 实现原理Vue 组件中的 data 为什么是一个办法二面聊 Flutter、React Native、比照、绘制、原生API、性能思考、webView、动态文件分包加载更新、本地动态文件服务器编程手写设计题:门路增加删除的数据结构与办法编程手写设计题:Alert 组件设计,防止多次重复弹出AMD、CMD、UMD、Common.js、ESModule 模块化比照,手写兼容多种模块化函数手写 Proxy 实现数据劫持手写 deepClone聊我的项目难点三面面试官玉北自我介绍聊成长最多方面聊压力最大的经验聊小组带队的经验,组内成员的造就聊线上事变的经验聊利用 Flutter 做了哪些事件聊本人设计的技术计划聊残缺的零碎设计经验聊前端简单的设计反诘美图 - A 部门代码题: 局部翻转// 输出:const arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];const n = 3// 输入:[10, 7, 8, 9, 4, 5, 6, 1, 2, 3];function reverse(arr, n) { }//解法一:双指针办法代码题: 数组去反复,如果思考简单类型,思考援用去重// 数组去重// 1. Set// 2. filter O(n2)// 3. Map // 4. js 对象 { }const arr = [1, 1, 2, 3, '1', x, y, z];const x = { a: 100 }const y = { a : 100 }const z = xconst arr2 = [x, y, z]function uniq(arr) { // TODO:}如何判断是 new 还是函数调用function foo() { // new 调用 or 函数调用}new foo();foo();// 思路1: new.target// 思路2: instanceof// 思路3: constructor 以下函数调用会产生什么状况 ...

April 26, 2021 · 3 min · jiezi

关于java:B站HR炫耀资产贬低面试者无独有偶校招污点事件记录帮你避雷

背景明天一早起来就吃了个大瓜,当然不是娱乐圈那种,是咱们秃头圈的瓜,事件是这样的, 某B站游戏部门面试官在北邮做校招的时候夸耀本人财产,肆意贬斥面试者 据面试者及在场同学说,该面试官的蛊惑行为和舆论包含但不限于: 1. 北邮人眼界太低了,仅限于一个圈,不如我家孩子,五岁不会说中文,只会说英语,能够和白人交换。 2. 某 40 余岁中年男性面试官夸耀本人身价过亿在北京有 x 套房,有辆法拉利。 3. 示意本人团队都为清北或者 qs 前 3 学生,你什么都不会,怎么好意思来? 4. 示意北邮人太塌实,眼界太窄,只重视互联网高薪大厂,尽管哔哩哔哩薪酬个别,但能够让你领会到空虚工作的感觉。 5.有名女生口试第一却被说女生不适宜做后端 6. 在面试完结后,面试官们对立拉黑求职者的联系方式如电话微信等,非常具备纪律性。 7. 深夜哔哩哔哩校招组拨打电话要求涉事同学删除内网论坛帖子。...尽管面试是1v1,目前也没有录音或视频流进去,但现场那么多学生佐证,以及这名面试官的姓名,出身,部门都被扒进去来了,所以我集体还是偏差北邮学生舆论的。尽管我很喜爱逛P站,哦不,B站。 短短的一番话同时蕴含了文化虚无、种族歧视、炫富、学历歧视、职场PUA以及性别歧视,我间接好家伙!说实话,我都不敢相信一个凡是智力失常点的人能在公开场合说出这些舆论,但事实背后又不得不信,只能说生存比影视更有戏剧性。 值得一提的是,B站创始人徐逸也是北邮的。 尽管曾经有自称当事人的账号发了廓清,但一个刚注册的小号来做公关,我示意存疑, 原答复地址:https://www.zhihu.com/questio... 当然我也只是吃瓜而已,两方的各执一词与扯皮跟我要写的内容无关了,本文要写的是面试时各位学弟学妹们可能要遇到的一些相似上述事件的恶心人的事,能够让你们在校招时能够避开这些坑。 互联网公司校招污点事件记录这是我之前在GitHub上发现的一个网页,感觉挺有意义的就珍藏了, 发这个并不针对某个公司或者某个人,而是校招时利用学生党不知世事做的一些恶心人的事, 发这个旨在帮忙正在进行校招或者行将加入校招的同学们提供一个参考以避雷,并不是说这些公司就再也不能投了,毕竟也不能因噎废食,该怎么面怎么面,只是留神这些坑就好啦。 污点行为包含但不限于:毁意向书、毁两方协定、毁三方协定、试用期裁员、大量裁应届生。 污点行为不包含:毁OC(除非大量)、试用期完结未通过(除非大批量蓄意)。 GitHub原文地址:https://github.com/shamecom 最新面试题和避雷方针最近不只是校招火爆,社招也正是金三银四,很多筹备换公司或者刚毕业的敌人想必都在抓紧时间刷题。 但网上的面试题这么多,不晓得该怎么刷,刷哪些? 我整顿了一下最新的Java后端开发常问面试题和避雷方针,能够间接点击支付,心愿对你有所帮忙 须要什么学习材料也都能够找我,都能够收费分享,毕竟我网盘3526G的存储可是正经的学习材料 而后,能够点个赞和珍藏吗兄弟们? end

April 25, 2021 · 1 min · jiezi

关于javascript:阿里巴巴某子公司一面

1、setTimeout 第一个回调函数如果产生异样如何捕捉2、装璜器理解过吗3、http301 和 302 别离代表什么?那么400和401呢?4、csrftoken 跨站攻打如何防备6、es6 外面的fetch 15分钟搞定、凉凉。

April 25, 2021 · 1 min · jiezi

关于c:oppo和海康嵌入式软件工程师面经总结

[TOC] 哈喽,大家好。分享下春招面试的两家公司。海康和oppo是三月初的时候投递的,尽管,秋招曾经签了。然而,我还是想充分利用下应届生的身份,搏一搏更大的公司和更高的待遇。 海康缺口比拟大,始终在招人。oppo春招不像秋招那样,卡简历卡的那么严格,一般学校的学生也有了很大的机会。 两家公司的面试都不太难,问题都是提前准备到的。所以,口试面试的一些八股文,该背还是要背的。毕竟,面试的时候,答不上来等于不会。 八股文的内容,能够看下这篇文章嵌入式软件工程师口试面试指南-C/C++。所有对于口试面试的内容,我都会同步在github(https://github.com/ZhongYi-Li... 海康一面(3.23,35min)自我介绍我的项目介绍你做的这个我的项目遇到了那些问题,如何解决的?移植uboot,只做了移植吗?用的那个文件系统?移植过程中,网卡驱动做了那些工作?写过那些驱动,讲一个你相熟的?写驱动过程中,遇到过什么问题,如何解决的?对网络设备驱动有理解吗?你有什么想问我的?HR面(3.30,25min)自我介绍作为南方人,你对北方的饮食,气象习惯吗?为什么写博客?读研也挺忙的,写博客不会影响你日常工作吗?团队合作能力怎么样?举个例子?四周的人是如何评估你的?三个词概括你本人签约答疑(4.9,30min)4.9号下午2点,腾讯会议,HR次要介绍海康的主营业务,福利待遇,降职通道,公司文化等各个方面。 当天下午六点,另一个负责薪资的HR打电话告知了薪资。待遇不称心,拒了。 OPPO一面(4.2,20min)自我介绍三个我的项目,问的很具体SPI是什么?有几条线?几种模式?应用IO模仿过SPI吗?堆和栈有什么区别?调用函数时,有那些内容须要压栈?有什么要问我的?4.4号打来电话,告知一面通过,清明节后安顿二面。 二面(4.9,40min)自我介绍我的项目uboot启动流程uboot启动前还须要做那些事件?uboot启动时应用的是物理地址还是虚拟地址?MMU要开启吗?x86汇编和Arm汇编有什么区别?介绍一个你相熟的驱动程序操作系统学过吗?自旋锁和信号量有什么区别?Linux零碎的启动流程学过那些专业课,哪些学的比拟好?你有什么想问我的?三面(4.12,15min)自我介绍HR介绍部门和那个公司签约了?对工作地有什么要求?你有什么想问我的?Offer4.15收到录用排序的告诉,4.20发下正式offer。影像部门,在深圳,C/C++岗位,工作内容次要是相机驱动,图像调测等,进去后随机分岗。 oppo软工和影像加班是真的多,11点后上班是常态,每周六天,每年强制淘汰5%。薪资待遇给的白菜价,而且,没有argue的余地。综合各个方面思考,回绝了。 总结春招到四月底了,根本算完结了。我应该也不会再面了。原本,还挺想去紫光展锐天津的。然而,因为秋招的时候回绝了紫光展锐,春招时,紫光展锐间接不给机会了。 对于口试面试,做个简略总结吧。更具体的内容,能够到github查看口试面试的一系列内容。(点击浏览原文能够中转) 扎实根底,筹备好八股文。面试的重点,次要是基础知识和综合素质的考查。简历重点突出。简历上的内容,肯定把你想要面试官问的内容放在一眼能够看到的中央。要对写在简历上的每一个字负责。能够适当吹牛,然而,你要保障能够自圆其说。心态。无论是秋招,还是春招,心态肯定要调整好。像我本硕都是双非的,简历投出去没音讯,被刷掉很失常。被大公司刷了KPI也很失常。多投简历,充分利用期待期,不要在一棵树上吊死。投完简历,简历并不一定会被及时处理,两头还有很长的期待期,能够利用这段时间面试其余的公司,让本人放弃在一个很好的面试状态。及时跟进,及时反馈。一般来讲,面试后果一周内都会给到。如果在面试完一周后没有任何音讯,能够尝试给负责的HR打电话询问具体情况。碎碎念交换群的人越来越多了,群里交换气氛也不错。最近,在群里,群友还发现了致富门路,哈哈。 github链接点击跳转

April 23, 2021 · 1 min · jiezi

关于面试:记录一次蚂蚁金服的前端面试经历

坐标成都,大专,4年前端,分享一次本人在蚂蚁金服的面试经验。 一面1.自我介绍答:我是XXX,经验。。。。 2.vue data响应式的实现答:啪啦啪啦说了一大堆,感觉我很兴奋。 3.vue computed的实现答:好吧到这里我就卡住了,因为我过后比拟缓和了,只管我心田不停的劝告本人,而后脑海一片空白。 4.你在css方面的善于?答:我善于的是css中的定位。 5.请具体介绍下定位?答:static,fixed,relative,absolute,sticky,inherit。而后就它们的用法别离做了介绍。 6.你还有什么想问的吗?略。 二面1.webpack的配置形式和编译过程。答:这个题比拟大,我感觉我答的也不是很好。 2.解析URL参数。我过后的思路就是这样,通过截取到字符串前面的参数,而后通过正则去进行匹配,别离匹配参数名和参数值,它们肯定是匹配到二个数组,而后遍历其中一个数组,就能够了。以下是我面试完之后依据思路实现的残缺代码,当然面试的时候是必定写不到这么残缺的。 var getURLParam = function(url){ let res = {}; if(url.lastIndexOf("?") === -1)return res; let param = decodeURIComponent(url.slice(url.lastIndexOf("?") + 1)); let keys = param.match(/\w+\=|\=/g); keys && (keys = keys.map(k => k.replace(/\=/g,""))); let values = param.match(/(\=(\w+|\s*)\&)|(\=(\w+|\s*))/g); values && (values = values.map(v => v.replace(/\&|\=/g,""))); keys && keys.forEach((k,i) => res[k] = values[i]); return res; }3.实现通用的批量更新策略。 let notifyFn; function fn1(){ notifyFn(); statement1; statement2; } function fn2(){ statement3; notifyFn(); statement4; } function fn3(){ statement5; statement6; notifyFn(); } async function onMount(){ notifyFn = update(() => { //在statement6执行完之后执行 }) fn1(); await Promise.resolve(); fn2(); await Promise.resolve(); fn3(); }这道题,我第一次看到的时候是一脸懵逼的状态,齐全看不懂这道题的考察点是什么,只管我问了一下面试官,面试官给我讲了一番,我还是没有听明确。面试官说咱们先跳过这一道题,来剖析下一道题。 ...

April 22, 2021 · 1 min · jiezi

关于前端:350页前端校招面试题直击大厂前端基础前端核心计算机基础项目Hr面

前言思考到关注的小伙伴们也会有在校生或应届生,要加入校招的同学,始终挺想总结一些对于校招面试题,赶在春招完结前终于写完了,除了写到前端方面的面试题,我的项目、职业倒退、H面等高频问题也会有,写的很具体,全方面做好筹备,为同学的校招保驾护航! 目录1.HTML2.CSS3.前端根底4.前端外围5.前端进阶6.挪动端开发7.计算机根底8.算法与数据结构9.设计模式10.我的项目11.职业倒退12.Hr面 注释HTML1.浏览器页面有哪三层形成,别离是什么,作用是什么?2.HTML5的长处与毛病?3.Doctype作用? 严格模式与混淆模式如何辨别?它们有何意义?4.HTML5有哪些新个性、移除了哪些元素?5.你做的网页在哪些浏览器测试过,这些浏览器的内核别离是什么?6.每个HTML文件里结尾都有个很重要的货色,Doctype,晓得这是干什么的吗?7.说说你对HTML5意识?(是什么,为什么)8.对WEB规范以及W3C的了解与意识?9.HTML5行内元素有哪些,块级元素有哪些, 空元素有哪些?10.什么是WebGL,它有什么长处?11.请你形容一下 cookies,sessionStorage 和 localStorage 的区12.说说你对HTML语义化的了解?13.link和@import的区别?14.说说你对SVG了解?15.HTML全局属性(global attribute)有哪些? CSS1.解释一下CSS的盒子模型?2.请你说说CSS选择器的类型有哪些,并举几个例子阐明其用法?3.请你说说CSS有什么特殊性?(优先级、计算非凡值)4.要动静扭转层中内容能够应用的办法?5.常见浏览器兼容性问题与解决方案?6.列出display的值并阐明他们的作用?7.如何居中div, 如何居中一个浮动元素?8.CSS中 link 和@import 的区别是?9.请列举几种革除浮动的办法(至多两种)?10.block,inline和inlinke-block细节比照? 前端根底1.说一下http和https2.tcp三次握手,一句话概括3.TCP和UDP的区别4.WebSocket的实现和利用5.HTTP申请的形式,HEAD形式6.一个图片url拜访后间接下载怎么实现?7.说一下web Quality(无障碍)8.几个很实用的BOM属性对象办法?9.说一下HTML5 drag api10.说一下http2.0 前端外围1.JSONP的毛病2.跨域(jsonp,ajax)3.如何实现跨域4.dom是什么,你的了解?5.对于dom的api有什么6.ajax返回的状态7.实现一个Ajax8.如何实现ajax申请,如果我有多个申请,我须要让这些ajax申请依照某种程序一次执行,有什么方法 前端进阶1.前端测试2.接口文档3.webpack和gulp区别(模块化与流的区别)4.redux用途5.redux里罕用办法6.redux里罕用办法7.vue双向绑定原理8.说说vue react angularjs jquery的区别 挪动开发1.介绍一下react2.React单项数据流3.react生命周期函数和react组件的生命周期4.react和Vue的原理,区别,亮点,作用5.reactJs的组件交换6.有理解过react的虚构DOM吗,虚构DOM是怎么比照的呢7.我的项目里用到了react,为什么要抉择react,react有哪些益处8.怎么获取真正的dom 计算机根底1.TCP建设连贯的三次握手过程2.cdn原理3.HTTP的头部蕴含哪些内容。常见的申请办法(我为什么要说前面的options,head,conn4.申请办法head个性5.HTTP状态码,301和302有什么具体区别,200和304 的区别6.OSI七层模型7.TCP和UDP的区别,为什么三次握手四次挥手8.HTTP缓存机制 算法与数据结构1.二叉树层序遍历2.B树的个性,B树和B+树的区别3.尾递归4.如何写一个大数阶乘?递归的办法会呈现什么问题?5.把多维数组变成一维数组的办法6.晓得的排序算法 说一下冒泡快排的原理7.Heap排序办法的原理?复杂度?8.几种常见的排序算法,手写 我的项目1.介绍一个做过的我的项目2.遇到的难题,怎么解决3.简略的自我介绍4.我的项目的同源解决,逾越相干5.遇到过什么平安问题,怎么解决的6.让你率领一个小团队实现一个我的项目,我会怎么做?7.前端的我的项目如何进行优化,挪动端呢8.我的项目中应用了iframe,说说iframe的优缺点 职业倒退1.介绍一下前端的学习经验2.作为一个业余的前端,你感觉应该把握哪些常识3.什么时候接触前端 4.大学学过哪些编程的课5.对将来三年职业的布局6.你个别是通过什么形式学习前端的?7.你还有什么我没问到的劣势吗8.看过什么书 HR面1.自我介绍2.为什么要学习前端3.到当初为止接触过几个我的项目,有在哪里实习过?4.让你播种最多的我的项目,你做了什么? 篇幅无限起因,题目和解析没有全副收回来,须要以上残缺学习笔记PDF的,请点击这里就能够支付啦 面试题小编以文档模式整理出来了,前端的学习视频小编发到了b站,视频有前端入门到精通、零根底带你实现小程序实战我的项目等,同学搜“焖豆不闷”就能够关注和观看啦。感激小伙伴们的反对!

April 22, 2021 · 1 min · jiezi

关于ios:iOS面试汇总含面经面试讲解面试题等栏目持续更新

整顿的一些iOS面试相干问题,继续更新,敬请关注肯定不要忘了关注啊(不说三遍然而同样重要)记得看音讯 前言:最近应该有很多小伙伴去跳槽面试的吧,置信各位有的曾经顺利收到offer了,而有些则是碰壁了,那么我在这里给大家筹备了相干面试材料,还有相干算法材料。想理解的可找我拿 有材料需要的能够理解下,有对于包含 数据结构、底层进阶、图形视觉、音视频、架构设计、逆向安防、RxSwift、flutter,等方面的材料,面试材料就在群文件外面可自行下载,有什么问题也能够间接在群外面提出来,相互交换,同时群内有群友发内推机会,一起共同进步! 1、iOS面试题--iOS开发三年教训 靠这份面试题让我从15k到25k 2、iOS面试题--2021年,整顿的iOS高频面试题及答案 3、iOS面试题--iOS面试(内含面试全流程,面试筹备工作面试题等) 4、iOS面试题--阿里、字节:一套高效的iOS面试题之Block 5、iOS面试题--2021年最新整顿的iOS面试题(附答案),各位跳槽面试的都来看看吧 6、iOS面试题--Runtime面试题与栈区参数 7、iOS面试题--论iOS面试题呈现以下题目的概率各有多少? 8、iOS面试题--阿里、字节:一套高效的iOS面试题之多线程 9、iOS面试题--iOS面试珠玑 10、iOS面试题--iOS面试五十题(附答案) 11、iOS面试题--阿里、字节:一套高效的iOS面试题之Runloop&KVO 12、iOS面试题--跳槽面试应该留神的Swift知识点 13、iOS面试题--《新浪微博分析 iOS 高级面试》笔记(十一、十二):算法、第三方库相干面试问题 14、iOS面试题--iOS高频面试题及答案 15、iOS面试题--iOS经典面试题总结反思(附答案) 17、iOS面试题--iOS面试题-UI篇 18、iOS面试题--iOS面试之内存治理 19、iOS面试题--(面试常识大节一)iOS面试题及答案 20、iOS面试题--iOS 面经涂鸦、网易、哈啰、阿里好几个BU等等。最初也是顺利拿到了offer 21、iOS面试题--小米百度bigo 滴滴 快手等iOS 面试题 22、iOS面试题--作为iOS开发,这道面试题你能答出来,阐明你根底很OK! 22、iOS面试题--百度、腾讯iOS工程师社招面经 23、iOS面试题--[(面试常识大节二)iOS面试题及答复](https://www.jianshu.com/p/59e... 24、iOS面试题--[]() 25、iOS面试题--[]() 26、iOS面试题--[]() 面经1、iOS面试--2021年 字节客户端(iOS)一面面经 2、iOS面试--腾讯 美团 字节 抖音 面经 3、iOS面试--美团(iOS客户端)面经 4、iOS面试--2021年 腾讯网易字节面经 5、iOS面试--对于网易有道 iOS二面凉经 6、iOS面试--过招多家大厂提炼的iOS面试心经 7、iOS面试--iOS面试经验(心愿对大家有所帮忙) 8、iOS面试--快手iOS面经 9、iOS面试--字节抖音iOS客户端实习 123hr面 面经(等offer) 10、iOS面试--[]() 11、iOS面试--[]() 上面这些是视频解说1、iOS面试剖析--【iOS】你想要的面试技巧 2、iOS面试剖析--【iOS】美团GCD面试题剖析! 3、iOS面试剖析--【iOS】Block的底层原理和面试坑点 4、iOS面试解说--iOS大厂面试题解说第一讲 5、iOS面试解说--iOS大厂面试题解说第二讲 6、iOS面试解说--iOS面试题之离屏渲染(曾数次呈现在字节,腾讯,阿里,滴滴,美团) 7、iOS面试题 -- iOS面试问题及答案(一) ...

April 21, 2021 · 1 min · jiezi

关于rocketmq:AUCROC面试中80都会问的知识点

摘要:ROC/AUC作为机器学习的评估指标十分重要,也是面试中经常出现的问题(80%都会问到)本文分享自华为云社区《技术干货 | 解决面试中80%问题,基于MindSpore实现AUC/ROC》,原文作者:李嘉琪。 ROC/AUC作为机器学习的评估指标十分重要,也是面试中经常出现的问题(80%都会问到)。其实,了解它并不是十分难,然而好多敌人都遇到了一个雷同的问题,那就是:每次看书的时候都很明确,但回过头就忘了,常常容易将概念弄混。还有的敌人面试之前背下来了,然而一缓和大脑一片空白全忘了,导致答复的很差。 我在之前的面试过程中也遇到过相似的问题,我的面试教训是:个别口试题遇到选择题根本都会考这个率,那个率,或者给一个场景让你选用哪个。面试过程中也被问过很屡次,比方什么是AUC/ROC?横轴纵轴都代表什么?有什么长处?为什么要应用它? 我记得在我第一次答复的时候,我将准确率,精准率,召回率等概念混同了,最初一团乱。回去当前我从头到尾梳理了一遍所有相干概念,前面的面试根本都答复地很好。当初想将本人的一些了解分享给大家,心愿读完本篇能够彻底记住ROC/AUC的概念。 ROC的全名叫做Receiver Operating Characteristic,其次要剖析工具是一个画在二维立体上的曲线——ROC 曲线。立体的横坐标是false positive rate(FPR),纵坐标是true positive rate(TPR)。对某个分类器而言,咱们能够依据其在测试样本上的体现失去一个TPR和FPR点对。这样,此分类器就能够映射成ROC立体上的一个点。调整这个分类器分类时候应用的阈值,咱们就能够失去一个通过(0, 0),(1, 1)的曲线,这就是此分类器的ROC曲线。个别状况下,这个曲线都应该处于(0, 0)和(1, 1)连线的上方。因为(0, 0)和(1, 1)连线造成的ROC曲线实际上代表的是一个随机分类器。如果很可怜,你失去一个位于此直线下方的分类器的话,一个直观的补救方法就是把所有的预测后果反向,即:分类器输入后果为正类,则最终分类的后果为负类,反之,则为正类。尽管,用ROC 曲线来示意分类器的性能很直观好用。 可是,人们总是心愿能有一个数值来标记分类器的好坏。于是Area Under roc Curve(AUC)就呈现了。顾名思义,AUC的值就是处于ROC 曲线下方的那局部面积的大小。通常,AUC的值介于0.5到1.0之间,较大的AUC代表了较好的性能。AUC(Area Under roc Curve)是一种用来度量分类模型好坏的一个规范。 ROC示例曲线(二分类问题): 解读ROC图的一些概念定义: 真正(True Positive , TP)被模型预测为正的正样本;假负(False Negative , FN)被模型预测为负的正样本;假正(False Positive , FP)被模型预测为正的负样本;真负(True Negative , TN)被模型预测为负的负样本。灵敏度,特异度,真正率,假正率在正式介绍ROC/AUC之前,咱们须要介绍两个指标,这两个指标的抉择也正是ROC和AUC能够忽视样本不均衡的起因。这两个指标别离是:灵敏度和(1-特异度),也叫做真正率(TPR)和假正率(FPR)。 灵敏度(Sensitivity) = TP/(TP+FN) 特异度(Specificity) = TN/(FP+TN) 其实咱们能够发现灵敏度和召回率是截然不同的,只是名字换了而已。 因为咱们比较关心正样本,所以须要查看有多少负样本被谬误地预测为正样本,所以应用(1-特异度),而不是特异度。 真正率(TPR) = 灵敏度 = TP/(TP+FN) 假正率(FPR) = 1- 特异度 = FP/(FP+TN) 上面是真正率和假正率的示意,咱们发现TPR和FPR别离是基于理论体现1和0登程的,也就是说它们别离在理论的正样本和负样本中来察看相干概率问题。 正因为如此,所以无论样本是否均衡,都不会被影响。比方总样本中,90%是正样本,10%是负样本。咱们晓得用准确率是有水分的,然而用TPR和FPR不一样。这里,TPR只关注90%正样本中有多少是被真正笼罩的,而与那10%毫无关系,同理,FPR只关注10%负样本中有多少是被谬误笼罩的,也与那90%毫无关系,所以能够看出: 如果咱们从理论体现的各个后果角度登程,就能够防止样本不均衡的问题了,这也是为什么选用TPR和FPR作为ROC/AUC的指标的起因。 或者咱们也能够从另一个角度思考:条件概率。咱们假如X为预测值,Y为实在值。那么就能够将这些指标按条件概率示意: 精准率 = P(Y=1 | X=1)召回率 = 灵敏度 = P(X=1 | Y=1)特异度 = P(X=0 | Y=0)从下面三个公式看到:如果咱们先以理论后果为条件(召回率,特异度),那么就只需思考一种样本,而先以预测值为条件(精准率),那么咱们须要同时思考正样本和负样本。所以先以理论后果为条件的指标都不受样本不均衡的影响,相同以预测后果为条件的就会受到影响。 ...

April 21, 2021 · 4 min · jiezi

关于面试:从小厂逆袭快手我是如何从PHP转Java的

我将我本次面试遇到的面试题整顿成了一份面经,大家能够关注我的公众号【haxianhe】,回复 “面经” 支付。 这篇文章拖了良久了,这篇文章是面试三部曲的最初一篇。 本篇文章将从如下三个角度讲述: 我为什么要转语言面试对要转语言的要求是什么如何转语言我为什么要转语言其实我刚上大学的时候学的是C++,前面大一下学期进入实验室学的C#(大学期间的我的项目也以C#为主),大二开始跟着课程学Java。 所以,在校期间我接触过C++,C#,Java,其中有C#的我的项目教训。 然而,毕业之后我却开始做了 PHP(不得不说人生无常),也是我的第一门脚本语言。 其实接触了这么多编程语言之后,也认可很多人常说的这句 “语言只是个工具,做什么语言不重要” 这句话,然而这句话没有提到的是,不同语言背地的生态圈中新人的概念了解老本、学习老本却截然不同。 简略来说就是:用什么语言对工作很多年的人来说没什么区别,然而对老手的成长有区别(大佬随便...)。 面试对要转语言的要求有多高这里我仅以 PHP 转 Java 为例,面试过程中对Java的要求如下: 会 Java 的根本语法(能够用 Java 写算法题)会一些 Java 常见的面试题(根底、容器、并发、JVM 等)如何转语言能够看到其实没有咱们设想的那么高,因为面试官也晓得他是在面你一门不平事不必的语言,所以他的心里期待没有那么高。 会 Java 的根本语法 对于这一点其实很简略,反正面试前也要刷题,那间接以你要转的语言去刷题就好了。 会一些 Java 常见的面试题 都是一些陈词滥调的问题,面试前温习温习就行,这里分享给大家一个 Github 开源我的项目:https://github.com/Snailclimb... 小结总的说来,转语言没有那么难,平时用要转语言去刷刷题,面试前看看要转语言的常见面试题,根本语言这块就没有太大问题,至于其余的中间件,技术计划,我的项目等等则和转不转语言没关系了。 面试三部曲 涨薪50%,从小厂逆袭快手 - 附面经从小厂逆袭快手,我是如何筹备面试的从小厂逆袭快手,我是如何从PHP转Java的此外,我还将我本次面试遇到的面试题整顿成了一份面经,大家能够关注我的公众号【haxianhe】,回复 “面经” 支付。

April 21, 2021 · 1 min · jiezi

关于面试:干货996-前端人如何持续学习

0. 前言周五的时候有个微信好友给我发了个这样的音讯,问我 996 的现状下该怎么办? 我说,具体怎么办得本人摸索,然而继续学习肯定是关键词。 那问题来了,996 下,咱们该如何继续学习? 想了一个周末,决定写一篇文章分享一下本人的心得(灵机一动肝的一篇文章,没有太斟酌文字,仅仅是本人的心得,供大家参考,如有不足之处还请包涵),可能对于像我一样的一般的前端开发者,会有一些帮忙。 关注公众号「前端试炼」回复“学习办法”获取残缺导图。 总的来说,大家找到适宜本人的学习办法才是最要害的。 1. 被动学习和被动学习在学校的时候,咱们每天有固定的工夫用于学习,有老师给你疏导方向,给你答疑解惑。然而到了工作之后,这所有都没了,咱们须要在搬砖之余抽时间学习。 咱们将学习分为被动学习和被动学习: 被动学习:在工作中,因为主观须要而去学习(比方实现产品经理提出的需要、设计一个技术计划、跳槽面试等)被动学习:主观地去为了个人成长被动 push 本人去学习(比方看书、浏览公众号文章、看社区开源我的项目源码等)咱们也能够从目标来辨别被动学习和被动学习: 被动学习:进步解决问题的能力,为了吃饭被动学习:进步外围竞争力,为了更好地吃饭2. 被动学习先来看一下被动学习中如何把握节奏,找到适合的办法。这里次要分为两方面来讲:工作和面试。 2.1 工作在工作中,须要学习的场景个别就两种:需要和产出。 如何实现这个需要如何更优雅地实现这个需要如何设计一个技术计划总结最佳实际如何调试、看日志,如何定位问题...总结来看就是一个如何在工作中解决问题。在此基础上,咱们会想方法将它总结、输入。 如何应用 xxx 解决 xxx 问题xxx 的最佳实际深度学习 xxxxxx 在 xxx 的利用...总结的过程肯定是一个学习的过程。 2.2 面试面试过的人都晓得,筹备面试真的很累,继续输出大量的常识。 2.2.1 常识总结每一次总结都是一次很好学习的机会。 总结本人把握的前端常识体系 总结常识体系的过程是一个查缺补漏的过程。遇到没把握或者理解不深的知识点,务必去理解、搞清楚,否则就不算把握。 总结本人做过的我的项目 难点、亮点技术架构最佳实际波及到的所有技术点都能够挖一下,看看有没有某个点是本人形容不清的2.2.2 刷题不多说,就是刷 LeetCode:剑指 offer、大厂题库、演绎总结。 2.2.3 背题尽管背题这个词可能不太优雅,然而真的是必要的。 很多前端实践、方法论的知识点还是须要强行记忆的,因为你平时基本不会去记忆特地齐备的实践。 背题的过程又是一次查缺补漏的过程,因为你得放心你背的内容会不会被面试官连环诘问。 2.2.4 复盘去面试一轮,复盘面试过程,查缺补漏。总结遇到的面试题,理清思路和参考答案即可。 3. 被动学习 这里总结几种目前大多数前端开发者会用来被动学习的路径(⭐️ 为举荐指数): 书:⭐️⭐️⭐️⭐️⭐️社区:⭐️⭐️⭐️公众号:⭐️⭐️⭐️⭐️常识付费:⭐️⭐️⭐️培训班:⭐️在本文中会形容不同路径的长处和毛病,以及我当初是如何学习的(要害办法)。 3.1 书 想想本人毕业后是不是很久不看书了? 书中自有黄金屋,书中自有颜如玉作为前端开发者,工作之后可能的确很好机会接触书籍。然而,书籍能够提供齐备的实践和方法论,通过书籍能够体系化地学习某一畛域的常识,这对于集体的常识深度十分有帮忙。 特地是一些计算机根底的知识点,非常适合通过读书来学习,比方数据结构、操作系统、算法、网络等。这些理论知识在十分长的一段时间都不会变,你能够释怀地找一本十分驰名、评估十分高的书来缓缓啃,而不必放心它的时效性,肯定是受害整个职业生涯的。 看书的目标就一个:突破砂锅学到底,成为实践王者,领导实际。 3.1.1 要害办法3.1.1.1 如何选书作为前端开发者,我应该看哪些书? 首先,前端开发者自身就是在计算机领域下,上文提到的一些计算机根底相干的书,都值得看。而后就是一些业界比拟风行的前端相干的书,比方红宝书、蝴蝶书、你不晓得的 JavaScript 等。 O'Reilly 系列和图灵出版社的书都我买了很多,十分值得看,当然,其它出版社也都会十分好的书,个别我还是看业界大佬举荐,或者就是看最近新出了什么书,如果感兴趣都会买一本。 ...

April 20, 2021 · 2 min · jiezi

关于java:算法很美听我讲完这些Java经典算法包你爱上她

大家好,我是小羽。 对于编程来说的话,只有把握了算法才是理解了编程的灵魂,算法对于老手来说的话,属实有点难度,然而当前想有更好的倒退,失去更好的进阶的话,对算法进行零碎的学习是重中之重的。 对于 Java 程序员来说,这一门后端语言只是咱们的外功,咱们更多的是学习它的语法,框架以及一些工具的应用。而算法才是咱们真正的内功,它更多的是关注如何设计零碎,如何编写高性能的代码,一直造就咱们的思维能力,从而晋升咱们的工作效率。 小羽明天为大家介绍的是对于 Java 中咱们须要理解的一些经典算法,心愿大家能从这些经典算法中,品味到算法的美好与奇异,对她产生趣味,更好的为咱们的职业倒退助力前行。好了,开始进入咱们的注释: 二分查找简介根本思维:又叫折半查找,要求待查找的序列有序,是一种疾速查找算法,工夫复杂度为 O(logn),要求数据集为一个有序数据集。 应用利用场景:个别用于查找数组元素,并且数组在查找之前必须曾经排好序(个别是升序)。 步骤: 1、取两头地位的值与待查关键字比拟,如果两头地位的值比待查关键字大,则在前半部分循环这个查找的过程, 2、如果两头地位的值比待查关键字小,则在后半局部循环这个查找的过程。 3、直到查找到了为止,否则序列中没有待查的关键字。 代码示例: public static int biSearch(int []array,int a){ int lo=0; int hi=array.length-1; int mid; while(lo<=hi){ mid=(lo+hi)/2;//两头地位 if(array[mid]==a){ return mid; }else if(array[mid]<a){ //向右查找 lo=mid+1; }else{ //向左查找 hi=mid-1; } } return -1;}冒泡排序算法简介根本思维:比拟前后相邻的两个数据,如果后面数据大于前面的数据,就将这二个数据交换。这样对数组的第 0 个数据到 N-1 个数据进行一次遍历后,最大的一个数据就“沉”到数组第 N-1 个地位。N=N-1,如果 N 不为 0 就反复后面二步,否则排序实现。 应用利用场景:数据量不大,对稳定性有要求,且数据根本有序的状况。 步骤: 1、将序列中所有元素两两比拟,将最大的放在最初面。 2、将残余序列中所有元素两两比拟,将最大的放在最初面。 3、反复第二步,直到只剩下一个数。 代码示例: public static void bubbleSort1(int [] a, int n){ int i, j; for(i=0; i<n; i++){//示意 n 次排序过程。 for(j=1; j<n-i; j++){ if(a[j-1] > a[j]){//后面的数字大于前面的数字就替换 //替换 a[j-1]和 a[j] int temp; temp = a[j-1]; a[j-1] = a[j]; a[j]=temp; } } }}插入排序算法简介根本思维:通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应的地位并插入。 ...

April 20, 2021 · 7 min · jiezi

关于后端:关于java集合你看这一篇就够了由浅到深给你讲的明明白白

汇合概述java汇合就像一个容器,这些对象能够是任意的数据类型,且长度可变。汇合依照其存储构造能够分为两大类,即单列汇合Collection,和双列汇合Map。这两种汇合特点如下:(1)Collection:单列汇合接口,用于存储一系列元素。Collection汇合有两个重要的子接口,别离是List和Set。其中List汇合的特点是元素有序,可反复;Set汇合的特点是元素无序并且不可反复。List接口的次要实现类有ArrayList和ListedList;Set接口的次要实现类有HashSet和TreeSet。(2)Map:双列汇合的根接口,用于存储具备键(Key),值(Value)映射关系的元素。Map汇合中每个元素都蕴含一对键值,并且Key是惟一的,在应用Map汇合时能够通过指的Key找到对应的Value。Map接口的次要实现类有HashMap和TreeMap。 List接口List接口继承于Collection接口,在List汇合中容许呈现反复的元素,在程序中能够通过索引来拜访汇合中的指定元素,另外List汇合还有一个特点就是存取有序。 ArrayList汇合ArrayList外部封装了一个长度可变的数组对象(初始容量为8,按1.5倍扩容),在ArrayList中进行增删改查效率会比拟低,然而在遍历和查找元素时显得十分高效。LinkedList汇合为了克服ArrayList增删效率低的问题,能够用LinkedList,该汇合内有一个双向循环链表,增删效率较高。 Collection汇合遍历Iterator遍历汇合Iterator对象被称为迭代器,用来拜访Collection中的元素。在应用迭代器对汇合元素迭代是,如果调用了remove的办法去删除元素,,会出现异常。起因是汇合中删除元素会导致迭代器语气的迭代次数产生扭转,导致迭代器的后果不精确。 public class Test1 { public static void main(String[] args) {// 创立ArrayList对象 ArrayList list = new ArrayList();// 增加元素 list.add("data_1"); list.add("data_2"); list.add("data_3"); Iterator iterator = list.iterator(); while (iterator.hasNext()){ //hasNext()判断汇合中是否存在下一个元素 Object object = iterator.next(); //如果存在,则调用next()将其取出,否则阐明曾经达到了汇合开端,进行遍历 System.out.println(object); } }}//输入后果为data_1data_2data_3foreach遍历汇合foreach是一种简介的for循环,也被称为加强for循环。foreach循环用于遍历数组或汇合中的元素,具体语法格局如下 for( 容器中的元素类型 长期变量 : 容器变量 ){//执行语句}public class Test1 { public static void main(String[] args) {// 创立ArrayList对象 ArrayList list = new ArrayList();// 增加元素 list.add("data_1"); list.add("data_2"); list.add("data_3"); for (Object object : list) { System.out.println(object); } }}foreach也存在局限性,过后用foreach循环时,不能对汇合中元素进行批改。 ...

April 19, 2021 · 3 min · jiezi

关于前端:腾讯面试110min真的是110警告还好我做了技术准备招架住了

前言当初四月下旬了,金三银四面试好期间过来了一大半了,大家都面试的怎么了呀?拿到offer的小伙伴们在评论区说说嗷,坏事分享嘛!还在面试的小伙伴持续加油,一帆风顺嘛! 这篇小编分享个对于腾讯的面试,从头到尾的把这次的腾讯面试说明确,大家能够看看我做自我介绍的小技巧、怎么和面试官交换、做了那些技术筹备、面试官都问了那些问题等,感兴趣的持续往下看哦。 环境为了保障良好的状态,倡议肯定要在一个本人感觉难受的中央去面试,我就是很容易被环境烦扰的人,第一次面的1688,我就是在教学楼外面面的,过后认为是电话面所以我先是跑去天台了,而后说是要口试,我又匆匆找了个自习桌子写,过后刚好是下课,很吵,而且对面刚好有个大哥在吃外卖,在那位大哥的凝视加面试官大佬的凝视下,我脑子一片空白,所以施展就很不好。 自我介绍失常的面试个别都会有这么一出,请你做个简略的自我介绍,这能够说是惟一开卷考的一道题了,也是特地重要的一环,第一印象其实是十分重要的,甚至可能会影响你整个面试的一个走向(我感觉),因为面试官能够通过你的自我介绍晓得接下来该问你些啥,也能够晓得你大体的一个状况,那么咱们在面试之前就该想想该说点啥能力突出本人的一个劣势,最好能够本人心里默念一下先,流畅一点的自我介绍总是好的~ 自信而后就是要自信,做到这点其实不简略,我这里给出一个小倡议,就是当你本人曾经入职了(盖被子),而后当这场面试只是和前辈在做技术交换,这对我来说的确挺管用的hh,而后面试官必定会问到你不相熟的方面(大神疏忽),通知本人没关系的,不懂就虚心求教~ 交换这就说回我那句话了技术面试远远不只是技术,这其实能够说是我通过这几场面试得出最重要的一个点,在之前,我始终认为技术面试和其余的面试不一样,应该就是和做试卷一样,面试官问,我把答案说进去就好了,只有主观的对与错,然而我忽然发现我错了,技术面试也是面试,其实和其余面试实质上是没太大区别的,外围其实是“议论”,这点面试的英文interview就很好的解释了,有inter十分重要,只是技术面试的谈资次要是围绕着你的常识储备进行的,试想你如果是个面试官你会喜爱和一个点读机讲话吗。然鹅,怎么inter呢?举个,比方面试官问你闭包的问题,你在答复完面试官的问题之后,还能够拓展说一下使用到闭包的一些设计模式比方JS常常用的模块模式,而后它能够模仿一下公有变量blabla...,而后就能够拓展到JS的模块化倒退blabla,这一套组合拳上来,面试官直说,嚯!小伙子不错的嘛,根底还挺稳的嘛!(开玩笑)。当然,你也不能始终solo让面试官插不上话,你懂我意思吧,就是要把握好尺度,最好是有来有回。 技术筹备这是最最外围的,其实从很多中央都能够晓得要各种面试须要把握的一个知识点,面试前能够看看面经,然而面经只能是一个框架,更多可能还是须要要平时的一些积攒,对于语言根底,啃书+手写是最切实,对于JS根底这里举荐一下《JavaScript忍者秘籍》和候策大佬的《前端开发外围常识进阶》我感觉写的真的很好。分享一张学习思维导图,须要完整版的学习成长路线的请点击这里。 我的倡议是在本人的我的项目中应用到这些技术栈,毕竟是学习阶段多学不亏,并且边实际边记录,(这里我就哭了悔恨一开始做OJ我的项目的时候没有记录),不然对于前端来说日常可能就是切图调接口罢了,学不到什么货色,凭这在这个卷卷的时代是找不到工作的啊。而后就是刷题,这个看具体的面试官爱好,然而刷好了编程题总是对面试信念有很大的帮忙的,这里一个leetcode过题数不超过30的人默默留下了泪水,下次肯定。 腾讯面经技术一面 110mins这一面面试官是一个很有礼貌的大佬,我两头不小心打断了几次他谈话,他都说,没关系的你持续说,而且给了很多我的项目和学习上的倡议,真的很nice,面完也马上给过了~ 做一个简略的自我介绍吧说一下的你做的我的项目说一下你每个我的项目的难点说一下你我的项目的技术难点如何克服浏览器相熟吗?说下浏览器是怎么渲染的能够吗,这里问了很深说下opacity和z-index你理解吗,对于图层的问题构建完渲染树页面有货色了吗还有浏览器诘问了很多问题我有点忘了你对ts相熟吗,他有什么特地的中央相比jssass你喜爱用是吗,它有什么好的,比css好的中央在哪,css能够实现这些性能吗React说一下无状态组件,和有状态的区别说一下React之间的通信说下React的生命周期说一下React16的新个性讲一下React的diff策略你有看过React源码吗?VD是怎么实现的?diff算法是怎么实现的,你本人有实现过吗又转到我的我的项目,诶你的组件库如同不错哇有没有想过怎么优化你晓得防抖吗,能实现一下吗?你晓得防抖,那如果我想隔几秒再去发申请我应该怎么改良呢?我说那能够用节流,节流怎么实现的实现一下吧?你Promise用过吗,怎么用的?你晓得Promise怎么实现的吗,异步怎么实现,链式调用怎么实现你说你解决Promsie异步问题的时候应用setTimeOut,你晓得setTimeOut会不准的吗,你晓得setTimeOut底层是怎么实现的吗?你晓得xss吗,那要怎么预防呢?cookie的理解吗cookie和session有什么区别讲一下localstorage和sessionstorage,indexDB申请平安这块说了很久,你们后盾的鉴权是怎么做的?token?你晓得他怎么保障平安吗解释一下应用token鉴权的流程csrf晓得吗,说下是什么,怎么预防?回流重绘晓得吗,说下触发的场景?而后又问到我我的项目,你这个组件库想过怎么优化吗,除了性能方面,我给个倡议哈,能够拓展一下应用的边界,比方WebComponent,你晓得AST吧.....http1.0,http1.1,http2.0不同点,优化了什么多路复用是什么常见的状态码http和https如何加密对于网络申请的一些问题多路复用是什么你晓得吗你晓得块级作用域吧,块级作用域是怎么实现的吗从es5到es6说一下你对闭包的了解你晓得函数执行栈吧,你如果闭包在外面会开释内存吗举了几个例子你晓得垃圾回收机制吗,除了标记革除,援用计数你还晓得其余的吗最初来个拓展题吧,白屏的优化你说下你的思路,零碎一点,从网络申请局部开始讲你平时怎么学习的啊有看什么书吗你是趣味学的前端吗最近有关注什么新技术吗反诘环节 问了一下部门 而后问了一下要如何成为一个合格的前端工程师 一面如同大略就是这些点长远有些具体的问题忘了 二面 80mins这次面试也是腾讯会议,然而这次面试官没有露脸,听声音是很有生机的一个小哥哥,简直全程都在问我的项目,而后也给了我很多倡议(因为太菜了),问的还是很细的,所以大家还是要对本人我的项目非常相熟才行啊~~ 此外问了 你博客写在哪里浏览器缓存如何解决跨域问题sso单点登录git如同还问了点啥,我的确遗记了,而后面试官说上个面试官说我根底还不错,而后他感觉我常识广度挺不错的(我有点受宠若惊),给我倡议是能够持续深挖 而后他说没啥事了,给我出一道拓展题,设计一个示意腾讯所有员工的树形组件,问节点怎么设计,怎么优化 而后问了下什么时候能来实习 而后我问了一下次要的技术栈以及部门目前在关注的新技术,而后面完就安顿hr面了 hr面能实习多久优缺点(举例子)看过源码吗我的项目的难点技术栈是什么问题怎么样获过什么奖吗看过源码吗vue和angular用过吗,和react比有什么优缺点考研吗,为什么?今后的方向有没有其余offer 完结一次残缺的面试流程就是这样啦,小编综合了腾讯的面试题做了一份前端面试题PDF文档,外面有面试题的具体解析,收费分享给小伙伴们,有没有须要的小伙伴们都去支付!以备不需之时,前端面试题支付直达车:【往这里看,往这里点】虽只说了一个公司的面试,但咱们能够晓得大厂关注的货色并触类旁通,通过一个知识点延长到另一个知识点,这是咱们要把握的学习办法,小伙伴们在这篇有学到的请评论点赞转发通知小编哦,谢谢大家的反对!

April 19, 2021 · 1 min · jiezi

关于面试:纪念我的第一个金三银四

明天刚好入职爱回收满一周,目前尽管还处于熟悉业务的阶段,然而想说本人来对中央啦,这里共事很赞,作息很赞,技术也很赞。 坦白讲在最后并没有想着肯定要来上海工作,所有起源于去年10月的一次面试,记得面试了契约锁和千图网两家公司,过后只是想通过面试看看本人的程度以及本人有没有和支流脱节,过后的面试后果是:契约锁挂了,千图网通过了。经验过这两次面试后,大略晓得了面试的惯例流程和本人单薄的知识点,那时候就决定在行将到来的三月要拿到中大厂的offer。为什么呢?为了向一些人证实本人,我要做到你们认为我做不到事件哈哈 很快就来到了三月,侥幸的是,刚过完年公司并没有怎么加班,所以早晨回家当前有很多工夫去筹备面试。我记得月初的时候立了一个大体的打算: 1.第一步欠缺简历2.第二步确保本人齐全把握简历上的知识点(哈哈,也能够看作是确保简历的真实性)3.第三步找几家小公司练手4.第四步就是面试中大型互联网公司(过后最想去的是一哥所在的字节)。在执行第三步的过程中,才意识到本人之前并没有准备充分,然而也正因为这几次实际让我在短时间内又有很大的提高,把握了一些惯例面试题的答题技巧,有方向性的增强了一些外围知识点(次要是Fiber架构),过后每晚都会在本子上回顾一遍React Fiber的工作机制(以至于那个本子十几页写的都是雷同的内容哈哈)。经验过前几次失败的洗礼后,终于开始逐个取得了面试官的必定,被人必定的那种感觉真的很棒嗷。于是开始了我的第四步打算,当初来看,第四步打算执行的有些凌乱,搞错了很多公司的面试程序,就当积攒教训吧,上面细说几家印象粗浅的公司。 第一家公司是中国力扣Leetcode,自我介绍/介绍我的项目/集体奉献这几点聊完之后,出了道编码题,题目是这样子: 验证码随机生成函数1.单个验证码6位数字 0~9 2.一次生成1000个验证码,以数组的模式返回 3.单次生成的验证码,不能呈现反复的可能因为在上一环节答的不够好影响了心态,加上本人根底不够扎实,导致这道题没有在限定的工夫写完。面试完结后,痛定思痛,整出了本人称心的代码,第二天发给了面试官,开心的是,面试官示意这比昨天写的好多了,尽管这次面试凉了,但还是有很多播种。 第二家公司是字节跳动-教育,投完当天就约面试了,没想到这么快,压根没做针对性的筹备,早晓得应该排在最初的。字节的面试和之前的公司不太一样,给出一段代码问输入后果,因为是第一次遇到这种类型的题目,让我有点措手不及,然而手快的我还是记了下来哈哈(因为预感到要凉,后果不出意外的凉了),羞愧难当的同时,感觉本人就像一个废物,现在再看,只是过后没准备充分罢了哈哈哈,年轻人万万不可不可一世。题目大抵如下: 1.输入后果 function a() { console.log('a'); Promise.resolve().then(() => { console.log('e'); });}function b() { console.log('b');}function c() { console.log('c');}function d() { setTimeout(a, 0); var temp = Promise.resolve().then(b); setTimeout(c, 0); console.log('d');}d() //输入 ?2.输入后果 function O (age) { this.age = age;}let o = new O(1);let age = 3;O.prototype.age = 2;setTimeout(function () { age = 4; O(5); console.log(o.age, age, window.age)}, 1000);3.求一个字符串最长的没有反复字符的间断子串输出: abcdcfghjkl输入:dcfghjkl 4.实现一个flat函数输出:[1, 2, [3, [4, [5]]]]输入:[1, 2, 3, 4, 5] ...

April 18, 2021 · 1 min · jiezi

关于前端:百度小红书三面均遇赛马问题

关注公众号“执鸢者”,回复“材料”获取500G材料(各“兵种”均有),还有业余交换群等你一起来洒脱。(哈哈) 适逢金三银四的跳槽的黄金时段,看到很多小伙伴都在拼命的找工作、找实习,本人已经的面试经验也浮现在眼前,特地是一道在百度和小红书三面时遇到的“赛马”问题,既然很多公司都爱问这个问题,那么是时候将该问题储备到本人的面筋小题库中了。 一、题目一个赛场中有5条赛道,当初有25匹马,在没有定时器的前提下起码跑多少圈能够角逐出前三名?二、头脑风暴刚遇到这个问题的时候,不晓得小伙伴们是什么想法,反正霎时属于懵逼状态,懵逼过后就进入了剖析问题的环节。2.1 全副马均需跑一次不管怎样,25匹马必定都须要上跑道跑一下(是骡子是马,拉进去溜溜),所以先将马匹分成5组(25 / 5 = 5;其中25指马匹数、5指赛道数,获取到的就是组数),各组标号别离是A、B、C、D、E,最终全副5组较量之后的后果如下表所示: 通过本轮较量之后,曾经跑了五圈,通过这五圈之后可能获取到的信息就是每组都角逐出了第一名(A1、B1、C1、D1、E1),然而到底谁是前三名还不能确定,接下来咱们所能做的是持续进行较量,然而让谁进行比呢?这个时候必定不是轻易选,轻易选的话咱们后面五圈做的铺垫就没有意义了,所以此时将每组第一名赛一圈再说,至多可能角逐出25匹马中谁是最快的那个仔。2.2 每组第一名赛一次上面将每组第一名的马匹(A1、B1、C1、D1、E1)牵出来进行较量,比赛结果如下所示: 通过本轮较量之后,曾经跑了六圈,在第六圈完结之后,咱们获取的信息就变的丰盛很多,很多老铁必定会说了,通过第六圈之后咱们不就晓得了第一名是谁了,除了这个还有啥有用信息,这个时候才是最最重点的地位(敲黑板),上面我间接列举进去可能获取到的信息:第一名是A1每组第一名的程序也确定了,速度程序是:B1 > C1 > D1 > E1A2-A5的速度有可能比其它组的都快;B2-B5的速度有可能比C、D、E组的都快;C2-C5的速度有可能比D、E组的都快;D2-D5的速度有可能比E组的都快。通过获取到的信息进一步用咱们聪慧的脑袋加工一下,到底谁有可能获取到2、3名呢? 上述图中间接标出了可能获取2、3名的马匹,然而为什么会是这些马匹呢?上面一起剖析一下。若A2、A3的速度比其它组的都快,则必定是A2、A3别离包揽2、3名;若A2、A3的速度比肯定比其它组的速度快,则B2就有可能竞争2、3名;B2、C1就有可能竞争第3名。2.3 A2、A3、B1、B2、C1赛一次通过这五匹马再赛一圈之后,就曾经跑了七圈,第七圈角逐进去的2、3名就是最终后果的2、3名。2.4 论断通过上述剖析,5条赛道,当初有25匹马,在没有定时器的前提下起码须要7圈能够角逐出前三名。三、扩大若当初想角逐出前4名起码须要多少圈?3.1 信息剖析在赛到第七圈的时候,曾经角逐进去了前三名,此时可能获取到的信息有:前三名是谁第七圈的第三名是谁目前要角逐出第四名,只须要通过比第七圈外面的第三名,和总体第三名前面可能产生第三名的地位即可。3.2 问题解答若前三名别离是A1、B1、C1,第七圈后果是B1、C1、A2、A3、B2,则可能产生总体第四名的地位是A2、C2、D1,则只须要比拟三者即可跑出第四名。 3.3 论断角逐出前4名至多须要跑8圈。四、思考5条赛道,25匹马,没有定时器的状况下角逐出前三名起码须要7圈,角逐出前四名起码须要8圈,那么角逐出前五名呢?欢送老铁留言解答。

April 18, 2021 · 1 min · jiezi

关于面试:Java面试题Java面试题及答案2021最新的都整理好了

有些Java面试题答案是我本人总结的,也有些Java面试题及答案是在网上搜集整理的。这些高级Java面试题及答案难免会存在一些谬误,这些面试题答案难免会存在一些谬误,仅供大家参考。如果发现错误还望大家多多包涵,不吝赐教,谢谢~ 更多大厂面试题,整顿好了,间接下载吧下载链接:高清172份,累计 7701 页大厂面试题 PDF1、Js如何跳转到到一个指定页面Location.href=url History.go(url) 2、Tomcat是怎么突破双亲委派机制的呢?是通过重写ClassLoader#loadClass和ClassLoader#findClass 实现的。能够看图中的WebAppClassLoader,它加载本人目录下的.class文件,并不会传递给父类的加载器。然而,它却能够应用 SharedClassLoader 所加载的类,实现了共享和拆散的性能。 3、你做过 JVM 调优,说说如何查看 JVM 参数默认值?1、 jps -v 能够查看 jvm 过程显示指定的参数 2、 应用 -XX:+PrintFlagsFinal 能够看到 JVM 所有参数的值 3、 jinfo 能够实时查看和调整虚拟机各项参数 4、为什么代码会重排序?在执行程序时,为了提供性能,处理器和编译器经常会对指令进行重排序,然而不能随便重排序,不是你想怎么排序就怎么排序,它须要满足以下两个条件: 在单线程环境下不能扭转程序运行的后果; 存在数据依赖关系的不容许重排序 须要留神的是:重排序不会影响单线程环境的执行后果,然而会毁坏多线程的执行语义。 5、咱们能够在 hashcode() 中应用随机数字吗?不行,因为对象的 hashcode 值必须是雷同的。参见答案获取更多对于 Java 中重写 hashCode() 办法的常识。 6、你是如何调用 wait()办法的?应用 if 块还是循环?为什么?wait() 办法应该在循环调用,因为当线程获取到 CPU 开始执行的时候,其余条件可能还没有满足,所以在解决前,循环检测条件是否满足会更好。上面是一段规范的应用 wait 和 notify 办法的代码: // The standard idiom for using the wait methodsynchronized (obj) { while (condition does not hold) obj.wait(); // (Releases lock, and reacquires on wakeup) ..、// Perform action appropriate to condition }参见 [Effective Java]第 69 条,获取更多对于为什么应该在循环中来调用 wait 办法的内容。 ...

April 17, 2021 · 1 min · jiezi

关于javascript:记录腾讯云重庆分公司社招面试经历

间接就是三道口试题,做了20分钟,发现每一道能做残缺,最初一道是算法,看题都难,果决放弃,总体来说就是口试预计就是0分吧。而后就跟面试官说,要不就算了吧,我一道都不会,他说没关系,口试只是考查思路,而后持续开始面试了。不论是滴滴还是腾讯的面试,一轮上简直不会问很根底的问题了,例如什么css啊,js根底问题啊,(但阿里的一轮却问,有时候css还问得挺深的,害...)因为我简历上有写,开发npm插件(理论我的项目就是一个简略的dialog,而后公布到了npm上,可供多个h5仓库应用,过后也是做得比拟简陋的)次要问: 1、npm 插件开发发布命令和流程?2、package.json文件重要的信息有哪些?3、dependencies 和devDependencies的区别?4、^和~的区别和含意?问题1、2都答复进去了,3根本答复进去了吧,4就错了。 再问到jenkins的公布流程(都是依据我简历里的内容写的)1、jenkins公布流程和配置2、npm run build 执行到底产生了什么?都答复进去了,其实2问题,次要考查对webpack打包工具的配置是否相熟。因为之前还本人写过一个index.html 主动inject dist动态资源的插件,所以略微细问了下,尽管过后也是写得比拟简陋,但根本还是实现了。只是起初想想用webpack插件的形式开发是最正规的。再延长到vue-cli脚手架配置是否相熟,害,我还真少配,每次用到去搜寻,用了就忘了。。。 再问到http,tcp和ip协定这种货色吧,感觉就是平时工作中太偏差实践的常识了,如果没有很粗浅的了解,看了书也很容易遗记,所以问我三次握手是什么?我简直是没答复出的。 再问到vuex三大模块,大抵说了下流程,根本是没问题。但问到mutation次要是拿来干嘛的,我其实答复有点艰涩,因为已经的我的项目里,mutation我还省掉过一次。 vue-router有几种模式,各种模式的区别(这里波及到history和hash模式在nginx上配置的区别,就是刷新后呈现404的状况,问我为何会这样,我没答复出) 大略就是这样的。总体来看偏差运维的面试吧,除了前面的vuex不晓得能不能进2面,就这样吧。三到面试题,如果有需要,能够私聊我。

April 16, 2021 · 1 min · jiezi

关于面试:从被踢出局到5个30K的offer一路坎坷走来沉下心何尝不是前程万里

先唠叨两句刚毕业那会,工作教训短,招聘的要求同样也低,个别只看重逻辑思维能力和和一些用算法解决事实问题能力,对具体技术栈知识点的深度,把握水平不强求,懂多少算多少,应届毕业生外面可能体现出中上程度就能被录用。我整体上感觉工作六七年后,并没有积攒和年限绝对应的技术储备,这一点如果是在稳固的岗位上也不会有太大问题。 直到2016年我的第二份工作,我在一家一线互联网公司外部孵化的直播产品,用了四年工夫做到我的项目正手,而在被HR约谈到到职,前后不到四天。 我过后还在分心做布局,写货色、对业务需要、开发性能。应该还算是比拟重要的,很多人等着的货色开展业务,我属于他们的上游模型。HR邮件告诉说业务调整,这边接下来考核压力挺大,我跟另一个工资最高的共事只能留一个。而最初确定了是我,整个流程不过半天工夫,之所以用了四天是因为须要交接的货色比拟多,说来也真是讥刺。 不过确实没什么好埋怨的,另外那个共事确实比我更致力,时常能看到工作之余还在一直的学习,而我则更像一条躺在老本上等死的咸鱼,这样的我凭什么被他人动摇抉择呢。 被踢出局之后,我回到了长沙,颓丧了一段时间,但日子还得持续不是。没辙,想再找到一份不错的工作,就得晋升本人的外围竞争力。之后有相当长的一段时间在补短板,也看些感兴趣的货色,像JVM和并发相干的,那时候每天都有种醍醐灌顶的感觉。 不过面试的时候还是被打回原形了,筹备的很多货色都没有被问到,我自认为很厉害的货色只是钻牛角尖了。我他喵裂开!!! 不过好在意识了一位很牛的行业老大哥,至于怎么意识的就不赘述了,总之在他的疏导下我能力拿到明天这5个还算不错的offer,不说废话了,先贴两个offer再给你们分享一下学习教训,不然你们还认为我吹牛皮。这一年多一直的肝学习也整顿了一些学习笔记和材料,是依照我上面要写的学习路线整顿的,也都分享给大家,须要的敌人能够自行点击下方蓝字支付。 Java私人学习笔记和视频文档学习材料面试22家公司后本人整顿的面试题,点击间接支付好了,开始正题。 为了拿到这5个offer我学了哪些货色?一、性能调优Jvm性能调优Mysql性能调优Tomcat调优Nginx调优 二、并发编程操作系统内核原理JMM内存模型并发同步解决并发包之tools限度并发包之atomic原子操作阻塞队列BlockingQueue详解并发Map、List与Set详解Executor线程池详解及外围源码分析ForkJoin框架详解无锁并发框架Disruptor实战 三、框架源码利用框架SpringSpring IOC源码分析Spring Aop源码分析Spring MVC源码分析Spring注解式开发Spring 5新个性Spring Security原理与源码分析Spring Webflux详解 ORM框架MyBatisMyBatis疾速把握Mybatis 源码剖析Mybatis徒手实现 学习源码中的优良设计模式设计准则创立型模式结构型模式行为型模式设计模式比照及利用场景当然了,只学不写是不行的,我本人是比拟偏向学一段时间就本人入手写两个我的项目,不肯定要多难,但肯定得做,这一年多的工夫我的项目也没少写,整顿了20个比拟有代表性的我的项目能够分享给大伙,源码跟笔记都有,应该挺好上手的。 四、分布式框架分布式消息中间件RabbitmqRocketMqKafka 分布式贮存中间件RedisMongoDBFastDFSElasticsearch 分布式框架ZookeeperDubboShardingSphereNetty 五、微服务系列微服务架构变迁史Spring Boot详解及源码分析Spring Cloud Alibaba详解及源码分析Spring Cloud Netflix详解及源码分析 六、互联网工具Git整体认知GIT体系结构Git客户端与服务端疾速搭建Git的外围命令详解Git企业应用最佳实际 MavenMaven生命周期详解Maven插件体系详解Maven外围命令详解Maven的pom配置体系详解Nexus私服搭建实战 Jenkins整体认知Jenkins体系结构Jenkins如何做继续集成Jenkins搭建及应用详解Jenkins插件体系详解 LinuxLinux原理、启动、整体架构解说Linux运维常用命令实战Linux用户与权限解说Shell脚本编程实战 虚构容器Docker Docker的镜像,仓库,容器详解疾速开始搭建Docker环境DockerFile应用详解DockerCompose集成式利用组合Docker服务编排实现KubernetesKubernetes介绍与疾速开始Kubernetes对象&Master组件&Node节点详解Kubernetes生产集群环境搭建与应用七、拓展技术算法与数据结构算法复杂性剖析线性表、链表数据结构详解队列、栈结数据结构详解根底排序算法详解数论&枚举&递归&分治&回溯思维详解贪婪算法与动静布局快排与归并排序详解二分搜寻、哈希表详解并查集算法详解树,基本概念,二叉树(遍历),红黑树详解B树,Trie树,赫夫曼树,堆树详解图论、深度优先遍历、广度优先遍历详解最小生成树、最短门路详解布隆过滤器与位图详解 区块链技术(Java版)我的项目架构与技术点解说区块链原理整体介绍区块链整体结构设计与实现密码学比特币钱包的设计与实现比特币交易的设计与实现P2P去中心化网络设计与实现课程具体内容请征询图灵学院诸葛老师,QQ:3376224996 大数据技术第一阶段--开发环境构建第二阶段--HADOOP外围第三阶段--大数据通用生态圈组件第四阶段--Spark及生态圈第五阶段--基于spark的数据挖掘算法 人工智能技术用一台电脑搭建一个机器人开发环境Python编程入门和利用范例ROS客户端库和利用范例开发你的第一个机器人利用如何协调一个机器人外部的行为计算机视觉根底与利用机器人建图和导航开发一个智能安保机器人神经网络根底与利用基于ROS开发多机器人利用群体智能人工智能前沿探讨 类脑计算人工智能前沿探讨深度强化学习(DRL)应届生怎么晋升本人的外围竞争力?之前也有敌人问应届生面试有哪些留神的,我说留神的中央太多了,我就在这提一下怎么晋升本人的竞争力吧。联合了我面试22家公司的面试官所问的问题我总结了上面几点,兴许对应届生有一些帮忙:1、加入过比赛( 含金量超高的是 ACM );2、对数据结构与算法十分纯熟;3、参加过理论我的项目(比方学校网站)4、相熟 Python、Shell、Perl 其中一门脚本语言;5、相熟如何优化 Java 代码、有写出品质更高的代码的意识;6、相熟 SOA 分布式相干的常识尤其是理论知识;7、相熟本人所用框架的底层常识比方 Spring;8、有高并发开发教训;9、有大数据开发教训等等。 总结写到这里其实也差不多了,该发的牢骚也发了,教训也跟大家分享了,幸好通过本人的致力之后后果还算不错,也祝正在迷茫的兄弟们早日上岸。 筹备实习或者跳槽但又心里没底的兄弟都能够拿我这份面试22家公司后本人整顿的面试题自测一下。

April 15, 2021 · 1 min · jiezi

关于前端:前端面试复盘vue技术面没有难倒我hr面却是一把挂

金三银四,怎么能少了本菜。陆续面试了几家中小公司,正好借此机会好好恶补一下根底,要是能找到一个适合的工作那就更完满啦。整顿了近一次面试复盘笔记,为正在找工作的小伙伴们,提供一丢丢的帮忙。祝大家都能找到money多多的工作。 详情公司:坐标深圳。面试官:特有礼貌,还先自我介绍了。面试后果:应该是hr面没过(跳的太频繁了,简历难看)。面试感触:技术面还行,hr面很好受。面试题阐明:✔ 代表前面有对于该问题的重新整理。 介绍一下本人之前做过的我的项目。Vue的生命周期。✔Create和beforeMount他们两之间有什么区别。Vue组件通信。✔v-if和v-show的区别以及应用场景。✔nextTick的应用场景和作用。✔Vue中的key有什么作用。✔计算属性和watch的区别。✔子元素上下左右居中。生成一条0.5px的线。✔自适应计划。rem和rm的区别。✔vw和百分比有什么区别。✔合并两个数组。✔数组去重,冒泡排序。✔Object去掉其中一项属性,delete删除对象有什么影响。✔深浅拷贝。防抖节流 。从0+100怎么实现。✔一到一百个雷同的申请,前面的依赖后面一个的后果,当初要拿到第一百个后果要怎么做。如果你在爬楼梯,楼梯一共有N层,但你每次爬楼梯只能走一步、两步或三步,计算共有多少种走法,怎么打印出所有走法?Vue的生命周期。组件生命周期 new Vue(),初始化事件和生命周期beforeCreate($el和data都是undefined)初始化数据和办法(data和props的响应式解决,mehods办法申明)created($el是undefined,批改data不触发update)判断有没有el项(vm.$mount(el)),判断有没有模板(没有将el外层的HTML当模板),将模板编译成渲染函数,返回虚构DOMbeforeMounted($el是虚构DOM,批改data不触发update)创立正式DOM替换虚构DOM,挂载到页面指定容器显示mounted(可操作实在DOM)数据变更beforeUpdate从新渲染虚构DOM并通过DIFF算法比拟差别更新实在DOMupdated调用vm.$destory()beforeDestory(清理计时器、事件)移除数据监听、事件监听和子组件destoryed(实例不可用)keep-alive生命周期被keep-alive包裹的组件有 activated 和 deactivated 两个生命周期。如<keep-alive>包裹两个组件:组件A和组件B。当第一次切换到组件A时,组件A的created和activated生命周期函数都会被执行,切换到组件B,这时组件A的deactivated的生命周期函数会被触发;在切换回组件A,组件A的activated生命周期函数会被触发,然而它的created生命周期函数不会被触发了。 vue组件通信。父子间通信:父亲提供数据通过属性 props传给儿子;儿子通过 $on 绑父亲的事件,再通过 $emit 触发本人的事件(公布订阅)利用父子关系 $parent 、 $children ,父组件提供数据,子组件注入。 provide 、 inject ,插件用得多。ref 获取组件实例,调用组件的属性、办法跨组件通信 Event Bus (Vue.prototype.bus=newVue)基于on与$emitvuex 状态治理实现通信v-if和v-show的区别以及应用场景。区别v-if是删除生成dom,v-show是切换dispaly的状态。应用场景 v-if某一块代码在运行时条件很少扭转,应用 v-if 较好 (v-if 有更高的切换开销)在组件上应用v-if可触发组件的生命周期函数与transition联合应用 当条件变动时该指令能够触发过渡成果(用于动画切换)v-show须要十分频繁地切换某块代码,应用 v-show渲染当条件变动时该指令触发过渡成果(用于动画切换)nextTick的应用场景和作用。应用场景例:一个子组件通过v-if管制暗藏显示<t v-if='show'><t/>,当批改完显示状态后,立马通过ref去操作子组件的办法,这个时候会报错,起因在于子组件此时可能还未渲染实现,这个时候应用nextTick能够解决,他会在dom更新实现之后再去调用。作用在下次 DOM 更新循环完结之后执行提早回调。在批改数据之后立刻应用这个办法,获取更新后的 DOM。 vue中的key有什么作用。key会用在虚构DOM算法(diff算法)中,用来分别新旧节点。不带key的时候会最大限度缩小元素的变动,尽可能用雷同元素。(就地复用)带key的时候,会基于雷同的key来进行排列。(雷同的复用)带key还能触发过渡成果,以及触发组件的生命周期计算属性和watch的区别。解决数据的场景不同,监听器(watch)适宜一个数据影响多个数据,计算属性适宜一个数据受多个数据影响计算属性有缓存性,计算所得的值如果没有变动不会反复执行,然而watch会反复执行监听器选项提供了更通用的办法,适宜执行异步操作或较大开销操作的状况生成一条0.5px的线。 rem和rm的区别。rem是绝对于根元素字体大小em是绝对于本身字体大小vw和百分比有什么区别。百分比是相对高度,绝对于他的父元素而言。vw永远都是绝对于视窗大小的。合并两个数组。arr1.concat(arr2)[...arr1,...arr2]循环数组去重,冒泡排序。数组去重 Array.from(new Set(arr))[...new Set(arr)]3. for循环嵌套,利用splice去重4. 新建数组,利用indexOf或者includes去重5. 先用sort排序,而后用一个指针从第0位开始,配合while循环去重冒泡排序function bubbleSort (arr) { for (let i = 0; i < arr.length; i++) { let flag = true; for (let j = 0; j < arr.length - i - 1; j++) { if (arr[j] > arr[j + 1]) { flag = false; let temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } if (flag) break; } return arr;}复制代码这个是优化过后的冒泡排序。用了一个flag来优化,它的意思是:如果某一次循环中没有替换过元素,那么意味着排序曾经实现了。 ...

April 15, 2021 · 1 min · jiezi

关于前端:前端面试官的吐槽问CSSDOM的还招不招人了KPI还要不要了

前言看到一位博主吐槽怎么当初很多前端面试中,很多公司很少或不问css,而间接问JavaScript、框架、Node.js这个问题,说到当初满世界 Vue、小程序的简历,问啥 css啊,好多人 position 有啥值都不晓得,z-index 值和 position 层叠关系都不晓得,问了就挂,咋张嘴问…… 就更别提啥权重值怎么计算的这种略微“难”一点点的问题了,考查更深刻一点的,比方值解决步骤乃至到 CSSOM 就想都别想了。 集体是认为这阐明业界前端的业务以pc零碎后盾类的居多。当初这些后盾,不再须要兼容IE,界面有相对来说规定,而且又有postcss这类css编译工具,基本上不会有太大的css问题。然而如果一个前端团队以挪动端业务开发为主的,那css能够问的问题还是很多的。 注释但我这边是要面的。很多公司面人的问题千奇百怪,甚至是很脱离实际开发工作,我集体对这样的面试没有好感,我本人弄了一套面试题目。十分遗憾,我的问题不多,也不偏离业务开发,但面试快一年了,全答上的面试者有一个。那哥们我很喜爱,给了offer,不过他人没选我这边。其余的起码大几十个面试者,都或多或少地“翻车”,我也只能挑几个翻车不重大的人进2面。哪里翻车最重大?CSS!我只有4道CSS面试题,90%的面试者翻车。 第一道:有3个div,呈竖向排列,第一个div贴顶,第三个div贴底,两头的div填满残余空间。该怎么做?(flex,grid,js动静计算)第二道:我要写一个弹窗,须要程度竖直居中,同时它不能被其余元素遮掩。该怎么做?(居中,zindex,zindex的从父准则)第三道:你的挪动端的自适应是怎么做的?(rem,vwvh。其实这两个等比放大放大的自适应单位解决方案是不够完满的。内容用px + 排版用自适应单位 + 布局采纳flex/grid才是解决挪动端自适应的最优解)第四道:如何缩小重排。这4个题是真的不难,我原先的构想是搞几道css做开胃菜,缓缓深刻理解面试者,然而这个翻车率是我始料未及的,特地是很多的面试者都在简历上注明:善于/纯熟应用Flex布局。想想面试那段时间都挺头疼的,比方发申请拿数据,每个前端都要做的事。问怎么辨别返回内容是文件流还是json数据,其实就一个content-type,答上来的人不多。问平时怎么上传文件的?就一个form-data,很多人也不会。再问怎么看一个资源的缓存状况,一个control-cache,就更没人会了…我不想问一些httptcp、什么链路层、什么三次握手、什么https的加密规定,平时工作用不着,刻意去背一背应酬面试,不见得能体现一个面试者的程度。但我问的这些这么实操的货色都不知所云,那是相对行不通的。当初很多前端,只会跑vue-cli搭建个我的项目,import一下ui库,就感觉本人没问题了,实际上在我眼里连日常开发工作都应酬不了。 我这种还算好的了,碰到喜爱出越深越好,越偏门面试题的,可能是真不想招人,不想要KPI,但要是换他来答题,十有八九更差劲(别杠,杠就是你对)。尽管说是问CSS少了,但不怕一万就怕万一,咱们可别因没筹备吃了哑巴亏,所以我整顿了一套前端面试题收费分享给大家,外面包含了CSS,大家在筹备面试时,也别忘了看下CSS哈。 面试题CSS1.页面渲染时,dom元素所采纳的布局模型,可通过box-sizing进行设置。依据计算宽高的区域可分为2.ie盒模型算上border、padding及本身(不算margin),规范的只算上本身窗体的大小css设置办法如下3.几种取得宽高的形式4.拓展各种取得宽高的形式5.边距重叠解决方案(BFC)BFC原理6.cssreset和normalize.css有什么区别:7.居中办法8.css优先确定级9.如何革除浮动10.CSS开启GPU减速11.开启GPU硬件加速可能触发的问题12.CSS中link与@import的区别13.CSS选择器列表优先级及权重14.display:none和visibility:hidden的区别:15.介绍一下CSS的盒子模型 HTML1.你是怎么了解HTML语义化2.你用过哪些HTML5标签3.metaviewport是做什么用的,怎么写?4.H5是什么5.label标签的作用6.行内元素有哪些?块级元素有哪些?空(void)元素有那些?7.a标签中如何禁用href跳转页面或定位链接8.canvas在标签上设置宽高和在style中设置宽高有什么区别9.你做的页面在哪些流览器测试过?这些浏览器的内核别离是什么?10.iframe有哪些毛病? VUE1.vue.js的两个外围是什么?2.vue的双向绑定的原理是什么?3.vue生命周期钩子函数有哪些?4.请问v-if和v-show有什么区别?5.vue罕用的修饰符6.nextTick7.什么是vue生命周期8.数据响应(数据劫持)9.virtualdom原理实现10.Proxy相比于defineProperty的劣势因为篇幅问题,只展现了一小部分,须要完整版PDF的小伙伴们点击这里就能够收费获取啦 最最初还是想说,无论咱们遇到什么样的面试官,被问到什么题,你都要置信你是最棒的!祝小伙伴们在金三银四之际顺顺利利拿到心仪offer!喜爱小编这篇文章,请留下你们的点赞留言反对小编,谢谢啦~

April 15, 2021 · 1 min · jiezi

关于前端:前端实习面经一面

字节跳动一面(30min)2021/4/13自我介绍,我的项目经验事件机制session,cookie区别浏览器缓存机制xss和csrfhttp申请办法,post和get区别常见状态码,404等es6和es5区别按值传递和按援用传递routerTS和JS区别Hooks,function和class有没有接触过node.js

April 15, 2021 · 1 min · jiezi

关于html:css实现水平垂直居中大概8种

要求:对一个货色实现程度垂直居中利用text-align和line-height针对行级元素 利用table-cell,vertical-align和text-align在子元素不确定宽高和数量时,特地实用 利用flex简便、残缺、响应式 利用grid和flex相似有两种实现形式:1. 在父容器中设置display: grid; align-content: center; justify-content: center;2. 在父容器中设置display:grid; 在子元素中设置align-self:center; justify-content:center 利用absolute和负margin兼容性也很好,不过须要晓得子元素的宽高 利用absolute和auto margin兼容性也很好,不过须要晓得子元素的宽高 利用absolute和calc此兼容性依赖于calc(不反对IE9以下),且也须要晓得宽高 利用absolute和transform此兼容性依赖translate(不反对IE10以下),不须要晓得子元素宽高

April 14, 2021 · 1 min · jiezi

关于java:纯干货分享金三银四高频java面试题整理一线名企面试重点拆分

前言掉进水里你不会淹死,待在水里你才会淹死,只有一直学习才不会被前沿淘汰,以下面试题心愿对你们有帮忙! 什么是面向对象?谈谈你对面向对象的了解答:在程序设计中有面向过程和面向对象,C语言是面向过程的,就是一步一步的十分分明,比拟间接高效,而java是面向对象的,更易于重复使用、扩大和保护。 面向过程只会思考这个事件(问题)自身 面向对象要将一个事件解拆成一个一个的模块   面向对象三大个性:封装、继承、多态  封装的意义:外部细节对外部调用通明,内部调用无需批改或者关怀外部实现 比方:ORM框架 操作数据库,咱们不须要关怀链接是如何建设的、sql是如何执行的,只须要引入mybatis,调办法即可   继承:继承基类的办法,并做出本人的扭转和扩大  将共性的办法或属性写在父类,而不须要本人再定义,只须要扩大本人的个性化   就有点像AOP面向切面编程一样 在不扭转源码的根底上增加一些新的性能, 继承也是在继承了父类的所有办法和属性上 子类能够优化父类的办法和扩大本人的办法   多态:多态和继承其实是一脉相承的 多态有一个条件:要有继承 要重写父类的办法 父类援用指向子类对象  多态的用法 :  父类类型 变量名 =  new 子类对象;      变量名.办法名() ;    调用的办法是子类对象的办法 这就是多态  然而多态有一个弊病 无奈调用子类本人特有的性能 就是子类对象的办法必须是在父类中有 也就是重写了父类的办法能力被调用 (办法重写)     JAVA虚拟机(重点) JAVA语言有一个十分牛B的个性 就是跨平台 代码一次编写到处运行 跨平台个性实现:应用JVM(虚拟机)实现 字节码文件都会放到jvm外面去运行 针对不同的平台 会生成不同的代码 java虚拟机帮咱们做到的  java虚拟机是JDK的一个组成部分 java虚拟机由那些局部组成: 由三大部分组成 :1:类装载子系统  2:运行时数据区(内存模型(重点)) 蕴含堆 栈(线程) 本地办法栈 办法区(元空间) 程序技术器 3:字节码执行引xin 栈(线程): 官网叫(虚拟机栈)  而我本人想叫它线程栈,为什么呢?只有一个线程开始运行 java虚拟机就会给这个线程调配它一块本人的专属内存空间 这个内存空间就叫做线程栈 !为什么调配这个空间?因为在这个线程运行过程中须要内存空间去寄存一些变量 那么就是放到这个线程栈的 ...

April 13, 2021 · 2 min · jiezi

关于http:http到底有什么魔性备受青睐

原文始发于:https://mp.weixin.qq.com/s/5Y8XD_T4F0U7SsDahc6nwwhttp是什么http是超文本传输协定,也就是Hyper Text Transfer Protocol,是一个在计算机世界里专门在两点之间传输文字、图片、音频、视频等超文本数据的约定和标准。 先看一下http名字:超文本传输协定。顾名思义,它能够拆成三局部,别离为:超文本、传输、协定。那咱们接下来去聊一聊每局部的含意。 首先http是一个协定,那么协定到底是什么? 其实"协定"并不仅仅局限在计算机世界里,在现实生活中"协定"也是无处不在的,比方租房时会签订一个租房合同、刚毕业的大学生会和公司签订一个三方协定、员工入职时会签订一个窃密协定等等,协定渗透到生存的方方面面。 之所以呈现"协定",也是对参与者的一种行为约定和标准。俗话说:"没有规矩,不成方圆",也体现出了协定的重要性。 http是一个用在计算机世界里的协定。它应用计算机可能了解的语言确立了一种计算机之间交换通信的标准,以及相干的各种管制和错误处理形式。 协定聊完了,那接下里看看http第二组成部分:传输 所谓的传输,就是把一大推货色从A点搬到B点,或者从B点搬到A点,即"A<==>B"。 就拿网络冲浪举例子吧,迈莫在手机上浏览公众号<<迈莫coding>>,发现一篇文章<<http到底是有什么魔性,备受青眼>>对本人帮忙更大,顺手点了个赞。 拿点赞这一操作来说,客户端须要将点赞人的ID、文章ID等必备数据给到服务器,服务器拿到这些数据去更新数据库,更新实现之后,将现有的点赞数告诉客户端,客户端拿到服务器发送过去的数据后,将点赞数更新。 说到这里,你也差不多了解了http的第二层的含意了吧。 说完"协定"和"传输",当初咱们终于到了http的第三局部:超文本 既然http是"传输协定",那么它传输的"超文本"到底是什么?它为什么是超文本而不是文本?超文本和文本区别是什么?接下来,咱们缓缓聊。 先说文本是什么。文本示意http传输的是残缺的、有意义的数据,能够被浏览器、服务器这些下层利用程序处理。不是tcp/udp这些底层协定里被切分的横七竖八的二进制包。 超文本就是"超过了一般文本的文本",不再局限于简略的文字,而是文字、图片、音频和视频等的混合体,最要害的是“超链接”,可能从一个"超文本"跳跃到另一个"超文本",造成简单的非线性、网状的机构关系。 到这里,咱们具体解释了http是超文本传输协定,最初用一句话来概括:http是一个计算机世界里专门在两点之间传输文字、图片、音频和视频等超文本数据的约定和标准。 http特点上述聊完了http的含意,接下来一起看看http为什么这么备受青眼,他到底有什么魔性,让互联网人无法自拔。 我用一张图来简略概括一下http的特点,而后再离开细聊。先有整体思维,而后细看每个特点。 - 简略疾速 客户端拜访服务端时,只需传送申请办法和门路。申请办法罕用的有 GET、HEAD、POST 等等。每种办法规定了客户与服务器分割的类型不同。因为 HTTP 协定简略,使得 HTTP 服务器的程序规模小,因此通信速度很快。 - 灵便可扩大 在应用http数据传输过程中,申请主体body 也不再限于文本模式的 TXT 或HTML,而是可能传输图片、音频视频等任意数据。也能够在申请头header 中增加一些个性,比方申请办法、版本号、状态码段等。 - 可靠性传输 http是基于tcp/ip协定的,而因为tcp是可靠性传输协定,所以 HTTP 天然也就继承了这个个性,可能在申请方和应答方之间“牢靠”地传输数据。 不过咱们必须正确地了解“牢靠”的含意,HTTP 并不能 100% 保证数据肯定可能发送到另一端,在网络忙碌、连贯品质差等顽劣的环境下,也有可能收发失败。“牢靠”只是向使用者提供了一个“承诺”,会在上层用多种手段“尽量”保证数据的残缺送达。 - 无状态 HTTP 协定是无状态协定。无状态,是指协定对于事务处理没有记忆能力。无状态意味着如果后续解决须要后面的信息,则它必须重传,这样可能导致每次连贯传送的数据量增大。另一方面,在服务器不须要先前信息时它的应答就较快。 咱们能够再比照一下 UDP 协定,不过它是无连贯也无状态的,程序发包乱序收包,数据包收回去后就不论了,收到后也不会程序整顿。而 HTTP 是有连贯无状态,程序发包程序收包,依照收发的程序治理报文。 http 1.0/1.1/2.x 版本http1.0 比拟 http1.1- 长连贯 解决在一个 TCP 连贯上能够传送多个 HTTP 申请和响应,缩小了建设和敞开连贯的耗费和提早。在 HTTP1.1中 默认开启Connection:keep-alive ,肯定水平上补救了 HTTP1.0 每次申请都要创立连贯的毛病。 ...

April 13, 2021 · 1 min · jiezi

关于前端:前端面试题页面布局

题目: 假如高度已知,写出三栏布局,其中左右两栏各为300px,两头宽度自适应 。根底代码如下 <style> * { padding: 0; margin: 0; } .layout { margin: 20px 0; min-height: 200px; } .layout div { min-height: 200px;/*已知高度*/ background: #ccf; } .layout .left { width: 300px; /*左栏宽度300px*/ background: #ffc; } .layout .right { width: 300px; /*右栏宽度300px*/ background: #cfc; }</style><body> <!--浮动解决方案--> <section class="layout float"> <div class="left"></div> <div class="right"></div> <!-- 留神三个模块的程序,对布局有影响 --> <div class="center">float</div> </section> <!--flex盒模型解决方案--> <section class="layout flex"> <div class="left"></div> <div class="center">flex</div> <div class="right"></div> </section> <!--position定位解决方案--> <section class="layout position"> <div class="left"></div> <div class="center">position</div> <div class="right"></div> </section> <!--table布局解决方案--> <section class="layout table"> <div class="left"></div> <div class="center">table</div> <div class="right"></div> </section> <!--栅格布局解决方案--> <section class="layout grid"> <div class="left"></div> <div class="center">grid</div> <div class="right"></div> </section> </body>一、浮动float解决方案 ...

April 13, 2021 · 2 min · jiezi

关于前端:怎样判断面试者是否有扎实的前端基础

前言最近敌人去面试,失去反馈说 ta 的“前端根底”不好。我忽然感觉这是一个很乏味的问题,比方对于武术家来说,你让他扎一个小时马步,就晓得他根底好不好;对于歌手,你让他视唱视奏一下,就晓得他根底好不好。 而技术面试,大家往往都是最开始面的几家公司会炮灰,而后随着面试过程一直刷题或者背概念,在背下来 HTTP协定概念,网络攻击,异步规范之后,终于在面到第 N 家的时候拿到了 offer。 问题是,短短几个礼拜的工夫其实并不会减少多少常识和教训,然而就能轻易的从“根底不好”变成”根底扎实“,到底是咱们对”根底“的定义有问题,还是对”根底“的评估规范有问题? 按理说根底的考查应该是能够有一个凋谢规范的,就是无论是否提前晓得题目,都简直不会影响取得的分数,那么对于前端来说,什么是长期积攒下能力夯实的根底呢?咱们在面试的时候又应该怎么量化去评判它? 个别大家会遇到那种问的问题去google就能晓得答案的常识,尤其是在面试高级前端时。其实面对这种面试官很简略:1.刷题 2.把上个面试官问的问题都记下来,回去查分明,如此重复,就能应酬这帮面试官了。 其实说到底,面试官看重的重点就两个:1.这个面试者目前晓得哪些常识2.这个面试者将来是否搞定咱们的工作 大部分面试官会选1,而我,可能也是跟我经验和特点无关吧,我集体会更关注2。我面试过不少应届毕业生,都是中国不错的大学。我发现我跟其余面试官的理念差别很大,有的二面面试官问我,这个人连 AMD 都没听说过,你怎么不把他拒了。嗯?AMD 很重要吗,不晓得就要拒吗?这货色不就是两个函数约定吗?在领导下学起来很快啊。没踩过坑的不要?我踩过啊,你们团队没有code review 吗?其实是因为我更看重面试者其余方面的特质。前端这些根底,说实话,教两个月根本就会了。如果你素来没打算教新人就当我没说。我更关怀的他英语水平如何,他是否有编程思维,他是否能跟我无效沟通,他遇到问题是否会立刻反馈给我而不是闷头干,他是否能疾速把握目前不会的常识,他是否会被团队里的人喜爱。还有就是,说句不好听的,有些前端团队不好好培训新人,尽想着用新人的价格招一个中级前端,这些团队也是想瞎了心了,早点铁心吧。 判断回到题目,如果你真想测验一个人的程度。第一步先考查一下根本的编程根底,问几个根本的编程问题,能够和前端相干也能够无关。比方垃圾收集大抵是怎么做的,setTimeout 大抵做了什么(说会在另一个线程里执行回调的间接毙掉)。 第二步考查一下知识面,问问http、tcp的基本知识,dns是怎么工作的,或者罕用框架的实现原理,看看候选人是不是除了本人的一亩三分地什么都不关怀。 第三步考查hold业务逻辑的能力,从一个简略的注册页,或者查问页开始,先让说下代码的根本架构,而后需要、性能、可靠性、平安层层加码,看看能不能很快的反馈出解决方案。能对答如流的要么做过,要么对他来说这种复杂度的货色是小case。 前三步都没问题,基本上阐明候选人曾经还行了,然而行到什么水平,不晓得。如果想找比拟厉害的,就减少个第四步,亮点我的项目考查。 总的来说,面试官要是考查思路就会从你理论做过的我的项目动手,考查你理论编码能力,就会让你在电脑敲代码,看你用什么编辑器、插件、编码习惯等。所以咱们在答复面试官问题时,有一个清晰的逻辑思路,分明晓得本人在和面试官说我的项目说技术时的话就好了,我整顿一套前端面试题,收费分享给大家,心愿对行将去面试的小伙伴们有帮忙! 因为篇幅起因,如有须要以上残缺学习笔记PDF,能够点击这里收费自取整顿不易,感觉有帮忙的敌人能够帮忙点赞分享反对一下小编~小编在这谢谢大家啦! 更多前端学习相干材料点此处收费支付

April 13, 2021 · 1 min · jiezi

关于javascript:前端刷题-牛客网前端题库60道详解二

目录引言 将字符串转换为驼峰格局(中等)字符串字符统计(入门)加粗文字(中等)段落标识(简略)设置文字色彩(较难???)查找数组元素地位(简略)数组求和(入门)移除数组中的元素(简略)移除数组中的元素(中等)增加元素(简略)引言牛客网这个前端口试题库,能够说这60道是最根底的了,也是考查的货色比拟杂,有工夫4天差不多就能够刷完,坚固根底还是有些用的。做完题回顾一上午就能够过完一遍。当初我联合我的答案和参考的其他人的答案,在这里做一个总结,也是本人常识的整顿后果。 前端刷题 —— 牛客网前端题库60道详解(一)题目11. 将字符串转换为驼峰格局题目形容 css 中常常有相似 background-image 这种通过 - 连贯的字符,通过 javascript 设置款式的时候须要将这种款式转换成 backgroundImage 驼峰格局,请实现此转换性能 以 - 为分隔符,将第二个起的非空单词首字母转为大写-webkit-border-image 转换后的后果为 webkitBorderImage输出 : 'font-size'输入 : fontSizefunction cssStyle2DomStyle(sName) { let arr = sName.split('-') for(let i = (arr[0] ? 1 : 2); i < arr.length; i++) { arr[i] = arr[i].slice(0,1).toUpperCase()+arr[i].slice(1) } return arr.join('')}相干知识点: 数组罕用办法 split/jointoUpperCase() —— toUpperCase将小写字符转成大写,toLowerCase将大写字符转成小写slice12. 字符串字符统计题目形容统计字符串中每个字符的呈现频率,返回一个 Object,key 为统计字符,value 为呈现频率 不限度 key 的程序输出的字符串参数不会为空疏忽空白字输出 : 'hello world'输入 :{h: 1, e: 1, l: 3, o: 2, w: 1, r: 1, d: 1} ...

April 13, 2021 · 3 min · jiezi

关于面试:今天聊23年前端走出离职困境与舒适区

前言工作2~3年的前端群体容易出心理问题,很大一部分起因就在于还没有建设更成熟的自我认知,也没有实现从学生到社会人身份的转变,加上前端行业的疾速迭代,中小型公司技术治理的凌乱,和身边同行带来的竞争压力,包含齐全脱离父母且要关照他们的压力,这个期间会让不少小伙伴感到迷茫,让他们对于前端行业产生狐疑,失去编程的乐趣,浓缩奋斗的激情,产生反抗和「丧」的情绪,甚至不经意间陷入或多或少的抑郁,进而职业路越走越急,跳槽失去方寸,整个牌局赢面越来越小,十分惋惜。篇幅较长,大概须要3-5分钟,请急躁浏览 注释如下我和身边同龄人及后盾私信我的敌人聊了本身的工作状况,问题大多具备相似性,而又有每个人的特殊性: 在认知不够成熟的时候,很容易陷入所谓的窘境,或者逆风逆水的停滞搁浅在舒服区,这一篇咱们更关注自我认知(心理建设、价值设定)和窘境解围,首先咱们从窘境的定义开始,舒服区则放到最初。 窘境与艰难到底是什么很多时候,咱们对于窘境的形容,往往像上面这些: 计算机根底不扎实甚至是齐全没有,比方算法、数据结构、网络相干实践等等JS 根底能力不行,心里没底又感觉没有力量和方向迈出去一年教训用三年,对于工作中用到的技术没有去理解外部机制学历是大专,感觉本人没有自信,将来也进不了大厂我不是科班出身,是培训的,感觉本人能力单薄竞争不过他人没有思考如何把代码写的更好,业务中到处是胶水代码工作环境导致的身边没有大牛,没有样板能够模拟、学习空有想法没有口头,导致收集一堆材料却从未去看过咱们外部用的工具总是很老套。没有人想扭转什么,没有野心,没有幻想,像一架老马车,大家都在对付等等成千上万的职业困惑,这些实质上是艰难而非窘境,咱们定义为窘境后,再从社区从别人这里取得的,也常常是绝对碎片化的倡议,比方: 前端尽管工作中用不了数据结构算法等等这些基础知识,然而这些常识决定了一个人的天花板高度,并且也是大厂经常考查的一点。当然学习这些根底并不能欲速不达,只能在平时业余时间无意识的去补齐这部分的短板。前端知识点的确很多很杂,因为并没有很好地浏览一些根底书籍,高程、你不晓得的 JS、 JS 精粹这些书籍读完肯定能打好一个不错的 JS 根底。工作年限越长,公司对于开发者的要求就会越高。这时候公司需要的员工是一个能写代码、能解决团队成员遇到的问题、能带人的这样一个工程师。理解技术的外部机制能力让本人不被淘汰。平时要无意识的去重构本人的代码,抽离能够复用的性能,这样做通常都能进步之后的开发效率。然而大家可能并不知道如何去优化本人的代码,一是能够学习团队中大牛的代码,看他是如何实现的;二是学习业内顶尖库的代码,看看人家是如何设计的。收集了一堆材料就当看过了,对于存在这样状况的前端工程师,能够抉择想学什么再去收集相干材料,而后立马设定 TodoList 督促本人学习。看过听过之后,可能有一两条咱们坚持下去了,而其余都缓缓丢在了脑后,这背地的一个很大的起因在于,咱们往往不是短少指标,甚至也不缺驱动的原动力,咱们不足的是对本人职业属性以及窘境辨别于艰难的正确认知,所以认知一旦出了问题,窘境就随之而来,无论它是事实上的外界物理环境造成的,还是本人心田冀望与惨淡事实的落差造成,这都会继续的挫伤着咱们的职业成长路线,而此时窘境就是咱们认知的边界尚未冲破的难堪场面,在这个场面下,所有皆窘境。 哪些要害认知须要建设社会属性,也即我的社会价值,以后阶段(不论是游学,实习,还是刚工作),我存在社会的价值是什么?无论从事哪个行业,无论心田是多懒惰,我想咱们都向往踊跃的活着,活着社会上,不成为社会的蛀虫,就肯定有所劳动,这些劳动就是我能够为社会提供的价值,也即我存在的意义,这也是我以后隶属行业它的价值。家庭属性,也即我的家庭角色,无论我是孑然一身,还是生存在残缺完满的家族关系中,无论我是一穷二白,还是家产十分殷实,我的多重身份(孙子、儿女、父母、哥哥姐姐弟弟妹妹...)就决定了,要为家人带去保障,为家人带来幸福与安稳,所有这一切都是我奋斗的原动力,这所有的奋斗肯定不是通过躺着实现,肯定须要我的大脑和双手来让血脉的存续,来让亲人的期待都不落空。群体属性,也即我的社会关系,无论多宅,咱们都是社会化的群居动物,团队单干和群体沟通始终贯通咱们终生,通过单干和沟通,咱们具备了生存的外在能力,也具备了通过别人察看本人的机会,而所有的单干和沟通都是建设在资源的前提上,也就是你自身具备社交价值,无论是作为主导关系的强势主宰,还是仅仅作为聆听别人负能量的收集桶,这些价值每一年都会被不同的群体重复测验,这种测验会让咱们明确晓得身边聚拢越来越多优良的人,还是寥寥无几的平层社交,通过这种比拟让咱们最终对本人的价值有更分明的断定。自我属性,也即我的心田所向,是当个出家人,是当个坦克兵,是当个店老板,还是工程师,这所有社会化的工种行当,都取决于我的价值抉择,我定义本人成为什么样的人,内心深处的价值是导向哪里,在不完满的世界中有那么一些美妙,它们浮现到我的心中别离是哪些坚守与放弃,这都影响到我的自我定位。从社会、家庭、群体到本人,每个人的状况都不尽相同,简略来说就是咱们的三观不同,在不同的三观驱动下,咱们去往的方向和门路就可能截然不同,但对于认知建设,你筹备好拷问本人了么?通过拷问后取得对本人最实在的理解、了解和认同后,再来还原到上面具体窘境解法里,你的答案才会松软很多,也会更容易做出对的抉择。 脱离窘境并非只有到职当认知都清晰之后,再来看这个命题,会发现仿佛所有的窘境不再是窘境,仅仅是生存和工作的一个状态,而困扰咱们往往只是艰难,比方不晓得怎么夯实技术根底,不是科班选手不晓得怎么学习,团队没有学习气氛怎么破...而窘境是什么,窘境是咱们尽所有能力去克服困难后,仍然陷在泥淖中无奈挣脱,而如果咱们并没有倾尽全力去克服所有的艰难之前,怎么能够把艰难视为是窘境呢? 咱们重点聊聊一个常见的窘境,就是择业切换之前,渴望到职的时候渴望解脱的时候,这对于超过 10 年长度的职业生涯来说,要不要走,去哪里,它是事实存在的窘境。 到职肯定是一条最快门路的可选项,因为整个从行业、公司文化、业务方向、职能要求、团队配置以及老板方方面面都经验一次刷新,从前的窘境云消雾散。 但到职是一把双刃剑,我身边好多个敌人当初忍耐不了阿里外部大公司的一些故障,会议多乱甩锅工程师气氛政治化等等,进去干了几年,好多个最初又回去了,因为发现里面溜了一圈,每个公司都有它的问题,有的问题比阿里更重大,有的则是前景十分灰暗,当然也有一些同学跳槽的很胜利,只是比例的确十分十分小,这就是择业择公司的智慧和运气了。也就是说,在这家公司所遇到的让你不爽的问题,在将来的某家公司,迟早还会换个形式让你遇到,明天回避了这个问题,将来依然要面对,无论是你转型了治理,还是将来本人开了公司,所有公司的问题不同但又相通,心魔这一关,永远是你的成长功课。 职场是很事实的,在哪个公司都充斥了冤屈、不平、揪心甚至困惑,做这样的抉择肯定要慎之又慎,最佳的到职状态是职业到了天花板,公司业务上进入平台期甚至衰减期蛋糕不够分,团队曾经不能再给你更大的舞台和空间,技术上治理上不能再上一台阶,想做的事件都做完了而且做得不错,此时须要切换一个新赛道从 0 开始,最惋惜的到职状态就是不称心组织内的人和事,且本人的整体实力并没有显著晋升的前提下,情绪化的一走了之,惋惜是因为这一段灰色的经验,岂但不会给你的职业加分,甚至在将来的某个面试中,还会减分,以及会肯定水平打乱你的职业节奏。 如果单纯是因为薪资而跳,更要谨慎,切记不要逢涨就跳,当你工作满 5 年10年的时候,其实回看工作的头几年,工资是 1 万/月,还是 2 万/月,它很重要,但它不是外围问题,尤其是涨幅只有 20% 30% 的时候,大家如果身边有厉害的前端前辈,能够去问他,他身边薪资过百万的前端,有多少是跳槽高频的,至多在我的周遭,简直都是很稳固的职业阶段,并且每个阶段都拿到了他要的后果,一个工作教训大于六七年的前端,稳定性足够强,他的下一次跳槽,薪资拿到 6+ 万/月,这些案例我的身边亘古未有,但他能够,不代表你是能够的,因为每个人的成长背景和职业路线都是举世无双的。 的确接触到了到职中的同学,简直都处于所谓窘境中,但起因各不相同,并且局部同学其实没有想分明这个问题,更多面临的是艰难而非窘境,眼前的切换属于是激动决定,情绪占第一位,甚至有的跳槽频率很高很高,前期重大挫伤了职业生涯,而胜利切换的总是很多数,如果下次到职,能够要找前辈求教二三,不要激动行事。 舒服区才是最大的窘境咱们看抖音,会发现有些人的技术特地娴熟,比方切菜的,比方为快递打包的,工程师的编程技能也一样,如果长时间在某一块重复性训练的话,也会唯手熟尔,比方一个长年做流动页面的同学,比方一个长年做后盾表单页面的同学,这些容易重复性的畛域很容易造成一种错觉,那就是这块我游刃有余总是很快搞定,然而却人不知;鬼不觉的进入到了一个舒服区,有时候会本人意识到,有时候意识不到,带来的结果是往往技术的成长停滞不前,更可怕的是在不知情的状况下度过了多年时光。 所以面对窘境未必要来到,处于舒服区也未必要留下,每一个人处于这种状态下,都是很苦楚,如何把苦楚周期缩短,如果找到突破点求变或者保持,其实都取决于咱们对于本人的判断,以及对行业的判断,所有的判断加在一起,再来对每一个问题标注上优先等级,正文上本人力不从心的事项,再列出来推动解决它的具体打算,最终是否迈出去到一个更好的阶段,就取决于执行力了。 说到执行力,再送给各位几个关键词来面对所有的人生窘境:脑力、膂力、心力、执行力,脑力是剖析是智慧是取舍是布局,膂力是保持是强度是执行力度,心力是耐力是决断力是忍耐向前的抗击打能力,执行力是使命必达说到做到背水一战的落地水平,这所有都须要你足够被动,足够负责,能力点爆奇观。 不论是要到职还是持续保持,最重要的是要走出舒服区,可能咱们还只是工作了两三年,没有这种感觉,但凡事要做长远打算,依照本人的节奏去走好每一步。小编为面试的小伙伴们筹备了前端面试材料和前端学习思维导图及材料,收费分享给大家,心愿在想走出窘境或来到舒服区时,对你有帮忙。 最最初,送给大家一句话,也是始终在警觉本人的:心不随境转,才是自在人生。祝福大家走出一个越来越回升越来越增值的职业路线。 因为篇幅问题,须要完整版材料PDF点击这里,收费下载浏览。

April 13, 2021 · 1 min · jiezi

关于前端:前端刷题-牛客网前端题库60道详解一

目录引言 批改 this 指向(中等)获取 url 参数(较难)dom 节点查找(入门)依据包名,在指定空间中创建对象(入门)数组去重(较难)斐波那契数列(入门)工夫格式化输入(中等)获取字符串的长度(简略)邮箱字符串判断(中等)色彩字符串转换(中等)引言牛客网这个前端口试题库,能够说这60道是最根底的了,也是考查的货色比拟杂,有工夫4天差不多就能够刷完,坚固根底还是有些用的。做完题回顾一上午就能够过完一遍。当初我联合我的答案和参考的其他人的答案,在这里做一个总结,也是本人常识的整顿后果。 题目1. 批改this指向封装函数 f,使 f 的 this 指向指定的对象。这里给出三种写法,哪种都能够。 // apply批改this作用域function bindThis(f, oTarget) { return function () { return f.apply(oTarget,arguments) }}// call批改this作用域function bindThis(f, oTarget) { return function (){ return f.call(oTarget,...arguments) }}// bind批改this作用域function bindThis(f, oTarget) { return function (){ return f.bind(oTarget,...arguments)() }}// 或者间接简写function bindThis(f, oTarget) { return f.bind(oTarget)}相干知识点: apply、call、bind区别 apply、call、bind的作用都是批改执行上下文 apply、call都是返回函数立刻执行的后果,其中apply第二个参数之后是数组,call第二个参数之后是单个的值。 bind返回的是函数,须要手动执行后果。第二个参数之后是单个的值。2. 获取url参数获取 url 中的参数 指定参数名称,返回该参数的值 或者 空字符串不指定参数名称,返回全副的参数对象 或者 {}如果存在多个同名参数,则返回数组输出:http://www.nowcoder.com?key=1&key=2&key=3&test=4#hehe key 输入:[1, 2, 3] function getUrlParam(sUrl, sKey) { let newArr = [] let newObj = {} // 获取?号前面#号后面的值 let query = sUrl.split('#')[0].split('?')[1] // 如果query存在 if (query) { let arr = query.split('&') for(let i = 0 ; i < arr.length; i++) { if (arr[i]) { arr[i] = arr[i].split('=') // 数组 if (sKey !== undefined) { if(arr[i][0] === sKey) { newArr.push(arr[i][1]) } // 对象 } else { if(arr[i][0] in newObj) { newObj[arr[i][0]].push(arr[i][1]) } else { newObj[arr[i][0]] = [arr[i][1]] } } } } // 判断sKey有没有值 if(sKey !== undefined) { switch(newArr.length) { case 0 : return '';break; case 1 : return newArr[0]; break; default: return newArr;break; } } else { return newObj } // 如果query不存在,判断sKey是否存在,如果存在就返回空对象,如果不存在就返回空字符串 } else { return sKey !== undefined ? {} : '' } }相干知识点: ...

April 13, 2021 · 5 min · jiezi

关于面试:前端面试之算法

一、排序算法疾速排序在数据集之中,抉择一个元素作为"基准"(pivot)。所有小于"基准"的元素,都移到"基准"的右边;所有大于"基准"的元素,都移到"基准"的左边。对"基准"右边和左边的两个子集,一直反复第一步和第二步,直到所有子集只剩下一个元素为止。function quick_sort(arr) { if (arr.length <= 1) return arr; const middle = Math.floor(arr.length / 2); const middleVal = arr.splice(middle, 1)[0]; const left = [], right = []; for (let i = 0; i < arr.length; i++) { if (arr[i] < middleVal) { left.push(arr[i]); } else { right.push(arr[i]); } } const leftRs = quick_sort(left); const rightRs = quick_sort(right); return [...leftRs, middleVal, ...rightRs];}归并排序堆排序抉择排序插入排序冒泡排序二、二叉树

April 12, 2021 · 1 min · jiezi

关于前端:面试技巧老生常谈之-n-种使用-CSS-实现三角形的技巧

在一些面经中,常常能看到无关 CSS 的题目都会有一道如何应用 CSS 绘制三角形,而常常的答复通常也只有应用 border 进行绘制一种办法。 而 CSS 倒退到明天,其实有很多有意思的仅仅应用 CSS 就能绘制进去的三角形的形式,本文将具体列举讲讲。 通过本文,你能理解到 6 种应用 CSS 绘制三角形的形式,并且它们都十分好把握。当然本文仅是抛砖引玉,CSS 突飞猛进,可能还有一些有意思的办法本文脱漏了,欢送大家在留言区补充~ 应用 border 绘制三角形应用 border 实现三角形应该是大部分人都把握的,也是各种面经中经常出现的,利用了高宽为零的容器及通明的 border 实现。 简略的代码如下: div { border-top: 50px solid yellowgreen; border-bottom: 50px solid deeppink; border-left: 50px solid bisque; border-right: 50px solid chocolate;}高宽为零的容器,设置不同色彩的 border: 这样,让任何三边的边框的色彩为 transparent,则非常容易失去各种角度的三角形: CodePen Demo - 应用 border 实现三角形 应用 linear-gradient 绘制三角形接着,咱们应用线性突变 linear-gradient 实现三角形。 它的原理也非常简单,咱们实现一个 45° 的突变: div { width: 100px; height: 100px; background: linear-gradient(45deg, deeppink, yellowgreen);} ...

April 12, 2021 · 2 min · jiezi

关于程序员:Java的基本数据类型讲解做开发的都可以看看

首先来一张思维导图: 整型变量代码示例: 注意事项:int 示意变量的类型是一个整型变量名是变量的标识. 后续都是通过这个名字来应用变量Java 中 = 示意赋值(和数学不一样), 意思是给变量设置一个初始值.初始化操作是可选的, 然而倡议创立变量的时候都显式初始化.最初不要遗记分号, 否则会编译失败.特地申明一点:在Java中 一个int变量占四个字节,数据范畴是 -2^31 -> 2^31-1 ,和操作系统没有间接关系!长整型变量代码示例: 注意事项:根本语法格局和创立 int 变量基本一致, 只是把类型批改成 long初始化设定的值为 10L , 示意一个长整型的数字. 10l 也能够.应用 10 初始化也能够, 10 的类型是 int, 10L 的类型是 long, 应用 10 L 或者 10 l 更好一些.Java 中 long 类型占 8 个字节. 示意的数据范畴 -2^63 -> 2^63-1 双精度浮点型变量代码示例: 示例一段代码: 此处应留神:Java 中的 double 尽管也是 8 个字节, 然而浮点数的内存布局和整数差异很大, 不能单纯的用 2 ^ n 的模式示意数据范畴.Java 的 double 类型的内存布局恪守 IEEE 754 规范(和C语言一样), 尝试应用无限的内存空间示意可能有限的小数, 势 必会存在肯定的精度误差.单精度浮点型变量代码示例: ...

April 11, 2021 · 1 min · jiezi

关于面试:Js面试题整理

src和href的区别href是指向网络资源所在位置,建设和以后元素(锚点)或以后文档(链接)之间的链接,用于超链接。src是指向内部资源的地位,指向的内容将会嵌入到文档中以后标签所在位置。 1. 在申请src资源时会将其指向的资源下载并利用到文档内,例如js脚本,img图片和frame等元素。2. 当浏览器解析到该元素时,会暂停其余资源的下载和解决,直到将该资源加载、编译、执行结束,图片和框架等元素也如此,相似于将所指向资源嵌入以后标签内。这也是为什么将js脚本放在底部而不是头部。观察者和订阅-公布的区别观察者模式里,只有两个角色 —— 观察者 + 被观察者而公布订阅模式里,却不仅仅只有发布者和订阅者两个角色,还有一个常常被咱们疏忽的 —— 经纪人Broker往更深层次讲:观察者和被观察者,是松耦合的关系发布者和订阅者,则齐全不存在耦合 从应用层面上讲:观察者模式,多用于单个利用外部公布订阅模式,则更多的是一种跨利用的模式(cross-application pattern),比方咱们罕用的消息中间件 delete数组的item,数组的length是否会 -1只是被删除的元素变成了 undefined 其余的元素还是不变,也就是说数组长度没变 给出 ['1', '3', '10'].map(parseInt) 执行后果parseInt(string, radix) string:须要转化的字符,如果不是字符串会被转换,漠视空格符。radix:数字2-36之间的整型。默认应用10,示意10进制。这个参数的意义是指把后面的字符看作多少进制的数字,所谓的基数。 如果radix在2-36之外会返回NaN。在没有指定基数,或者基数为0的状况下,javascript作如下解决: 如果字符串string以 “0x” 或者 “0X” 结尾,则基数是16,16进制;如果字符串string以 “0” 结尾,基数是8(8进制)或者10(10进制),依据实现环境决定。如果字符串string 以其余任何值结尾,则基数是10,10进制。Proxy 相比于 defineProperty 的劣势Async/Await 如何通过同步的形式实现异步https://es6.ruanyifeng.com/#docs/generator-async箭头函数能够new吗?为什么?箭头函数、没有prototype、没有本人的this指向、不能够应用arguments、天然不能够new。如果new的时候会报错 function is not a constructor 异步队列https://github.com/Advanced-F... 一个iframe,内嵌了一个A页面,iframe的宽高不停变动,如何让A页面的宽高实时自适应这个iframe的宽高大小。请说出至多3种办法,越难越好 解释一下在js里,0.1 0.2为什么等于0.30000000000000004,如何通过代码解决这个问题? 如何防止重绘或者重排?当 DOM 元素的属性发生变化 (如 color) 时, 浏览器会告诉 render 从新描述相应的元素, 此过程称为 repaint。如果该次变动波及元素布局 (如 width), 浏览器则摈弃原有属性, 从新计算并把后果传递给 render 以从新描述页面元素, 此过程称为 reflow。回流必定会产生重绘,重绘不肯定会引发回流。typeof和instanceof 区别instanceof 运算符用来检测 constructor.prototype 是否存在于参数的原型链上typeof操作符返回一个字符串,批示未经计算的操作数的类型。谈谈变量晋升?1. 只有申明自身会被晋升,而赋值或其余运行逻辑会留在原地。2. 每个作用域都会进行晋升操作。3. 函数申明会被晋升,然而函数表达式却不会被晋升。4. 函数申明和变量申明都会被晋升,是函数会首先被晋升,而后才是变量。5. let和const进行的申明不会在块作用域中进行晋升。defer和async区别defer ...

April 10, 2021 · 1 min · jiezi

关于iOS开发:iOS面试全流程包括面试题以及准备工作

收录:zhangferry都说往年互联网行情很差,iOS行情更差。但到底怎么样呢,不能光听他人说,而要本人走进来看一看。我的面试的阶段根本都在3月份,筹备的阶段则要再往前推个半个月吧。期间约到了不少一二线互联网公司面试机会,后期因为筹备有余也错失了一些机会,在之后的面试中一直总结经验,越来越有信念了,最终抉择了爱奇艺。整体来看求职状况还算能够,不是很好但也不是很差,其中会带有肯定运气成分,所以要换工作的话肯定不要裸辞。 这里总结下这段时间的面试经验和一些心得,前面会附上期间遇到的面试题,大家能够尝试作答一下。 你关注 我送礼:感激各位的观看,别忘了点个赞,同时我在这里还给各位筹备了你们专属材料,关注我,取得私信进裙理解,不要遗记看私信音讯啊。或者间接进群有管理员被动找你,回复[7]之后,你就能拿到各自想要的材料。别忘了去支付啊求职筹备如果确定了想要换工作就应该为求职做筹备了。 常识筹备在确定了换工作的想法之后,咱们就应该为面试做筹备了。在回顾知识点的时候我倡议分类去梳理:OC语法,Runtime,Runloop,多线程,性能优化等,这些是优先级高的内容,其次是网络常识,数据结构与算法等计算机通识常识。 有一本书十分举荐:《Objective-C高级编程》,倡议精读。 开源库的话看Runtime(最新为可编译799.1版本)吧,把类的定义,Runloop,weak,Autoreleasepool相干的代码都看下。 数据结构与算法,依照类别刷个几十题应该能应酬大多数状况了,iOS面试个别不会有太难的算法题。 简历简历是求职的第一步,也是你是否取得面试机会的敲门砖,咱们肯定要好好打磨下。上面是我在脉脉上看到的HR在筛选简历时次要关注的点: 我在往年1月份的时候尝试投过几次简历,并没有太好的后果,起初进行了一些调整优化。3月份再投的时候绝对好了些,陆续收到了些回应。自己之前并没有大厂经验,不是一流本科,但也能收到不少大厂的面试机会,所以我感觉本人的简历内容还是起到了肯定的作用的。 下面有提到“高光时刻”,能够了解成亮点。怎么让本人的简历跟同能力程度的求职者不同,那就是找到属于咱们的亮点。有一个倡议,咱们在写简历时,能够刻意夸张本人的能力,或者写咱们想成为的样子,再之后咱们就对着简历让这些内容一一实现,让它们变成本人的亮点。肯定要留神不能只吹牛,不落实,因为被发现“造假”可是很重大的。 简历投递以我的经验来说,绝对靠谱的简历投递形式有:Boss直聘、脉脉、内推。 须要留神的是,Boss直聘和脉脉只有他人分割你,你再投递,反馈率才会高一些。如果是你被动分割的招聘方,那大概率是不会收到回应的。揣测很多企业并没有很多的招聘岗位也会把招聘信息挂在下面,这种时候HR是不会关注投递的简历的。这也是为什么能看到很多人晒出投递上百个简历确一个回应的都没有的状况,不要泄气,这不肯定代表你能力不行。 等招聘者分割是绝对被动的,主动出击会更无效。那就是寻找内推,个别公司内推都有处分的,所以公司内部人员都乐意去公布职位获取内推人选。脉脉,掘金,V2EX,一些出名公众号都能发现不少内推岗位,咱们能够本人去开掘。 面试流程目前互联网公司大部分是2轮技术面+1轮HR,或三轮技术面+1轮HR。目前的面试模式多为视频面试,也有些是电话面试。视频面试的话,如果是通过Zoom,企业微信,钉钉等个别是不考查手写代码的。如果是通过牛客网,个别是会考查手写代码的。对于手写代码,仅有算法题会要求准确性,可运行,对于设计类题目,咱们写出伪代码即可。 如果到了HR轮根本阐明咱们曾经通过了面试,如果确定入职,接下来就是背调,薪资证实,学历证明,入职体检等一系列操作。 面试题作为一个开发者,有一个学习的气氛跟一个交换圈子特地重要,这是一个我的iOS交换群:891 488 181 ,不论你是小白还是大牛欢送入驻 ,分享BAT,阿里面试题、面试教训,探讨技术, 大家一起交流学习成长!以下是我面试过程中遇到的面试题,其中网络和多线程问题曾经分成两篇独自解说了,这里就去除了这两局部。 Swift因为我最近两年多始终在用Swift,面试开始的自我介绍环节,我也会着重提这一点。然而很可怜,我失去的答案根本都是:面试次要考查OC。这也阐明了大部分公司对Swift态度还是十分激进的,所以除非招聘信息里写了要求Swift技能,否则咱们是没有必要专门筹备Swift相干面试的。 当然面试过程中也遇到了几个Swift问题: 1、Swift中struct和class有什么区别? 2、Swift中的办法调用有哪些模式? 3、Swift和OC有什么区别? 4、从OC向Swift迁徙的时候遇到过什么问题? 5、怎么了解面向协定编程? OC语法1、Block是如何实现的?Block对应的数据结构是什么样子的?__block的作用是什么?它对应的数据结构又是什么样子的? 2、GCD中的Block是在堆上还是栈上? 3、NSCoding协定是干什么用的? 4、KVO的实现原理 5、NSOperation有哪些个性比着GCD有哪些长处,它有哪些API? 6、NSNotificaiton是同步还是异步的,如果发告诉时在子线程,接管在哪个线程? UI1、事件响应链是如何传递的? 2、什么是异步渲染? 3、layoutsubviews是在什么机会调用的? 4、一张图片的展现经验了哪些步骤? 5、什么是离屏渲染,什么状况会导致离屏渲染? 6、CoreAnimation这个框架的作用什么,它跟UIKit的关系是什么? 援用计数1、ARC计划的原理是什么?它是在什么时候做的隐式增加release操作? 2、循环援用有哪些场景,如何防止? 3、为什么当咱们在应用block时里面是weak 申明一个weakSelf,还要在block外部应用strong再持有一下? 4、Autoreleasepool是实现机制是什么?它是什么时候开释外部的对象的?它外部的数据结构是什么样的?当我提到哨兵对象时,会持续问哨兵对象的作用是什么,为什么要设计它? 5、哪些对象会放入到Autoreleasepool中? 6、weak的实现原理是什么?当援用对象销毁是它是如何治理外部的Hash表的?(这里要参阅weak源码) Runtime1、音讯发送的流程是怎么的? 2、关联对象时什么状况下会导致内存泄露? 3、音讯转发的流程是什么? 4、category是否增加属性,为什么?是否增加实例变量,为什么? 5、元类的作用是什么? 6、类办法是存储到什么中央的?类属性呢? 7、讲几个runtime的利用场景 Runloop1、讲一下对Runloop的了解? 2、能够用Runloop实现什么性能? 性能优化1、对TableView进行性能优化有哪些形式? 2、Xcode的Instruments都有哪些调试的工具? 3、讲一下你做过的性能优化的事件。 4、如何检测卡顿,都有哪些办法? 5、放大包体积有哪些计划? 计算机相关1、我的项目编译的流程是什么?手机上的应用程序自点击图标开始到首屏内容展现都经验了哪些步骤? 2、对于根本数据类型,个别是存储到栈中的,它有没有可能存在堆上,什么状况下会存储到堆上? 3、数据库中的事务是什么意思? 4、应用过什么数据库(我答复的Sqlite,Realm),Realm在应用时有哪些注意事项,如何实现批量操作? 5、LRU算法是否理解,如何实现一套LRU算法? 6、晓得哪些设计模式,怎么了解设计模式的作用? 7、如果有1000万个Int类型的数字,如何对他们排序? ...

April 10, 2021 · 1 min · jiezi

关于java:2021年面试大盘点金三银四Java春招面试高频考点总结附答案

写在后面:算是对本人最近经验的一些面试的小小总结吧,小张要持续加油呀 我的项目:介绍我的项目的背景、架构、性能、目前实现的状况、部署计划?我的项目实现过程中的难点以及如何解决的?哪个我的项目播种更大?为什么用xx框架/技术来实现?在我的项目中次要承当了哪些工作?如果你的我的项目中服务端同时有大量申请,如何解决? 上面为大家整顿了金三银四java春招高频考点总结以及我总结的答案,心愿对大家有帮忙!Java根底:String、StringBuffer、StringBuilder的区别?JDK1.7和JDK1.8有哪些区别?Java中有哪些罕用的容器类?HashMap底层是如何实现的?JDK1.8和JDK1.7的HashMap的实现有哪些区别?HashMap扩容为什么都要扩大为原来的2倍?高并发状况下应用HashMap会呈现哪些问题?如何解决?JDK1.7中ConcurrentHashMap的底层构造?JDK1.8对ConcurrentHashMap做了哪些改良?JDK1.8中ConcurrentHashMap保障并发平安的原理?ArrayList和LinkedList的区别?LinkedList的底层数据结构?插入删除元素的时空复杂度剖析?ArrayList的扩容机制?什么是Fast-fail?什么是序列化?如何实现序列化?transient关键字的作用?Java中有哪些IO流?字节流和字符流如何进行转换?Java的反射机制?为什么须要反射?反射次要用于哪些场景?应用反射创立实例和new一个对象的区别?讲一下线程池的作用?为什么须要线程池?创立线程为什么比拟耗时?线程池的外围参数有哪些?线程池中创立一个线程的机会?Java并发:Java中如何创立一个线程?实现Collable接口和实现Runnable的区别?创立一个线程时,会在哪些区域调配空间?Java中线程间通信的形式有哪些?保障线程同步的机制有哪些?什么是ThreadLocal?实现原理?什么是AQS?AQS有什么作用?常见的基于AQS的组件有哪些?java的内存模型?指令重排序是什么?happens-before规定是什么?作用?有哪些规定?volatile关键字的作用?实现原理?什么是synchronized?实现原理?synchronized能够润饰哪些内容,别离锁定的是什么?JDK1.6后synchronized关键字底层做了哪些优化?如何基于双重查看锁实现单例模式?volatile关键字的作用?为什么要两次加锁?JVM:运行时数据分区:JVM将数据区域划分为哪些局部,别离存储哪些内容?哪些区域是线程公有的,哪些是线程私有的?什么是TLAB?作用?垃圾回收机制:JVM运行时数据分区有哪些?别离存储哪些内容?有什么特点?垃圾回收次要回收哪些区域?如何判断一个对象是否可回收?可达性剖析后发现一个对象不在援用链上,那它肯定会被回收吗?垃圾回收算法有哪些?罕用的垃圾回收器有哪些?G1回收器采纳了什么样的回收算法?什么时候会触发Full GC?服务器运行过程中频繁产生Full GC,可能存在哪些问题?如何排查?类加载机制:自定义一个String类,能够被加载到吗?为什么?什么是双亲委派机制?如果想要加载到自定义的String类,应该怎么做?(如何突破双亲委派机制?)哪些状况会触发类的初始化?类加载的过程?什么状况下两个类是相等的?MySQL:SQL执行过程、性能剖析:MySQL包含哪些组件?(连接器、查问缓存、分析器、优化器、执行器)(Server层+存储引擎)为什么不举荐应用查问缓存性能?为什么MySQL 8.0版本删除了查问缓存?查问sql语句的执行过程?更新sql语句的执行过程?什么是crash-safe?MySQL实现crash-safe的原理?(binlog、redolog、undolog、WAL机制、两阶段提交)更新SQL语句执行流程中,总共须要写3个日志,这3个是不是都须要,能不能进行简化?两阶段提交的形式会存在什么问题?解决办法?什么是组提交?用于解决什么问题?假如事务提交过程中,MySQL过程忽然奔溃,重启后是怎么保证数据不失落的?如何查看SQL的执行状况?(执行打算、explain指令)如何在MySQL中查找效率慢的SQL语句呢?(慢查问日志) 死锁:MySQL的InnoDB存储引擎反对哪些类型的锁?什么是死锁?MySQL中哪些状况下会产生死锁?如何解决死锁?(超时期待、wait-for graph)如何防止死锁的产生?如何查看是否产生了死锁?(死锁日志) 索引机制:InnoDB存储引擎的索引机制底层采纳了什么构造?B+树的特点有哪些?Hash索引和B+索引比照剖析?增加索引时须要留神什么?什么状况下不适宜增加索引?应用索引肯定可能进步查问的性能吗?为什么?什么是最左前缀准则? 事务机制:什么是事务?事务的个性?事务的隔离级别有哪几种?并发事务会带来哪些问题?不同的隔离级别别离能够防止哪些问题的产生?幻读产生时的情景?MySQL默认的事务级别是什么?能够防止哪些问题?事务回滚在MySQL中是如何实现的?MyISAM和InnoDB存储引擎有哪些区别? 计网:TCP/UDP:TCP和UDP的特点?TCP三次握手的过程?四次挥手的过程?为什么须要三次握手?三次握手如果每次对方都没有收到会怎么样?分状况介绍。为什么连贯的时候是三次握手,敞开的时候却是四次握手?挥手时客户端为什么最初还要期待2MSL?如果曾经建设了连贯,然而客户端忽然呈现故障了怎么办?(保活计时器)TCP依附哪些机制来保障牢靠传输?数据分块传输数据包校验失序数据包重排序应答机制流量管制:滑动窗口机制(接管窗口)拥塞管制:慢开始、拥塞防止、快重传、快复原(拥塞窗口)超时重传应用UDP时如果想要保障可靠性,能够如何实现?TCP和UDP别离对应的应用层协定有哪些?HTTP/HTTPS:如何了解HTTP协定是无状态的?HTTP如何保留用户状态?Cookie的作用是什么?和Session有什么区别?HTTP和HTTPS的区别?(安全性、资源耗费、端口等)HTTPS的工作原理?HTTP的常见状态码有哪些?别离示意什么?OSI七层体系结构每一层的作用?以及每层常见的协定。浏览器输出URL回车后产生了什么?操作系统:过程间通信的形式有哪些?基本原理?管道/匿名管道:有名管道:信号音讯队列信号量共享内存套接字过程调度算法有哪些?死锁:什么是死锁?死锁产生的起因?死锁产生的必要条件?(互斥、不可剥夺、申请与放弃、循环期待)死锁的解决根本策略和罕用办法?页面置换算法有哪些?Spring全家桶:Spring和SpringBoot有什么区别吗?为什么须要SpringBoot?什么是MVC?SpringMVC解决申请的流程?Spring中AOP的实现的形式有哪些?Cglib和JDK动静代理的区别?Spring运行过程中如何旋转应用的代理?Spring中IoC的实现原理?单例Bean是并发平安的吗?为什么?Spring中事务是如何实现的?Spring中Controller是单例还是多例?如何保障并发的平安?其余:排序算法:时空复杂度、实现原理?什么是分布式一致性算法?Raft算法的原理?一致性哈希算法?HDFS的架构,读写流程?如果一个DataNode挂掉了怎么办?NameNode挂掉怎么办?如何容灾?什么是RPC?实现一个RPC框架次要须要思考哪些方面?and so on......(至多要非常相熟两三个框架/组件,能够是我的项目中用到的,也能够是目前比拟支流的,比方Redis、Netty、Hadoop、RPC框架等)最初只有技术过硬,在哪儿都不愁待业,“万般带不去,唯有业随身”学习原本就不是在课堂那几年说了算,而是在人生的旅途中不间断的事件。人生短暂,别稀里糊涂的活一辈子,不要将就。文章内容中波及到的Java面试题、源码文档,技术笔记等学习材料,均能够收费分享给大家学习,只需你动动手多多反对即可!有须要的敌人欢送关注公众号:前程有光,回复材料支付!

April 9, 2021 · 1 min · jiezi

关于校招:2021春招算法岗面经汇总

============= 自己算法菜鸡,本科双非二本电子信息,研究生德国TU9的信息技术。因为本科毕业在事业单位工作两年,所以研究生毕业算是大龄应届生了。在18秋招年还在读书的时候就听闻学长说到国内算法岗曾经开始卷了,然而那时候相对来说进大厂或者科技公司还算好进,有一些我的项目经验能进面试,还能够保小厂offer。进入19年开始难度陡增,而20年在疫情下又缩招,算法更是灰飞烟灭。没有头部大厂算法实习或者独角兽算法实习很多简历都过不了,而口试难度也开始以leetcode的medium起底,时不时上一些hard题型。我之前的工作教训并不匹配算法,而实习尽管在德国车企的数据迷信部门做一些算法,然而业务深度因为疫情影响也不太够格。 我自身的方向是偏差数据挖掘的,所以我投递的比拟多是机器学习岗,数据挖掘岗,大数据分析岗。投递的畛域有互联网,金融科技,制造业,车企,研究院。不过往年春招竞争其实比秋招还要强烈,而很多公司的招聘需要并不多,JD放进去然而并不捞人(也可能是我太菜了)。 华为(AI培训工程师):这个是春招第一面,筹备很差,问了欠拟合过拟合,为何模型总是难以拟合真实情况,还有一个忘了,而后介绍下业务:他们是要给客户做AI技术培训的,要讲课,要常常出差。面试反馈感觉个别,然而还是进到第二轮HR面了,HR面反馈说不太好,不适宜讲师这个岗位。 科大讯飞(NLP):一面自我介绍,问实习,问论文,问较量,介绍本人罕用的特色工程办法,问word2vec原理,python装璜器是什么,没手撕代码。因为c++不熟一面挂。 兴业数金(数据挖掘剖析):一轮口试,通过后一面自我介绍,问实习,问论文,问较量,较量用什么模型,评估指标,决策树模型原理,xgboost原理,xgboost和gbdt以及lightgbm区别,如何用决策树做特色重要性排列,IV值是什么,知不知道评分卡模型。一面之后没信。 中信信用卡(数据挖掘):一轮口试,通过后安顿一小时三连面,两轮技术面。一面自我介绍,实习,论文,问较量,RNN和LSTM原理;二面问梯度降落原理,卷积核原理,简述欠拟合和过拟合能够预防的方法。面完始终在等音讯。 美团(数据开发):这个是意外投的,因为我意料算法必定是排不上,就投了简历稀缺的数开(口试只ac了不到两道的状况下还能进是真的稀缺)。一面问了实习(因为实习用到了spark),如何搭建这个spark框架的,知不知道rdd是什么,SQL写得多吗,数据库接触的多不多,如何解决数据歪斜,手撕最长回文串。 一点资讯(算法):一面介绍毕业论文,问实习内容,问较量内容,如何构建新特色,怎么做特色穿插,如何进行特色筛选,解释FM原理,LR+GBDT中GBDT是如何结构特色,wide&deep原理,做题和为s的两个数字。 明略科技(算法):一面自我介绍,问实习,因为面试管是CV组的大佬,问有没有接触过人脸识别,简略介绍下Transformer,实习用的数据量大小,论文发到哪个会议了,做题判断带括号四则运算式子是否非法,非法输入后果。因为我做CV比拟少,俩人有点聊不到一起去,前面尬聊比拟多,挂。 伴鱼(数据挖掘):一轮口试,通过后一面上来间接做题:一道二维数组翻转求数组最大二进制和,没思路,挂。 PayBy(信贷/风控算法工程师):一个初创出海公司,主做阿联酋的挪动领取和信贷业务,往年尝试大量校招。技术面就有三轮,英语面一轮,HR面一轮,前三轮轮都一个小时左右,总体感觉挺有技术积淀的。一面自我介绍,介绍毕设,挖实习,询问树算法原理,xgboost的晋升点,AUC是什么,高于和低于对角线示意意义,偏差和方差区别,手写几个pandas的代码,手写冒泡排序以及复杂度,介绍他们的业务;二面自我介绍,问比赛应用的模型,怎么做的特色工程,手写LCS和Kmeans算法;三面是技术主管面,询问深度学习做的多不多,是否解决过海量数据,实习中是怎么用spark的,手写判断回文;英语面是阿联酋的一个HR面的,英语自我介绍,职业规划,为何抉择留学。终面谈到工资,才发现出海业务的工资十分可观,如果有半年在境外,全年工资轻松能够上35w。 腾景研究院(机器学习):一面问实习,问毕设,问较量模型,特色工程,问我的项目中的难点是怎么解决的,介绍他们的次要业务;二面竟然是技术群面,四个候选人挨个对于以后提出的技术或者趋势问题,以及以本人的我的项目教训如何解决他们提出的技术问题发表认识,而后会有HR和技术部门的人对候选人独自发问(搞得像是论文答辩的自在发问环节一样,两个半小时下来都虚脱了)。三面就是HR面,问简历经验,问冀望薪资,问留学,为何抉择回国等。 吉利(大数据挖掘/算法):吉利这个面试很奇葩,不预约间接打电话。第一次接到的是国地联结算法部门的面试,因为一二轮的面试官碰上了,所以间接合在一起面。问了实习中数据分析解决的需要,用什么算法,较量中又用什么算法,后果如何,介绍他们的业务,想做算法利用还是算法钻研,反馈挺称心,他们说间接交给HR等他分割我;第二次接到的是吉润的大数据挖掘,问实习中数据大小,特色有多少,如何抉择有用特色,问毕设,问xgboost对于GBDT的晋升点,晋升树的算法步骤,LSTM的原理,ARIMA原理,AR和MA区别。HR面先接到的是国地联结的,工资给的切实太低,拒了。 滴滴(算法):这个是在boss上受邀投的,所以间接进面试了,慢车分单业务部。长期换了面试官,然而一面依然面了一个多小时。上来也是自我介绍,而后写题,因为面试官长期上阵也没筹备,手撕是快排,两头在循环嵌套的中央有一个小谬误并不影响。而后进入我的项目深挖,挑一个较量细讲,讲工夫序列模型抉择,序列合成,特色筛选的原因,xgboost中应用feature importance的判断条件,讲一下DIN模型的原理,以及attention的思维,LR模型中为何应用穿插熵而不应用MSE作为损失函数(从损失函数建设的指标和成果上谈),CART树的优缺点,DNN中避免过拟合欠拟合的办法,如果训练集采样和全样本分布雷同,能够防止过拟合吗(不能,交换了非法则噪声的影响)。而后进入到反诘环节,问到业务部,技术栈,目前业务上的模型是哪些。整体面试体验十分好,没有压迫感,对每个问题都是在交换和探讨中度过的。当初在等二面。 挂在口试的:字节,网易,百度,360,奇安信。 挂在简历的:搜狗,海康,多抓鱼,车好多,满帮,manteia,龙湖,小红书。 没人捞的:安全,bilibili,小米,上海银行,搜狐,友塔,度小满,陌陌,便当蜂,永辉,soul等等。 总结来说,因为我个人经历在算法这种要么985或者出名实验室毕业,或者在大厂算法岗实习或者有顶会论文的神仙打架的岗位上没有竞争力,所以还是比拟吃亏的。总体面试的难度互联网和AI独角兽 > 制造业和银行独立进去的科技公司 >= 小公司。比拟常见的面经可能应酬一些小公司的面试,然而一旦进入大厂面试,每个知识点会问到更基本的问题上,常常须要从数学,或者更高的视角去剖析因果,并且会对于每个我的项目(毕设,论文,比赛)的每个点都会打破沙锅问到底,所以要具体筹备。对于LeetCode这个还是早筹备,要多刷,多总结,刷到400-500道应该就能应酬大多数口试和面试了。

April 9, 2021 · 1 min · jiezi

关于面试:常见的8种单例模式

简介:面试常考题之单例模式其实很简略,学过本文之后保障能够迅速且牢固的记住全副的8种单例模式。8种单例模式单例的思维: 只能有一个实例,以公有构造函数,或者外部类模式。 提供全局拜访 static 应用场景: 不便资源之间的相互通信。如线程池等。 防止因为资源操作时导致的性能或损耗等。如数据库连接池等。 动态常量(饿汉)public class Singleton { private final static Singleton SINGLETON = new Singleton(); private Singleton(){} public static Singleton getInstance(){ return SINGLETON; }}长处:书写简略,并且防止了线程同步问题。 毛病:在类装载的时候就实现实例化。如果从始至终从未应用过这个实例,则会造成内存的节约。 动态代码块 (饿汉)public class Singleton { private static Singleton singleton; static { singleton = new Singleton(); } private Singleton() {} public Singleton getInstance() { return singleton; }}优缺点同上。 非线程平安(懒汉)public class Singleton { private static Singleton singleton; private Singleton() {} public static Singleton getInstance() { if (singleton == null) { singleton = new Singleton(); } return singleton; }}长处:达到懒加载,防止内存节约。 毛病:线程不平安。 ...

April 8, 2021 · 2 min · jiezi

关于java:万字长文总结深度剖析那些Java开发中碰到的异常一次性全帮你处理掉

异样是什么在现实状态下,用户输出的数据的格局永远都是正确的,抉择关上的文件也肯定存在,并且永远不会呈现Bug。——《Java核心技术》 为了防止用户在程序运行的过程中呈现谬误等,Java应用了一种称为异样解决机制的谬误捕捉机制来进行解决异样的状况。 以下均为针对异样解决机制进行的形容与补充。 概述Java中异样的层次结构(次要)如下图。 由上图可知,Throwable 是Java语言中所有谬误和异样的类。只有作为此类(或其一个子类)的实例的对象由Java虚拟机抛出,或者能够由Java throw语句抛出。 相似地,只有这个类或其子类能够是catch子句中的参数类型。 补充:unchecked:未查看异样。checked:已查看异样。 什么时候会抛出异样?如果遇到了无奈解决的状况,那么java的办法能够抛出一个异样。那么什么状况下可能抛出异样呢? 1、用户输出谬误2、设施谬误3、物理限度4、程序呈现谬误。 ----- 例如,a[-1]=0会抛出ArrayIndexOutOfBoundsException的uncheck异样。5、调用一个抛出已查看的办法。----- 例如,。public FileInputStream(String name) throws FileNotFoundException6、程序运行中发现的谬误7、Java虚拟机和运行时库呈现的外部谬误抛出&捕捉异样?此章节次要是关键字throws、throw、和try-catch(finally)的作用及区别。 【补充】JVM对异样的解决办法 :打印异样的跟踪栈信息,并终止程序运行。 抛出异样(1)throws通常在办法首部的申明后抛出异样。 class MyAnimation{ public Image loadImage(String s) throws IOException{ ... }}throws抛出的是可能产生的异样。(并不一定会产生这些异样)当该办法被调用的时候必须捕捉,或者也能够再次抛出异样,最终由Java虚拟机解决。用来申明一个办法可能产生的所有异样(用,分隔), 不做任何解决而是将异样往上传,谁调用我我就抛给谁。 throw关键字通常用在办法体中,并且抛出一个异样对象。String readData(Scanner in)throws EOFException{ while(...){ if(!in.hasNext())//遇到EOFException异样 if(n<len){ throw new EOFException(); }... }}* throw则是抛出了异样,执行throw则肯定抛出了某种异样。* throw语句由办法体内的语句解决。* 只能抛出一个异样对象。* 有两种形式捕捉。要么本人捕捉异样 try-catch 代码块,要么是抛出一个异样(throws 异样)。## 小总结------由上述throws、throw比拟可知。(1)throw抛出一个异样对象时须要由函数的下层调用解决这个异样,此时,能够通过try-catch(finally)代码块,也能够通过throws进行抛出。(肯定要解决)(2)throws抛出一个可能的异样时能够不对此异样进行解决。编译时异样须要手动进行解决;而运行时异样jvm会打印异样的跟踪栈信息,并终止程序运行。所以个别运行时异样不须要手动捕捉,但编译时异样须要手动解决。# 捕捉异样(try-catch-finally)* 编写代码须要用到异样捕捉的时候。* java中即便不会产生异样的代码也是能够用try-catch进行捕捉。【注】在定义一个办法的时候,能够应用throws关键字申明,应用throws申明的办法示意此办法不解决异样,而是交给办法的调用处进行解决。【注】应用了throw,抛出了异样,必然要进行捕捉和解决,就是说,必须要进行try-catch解决或者throws抛出。应用1:try{//须要被检测的异样代码}catch(Exception e){ //异样解决,即解决异样的代码(打印异样信息并解决)}finally{ //肯定会被执行的代码(通常能够进行资源的革除工作)} 应用2:try{//须要被检测的异样代码}catch(Exception e){ //异样解决,即解决异样的代码(打印异样信息并解决)} 应用3:try{//须要被检测的异样代码}finally{ //肯定会被执行的代码(通常能够进行资源的革除工作)} try{//须要被检测的异样代码}catch(Exception e1){ //异样解决,即解决异样的代码(打印异样信息并解决)}catch(IOException e2){ //异样解决,即解决异样的代码(打印异样信息并解决)}//能够通过catch解决多个异样。 ---------举个栗子-------public class TestException { ...

April 8, 2021 · 3 min · jiezi

关于网络:硬核阿里面试就是不一样30张图带你搞懂路由器集线器交换机网桥光猫有啥区别

文章继续更新,能够微信搜一搜「golang小白成长记」第一工夫浏览,回复【教程】获golang收费视频教程。本文曾经收录在GitHub https://github.com/xiaobaiTech/golangFamily , 有大厂面试残缺考点和成长路线,欢送Star。故事就从一个车轱辘说起吧。先来看一个车轱辘。 辐条从车轱辘边缘,始终汇聚到 核心的轴,这个轴在英文里叫hub。 而咱们明天要讲到的集线器,英文里也叫hub。 都叫hub,多少有点关系,看下这面这个图大略能明确,其实两者有点像。 大略想表白的意思是,它是汇聚网线的核心,因而就叫集线器。 所以能够了解,大家常逛的 Github,Docker Hub, 还有Phub ,都是为了表白它们是某类资源的核心**了吧。 那么集线器是什么呢?那就要从电脑是怎么互联的这个话题说起。 小学的时候,有一种网吧,它其实是不能上外网的。也就是不能关上度娘,不能搜寻材料。 不能上网的网吧还能叫网吧? 能。尽管不能上外网,但网吧老板能够把很多台机子连起来,实现网吧内互联,造成一个局域网(Local Area Network,简称LAN)。 网吧内互联之后,就能够放上各种游戏,比方CS,实现网吧内对线。 这种网吧有种益处,没有那么多键盘侠。 毕竟你不晓得什么时候键着键着,对方就顺着网线找过去了。 对战间接从线上转移到线下了。 因而大家打游戏都很谐和,客气,局面非常感人就是了。 那么网吧内的电脑是怎么互联呢? 一根网线互联电脑从最简略的场景说起,假如网吧内只有两台电脑 轻易连根网线就能实现互联吗? 当然不是。 还记得网络分层吗? 数据如果要进行传输,会从A电脑通过这些网络分层把音讯组装好,再到B电脑层层解包。 网线,只是代替了下面的灰色局部,实现物理层上互联。 如果想要两台电脑互联胜利,还须要确保每一层所须要的步骤都要做到位,这样数据能力确保正确投送并返回。 咱们自顶向下,从细节开始说一下实现互联须要做什么。 应用层该层的网络性能由利用自身保障。 假如两台电脑是打算用游戏进行联网,那么该应用层的性能由游戏程序保障。 传输层绝大部分游戏用的传输层协定都是TCP,咱们能够看下TCP报头。 这外面咱们须要关注的是源和目标端口,这个能够定位到这台电脑上哪个过程在收发数据。 这两个端口信息个别是游戏外部曾经填好。 AB两台电脑,其中一台作为服务端启动,比方A,起了个服务器过程。 服务器会凋谢一个固定的端口,比方27015。这就是目标端口。 这时候A和B都能够搜寻到这个服务器。启动一个客户端过程,连贯进入A的服务器过程。 而源端口,则由A和B本人生成。 网络层上图除了端口,咱们还看到一个192.168.0.105,这个就是A的IP地址。 咱们看一下IP层的报文头。 这外面须要关注是源和目标IP地址。 如果两台电脑想通过一根网线进行音讯通信,那么他们须要在一个局域网内。 这意味着,他们的子网掩码须要统一。局域网内,假如子网掩码是 225.225.225.0,会认为 192.168.0.x 这些IP都属于一个局域网。所以当A的IP地址是192.168.0.105 时,那么B的IP地址能够配成192.168.0.106 。 对于IP这一块是啥,前面会细讲,大家如果没明确我说的是啥,不要急。 组装好网络层报头后,数据包传入到数据链路据层。 数据链路层以上解决了网络层的互联,而在数据链路层,数据包里须要拼接上MAC报头。先看下MAC报头长什么样子。 ...

April 7, 2021 · 2 min · jiezi

关于javascript:17K-star-仓库解决-90-的大厂基础面试题

前言笔者开源的前端进阶之道已有三年之久,至今也有 17k star,承蒙各位读者垂爱。在当下局部内容曾经稍微过期,因而决定提笔翻新内容。 翻新后的内容会全副汇合在「干爆前端」中,有趣味的读者能够返回查看。 浏览前重要提醒: 本文非百科全书,只专为面试温习筹备、查漏补缺、深刻某知识点的引子、理解相干面试题等筹备。 笔者始终都是崇尚学会面试题底下波及到的知识点,而不是刷一大堆面试题,后果变了个题型就不会的那种。所以本文和别的面经不一样,旨在提炼面试题底下的罕用知识点,而不是甩一大堆面试题给各位看官。 大家也能够在笔者的网站上浏览,体验更佳!数据类型JS 数据类型分为两大类,九个数据类型: 原始类型对象类型其中原始类型又分为七种类型,别离为: booleannumberstringundefinednullsymbolbigint对象类型分为两种,别离为: ObjectFunction其中 Object 中又蕴含了很多子类型,比方 Array、RegExp、Math、Map、Set 等等,也就不一一列出了。 原始类型存储在栈上,对象类型存储在堆上,然而它的援用地址还是存在栈上。 留神:以上论断前半句是不精确的,更精确的内容我会在闭包章节里阐明。 常见考点JS 类型有哪些?大数相加、相乘算法题,能够间接应用 bigint,当然再加上字符串的解决会更好。NaN 如何判断另外还有一类常见的题目是对于对象的批改,比如说往函数里传一个对象进去,函数外部批改参数。 function test(person) { person.age = 26 person = {} return person}const p1 = { age: 25}这类题目咱们只须要牢记以下几点: 对象存储的是援用地址,传来传去、赋值给他人那都是在传递值(存在栈上的那个内容),他人一旦批改对象里的属性,大家都被批改了。然而一旦对象被从新赋值了,只有不是原对象被从新赋值,那么就永远不会批改原对象。类型判断类型判断有好几种形式。 typeof原始类型中除了 null,其它类型都能够通过 typeof 来判断。 typeof null 的值为 object,这是因为一个长远的 Bug,没有细究的必要,理解即可。如果想具体判断 null 类型的话间接 xxx === null 即可。 对于对象类型来说,typeof 只能具体判断函数的类型为 function,其它均为 object。 instanceofinstanceof 外部通过原型链的形式来判断是否为构建函数的实例,罕用于判断具体的对象类型。 [] instanceof Array都说 instanceof 只能判断对象类型,其实这个说法是不精确的,咱们是能够通过 hake 的形式得以实现,尽管不会有人这样去玩吧。 ...

April 7, 2021 · 9 min · jiezi

关于javascript:树8道前端算法面试高频题解

树的相干名词科普根节点叶子节点父节点子节点兄弟节点高度深度层 A 是 根节点。C、D、F、G 是 叶子节点。A 是 B 和 E 的 父节点。B 和 E 是 A 的 子节点。B、E 之间是 兄弟节点。 高度、深度、层 如上图所示。 为了不便了解记忆,高度就是低头看,深度就是抬头看。 与 高度、深度 不同,层 类比盗梦空间里的楼,楼都是从 1 层开始计算,盗梦空间中的楼颠倒过去,从上往下。 开启刷题前端食堂的 LeetCode 题解仓库年初立了一个 flag,下面这个仓库在 2021 年写满 100 道前端面试高频题解,目前进度曾经实现了 50%。 如果你也筹备刷或者正在刷 LeetCode,无妨退出前端食堂,一起并肩作战,刷个畅快。 理解了树的基础知识后,马上开启咱们欢快的刷题之旅,我整顿了 8 道高频的 LeetCode 链表题及题解如下。 01 二叉树的中序遍历原题链接 中序遍历:先打印以后节点的左子树,再打印以后节点,最初打印以后节点的右子树 (CBDAFEG),如上图。 const inorderTraversal = function(root) { const result = []; function pushRoot(root) { if (root !== null) { if (root.left !== null) { pushRoot(root.left); } result.push(root.val); if (root.right !== null) { pushRoot(root.right); } } } pushRoot(root); return result;};工夫复杂度: O(n)空间复杂度: O(n)02 二叉树的前序遍历原题链接 ...

April 6, 2021 · 3 min · jiezi

关于javascript:链表6道前端算法面试高频题解

数组在上一篇的专栏,中咱们进行了回顾和刷题。 链表趁热打铁,咱们来比照数组来学习链表。 首先要明确的是,链表和数组的底层存储构造不同,数组要求存储在一块间断的内存中,而链表是通过指针将一组零散的内存块串联起来。 可见链表对内存的要求升高了,然而随机拜访的性能就没有数组好了,须要 O(n) 的工夫复杂度。 下图中展现了单链表及单链表的增加和删除操作,其实链表操作的实质就是解决链表结点之间的指针。 在删除链表结点的操作中,咱们只须要将须要删除结点的前驱结点的 next 指针,指向其后继即可。这样,以后被删除的结点就被抛弃在内存中,期待着它的是被垃圾回收器革除。 为了更便于你了解,链表能够类比现实生活中的火车,火车的每节车厢就是链表的一个个结点。车厢之间相互连接,能够增加或者移除掉。春运时,客运量比拟大,列车个别会加挂车厢。 链表的结点构造由数据域和指针域组成,在 JavaScript 中,以嵌套的对象模式实现。 { // 数据域 val: 1, // 指针域 next: { val:2, next: ... }} 名词科普头结点:头结点用来记录链表的基地址,是咱们遍历链表的终点尾结点:尾结点的指针不是指向下一个结点,而是指向一个空地址 NULL单链表:单链表是单向的,它的结点只有一个后继指针 next 指向前面的结点,尾结点指针指向空地址循环链表:循环链表的尾结点指针指向链表的头结点双向链表:双向链表反对两个方向,每个结点不止有一个后继指针 next 指向前面的结点,还有一个前驱指针 prev 指向后面的结点,双向链表会占用更多的内存,然而查找前驱节点的工夫复杂度是 O(1) ,比单链表的插入和删除操作都更高效双向循环链表循环链表 双向链表 双向循环链表 开启刷题前端食堂的 LeetCode 题解仓库年初立了一个 flag,下面这个仓库在 2021 年写满 100 道前端面试高频题解,目前进度曾经实现了 50%。 如果你也筹备刷或者正在刷 LeetCode,无妨退出前端食堂,一起并肩作战,刷个畅快。 理解了链表的基础知识后,马上开启咱们欢快的刷题之旅,我整顿了 6 道高频的 LeetCode 链表题及题解如下。 01 删除链表的倒数第 N 个结点原题链接 快慢指针先明确,删除倒数第 n 个结点,咱们须要找到倒数第 n+1 个结点,删除其后继结点即可。 增加 prev 哨兵结点,解决边界问题。借助快慢指针,快指针先走 n+1 步,而后快慢指针同步往前走,直到 fast.next 为 null。删除倒数第 n 个结点,返回 prev.next。const removeNthFromEnd = function(head, n) { let prev = new ListNode(0), fast = prev, slow = prev; prev.next = head; while (n--) { fast = fast.next; } while (fast && fast.next) { fast = fast.next; slow = slow.next; } slow.next = slow.next.next; return prev.next;}工夫复杂度:O(n)空间复杂度:O(1)02 合并两个有序链表原题链接 ...

April 6, 2021 · 3 min · jiezi

关于javascript:数组回炉重造6道前端算法面试高频题解

温故而知新数组是一种线性表数据结构,它用一组间断的内存空间,来存储一组具备雷同类型的数据。数组能够依据索引下标随机拜访(工夫复杂度为 O(1)),这个索引通常来说是数字,用来计算元素之间的存储地位的偏移量。 与其余编程语言不同,JavaScript 中的数组长度能够随时扭转,数组中的每个槽位能够贮存任意类型的数据,并且其数据在内存中也能够不间断。 上文提到,这个索引通常是数字,也就是说在 JavaScript 中,通过字符串也能够拜访对应的元素: const arr = [0, 1, 2]arr['1'] // 1其实,JavaScript 中的数组是一种比拟非凡的对象,因为在 JavaScript 中,对象的属性名必须是字符串,这些数字索引就被转化成了字符串类型。 创立数组// 1. 应用 Array 构造函数let webCanteen = new Array()// 初始为 20 的数组let webCanteen = new Array(20)// 传入要保留的元素let webCanteen = new Array('食堂老板', '店小二', '大厨')// 如果传入了非数值,则会创立一个只蕴含该特定值的数组let webCanteen = new Array('前端食堂')// 省略 new 操作符let webCanteen = Array(20)// 2. 应用数组字面量let webCanteen = ['食堂老板', '店小二', '大厨']let webCanteen = []ES6 新增了 2 个用于创立数组的静态方法:Array.of、Array.from。 Array.of 用于将一组参数转换为数组实例(不思考参数数量和类型),而 Array.from 用于将类数组构造和可遍历对象转换为数组实例(浅拷贝)。 ...

April 6, 2021 · 4 min · jiezi

关于JVM:开发两年JVM方法调用都玩不明白你离被炒鱿鱼不远了

前言办法调用并不等同于办法中的代码被执行,办法调用阶段惟一的工作就是确定被调用办法的版本(即调用哪一个办法),临时还未波及办法外部的具体运行过程。所有办法调用在Class文件外面存储的都只是符号援用,而不是办法在理论运行时内存布局中的入口地址(也就是间接援用)。这个个性给Java带来了更强的动静扩大能力,但也使得Java办法调用过程变得绝对简单,这些调用须要在类加载期间,甚至到运行期间能力确定指标办法的间接援用。 解析一所有办法调用的指标办法在Class文件外面都是一个常量池中的符号援用,在类加载的解析阶段,会将其中的一部分符号援用转化为间接援用,这种解析可能成立的前提是:办法在程序真正运行之前就有一个可确定的调用版本,并且这个办法的调用版本在运行期是不可扭转的(调用指标在程序代码写好,编译阶段就已确定下来)。这类办法的调用被称为解析。 二在java中合乎编译期可知,运行期不可变的办法,次要有静态方法和公有办法,前者与类型关联,后者在内部不可拜访,这两种办法各自的特点决定了它们都不可能通过继承或别的形式重写出其余版本,因而它们都适宜在类加载阶段进行解析。 三Java中的静态方法、公有办法、实例结构器、父类办法,再加上被final润饰的办法,这5种办法调用会在类加载的时候就能够把符号援用转换为间接援用。这些办法统称为“非虚办法” 。与之相同,其余的办法被称为“虚办法”。 四解析调用肯定是一个动态过程 ,在编译期就齐全确定,在类加载解析阶段就会把波及的符号援用全副转变为明确的间接援用,不用提早到运行期再去实现。而另一种次要的办法调用模式:分派(Dispatch)调用,可能是动态的也可能是动静的。依照分派根据的宗量数可分为单分派和多分派。这两类分派形式两两组合就形成了动态单分派,动态多分派,动静单分派,动静多分派。 分派分派调用将会解释多态性特色的一些最根本的体现。 动态分派/** * 动态分派 */public class StaticDispatch { static abstract class Human{ } static class Man extends Human{ } static class Woman extends Human{ } public void say(Human human){ System.out.println("Human say"); } public void say(Man man){ System.out.println("Man say"); } public void say(Woman woman){ System.out.println("Woman say"); } public static void main(String[] args) { Human man=new Man(); Human woman=new Woman(); StaticDispatch sd=new StaticDispatch(); sd.say(man); sd.say(woman); }}//Human say//Human say运行后果如上,要解决这个问题,首先须要定义两个要害概念: ...

April 6, 2021 · 2 min · jiezi

关于java:看完你要是还搞不懂HashMap我直接倒立喝水

前言HashMap是基于哈希表的Map接口的非同步实现。此实现提供所有可选的映射操作,并容许应用null值和null键。此类不保障映射的程序,特地是它不保障该程序恒久不变。 HashMap的数据结构在Java编程语言中,最根本的构造就是两种,一个是数组,另外一个是模仿指针(援用),所有的数据结构都能够用这两个根本构造来结构的,HashMap也不例外。HashMap实际上是一个“链表散列”的数据结构,即数组和链表的结合体。 文字描述永远要配上图能力更好的解说数据结构,HashMap的结构图如下。 从上图中能够看出,HashMap底层就是一个数组构造,数组中的每一项又是一个链表或者红黑树。当新建一个HashMap的时候,就会初始化一个数组。 上面先通过大略看下HashMap的核心成员。 public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable, Serializable { // 默认容量,默认为16,必须是2的幂 static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // 最大容量,值是2^30 static final int MAXIMUM_CAPACITY = 1 << 30 // 装载因子,默认的装载因子是0.75 static final float DEFAULT_LOAD_FACTOR = 0.75f; // 解决抵触的数据结构由链表转换成树的阈值,默认为8 static final int TREEIFY_THRESHOLD = 8; // 解决抵触的数据结构由树转换成链表的阈值,默认为6 static final int UNTREEIFY_THRESHOLD = 6; /* 当桶中的bin被树化时最小的hash表容量。 * 如果没有达到这个阈值,即hash表容量小于MIN_TREEIFY_CAPACITY,当桶中bin的数量太多时会执行resize扩容操作。 * 这个MIN_TREEIFY_CAPACITY的值至多是TREEIFY_THRESHOLD的4倍。 */ static final int MIN_TREEIFY_CAPACITY = 64; static class Node<K,V> implements Map.Entry<K,V> { //... } // 存储数据的数组 transient Node<K,V>[] table; // 遍历的容器 transient Set<Map.Entry<K,V>> entrySet; // Map中KEY-VALUE的数量 transient int size; /** * 结构性变更的次数。 * 结构性变更是指map的元素数量的变动,比方rehash操作。 * 用于HashMap疾速失败操作,比方在遍历时产生了结构性变更,就会抛出ConcurrentModificationException。 */ transient int modCount; // 下次resize的操作的size值。 int threshold; // 负载因子,resize后容量的大小会减少现有size * loadFactor final float loadFactor;}HashMap的初始化 public HashMap() { this.loadFactor = DEFAULT_LOAD_FACTOR; // 其余值都是默认值 }整顿了一下2021年的Java工程师经典面试真题,共485页大略850道含答案的面试题PDF,蕴含了Java、MyBatis、ZooKeeper、Dubbo、Elasticsearch、Memcached、Redis、MySQL、Spring、Spring Boot、Spring Cloud、RabbitMQ、Kafka、Linux 等简直所有技术栈,每个技术栈都有不少于50道经典面试真题,不敢说刷完包你进大厂,但有针对性的刷让你面对面试官的时候多几分底气还是没问题的。通过源码能够看出初始化时并没有初始化数组table,那只能在put操作时放入了,为什么要这样做?预计是防止初始化了HashMap之后不应用反而占用内存吧,哈哈哈。 ...

April 5, 2021 · 4 min · jiezi

关于java:2021年最新Java面试题及答案整理-基础篇一

1.什么是JavaJava是一门面向对象的高级编程语言,不仅排汇了C++语言的各种长处,比方继承了C++语言面向对象的技术外围。还摒弃了C++里难以了解的多继承、指针等概念,,同时也减少了垃圾回收机制,开释掉不被应用的内存空间,解决了治理内存空间的懊恼。 因而Java语言具备功能强大和简略易用两个特色。Java语言作为动态面向对象编程语言的代表,极好地实现了面向对象实践,容许程序员以优雅的思维形式进行简单的编程 。 2. Java的特点有哪些Java 语言是一种分布式的面向对象语言,具备面向对象、平台无关性、简略性、解释执行、多线程、安全性等很多特点,上面针对这些特点进行逐个介绍。 1. 面向对象 Java 是一种面向对象的语言,它对对象中的类、对象、继承、封装、多态、接口、包等均有很好的反对。为了简略起见,Java 只反对类之间的单继承,然而能够应用接口来实现多继承。应用 Java 语言开发程序,须要采纳面向对象的思维设计程序和编写代码。 2. 平台无关性 平台无关性的具体表现在于,Java 是“一次编写,到处运行(Write Once,Run any Where)”的语言,因而采纳 Java 语言编写的程序具备很好的可移植性,而保障这一点的正是 Java 的虚拟机机制。在引入虚拟机之后,Java 语言在不同的平台上运行不须要从新编译。 Java 语言应用 Java 虚拟机机制屏蔽了具体平台的相干信息,使得 Java 语言编译的程序只需生成虚拟机上的指标代码,就能够在多种平台上不加批改地运行。 3. 简略性 Java 语言的语法与 C 语言和 C++ 语言很相近,使得很多程序员学起来很容易。对 Java 来说,它舍弃了很多 C++ 中难以了解的个性,如操作符的重载和多继承等,而且 Java 语言不应用指针,退出了垃圾回收机制,解决了程序员须要治理内存的问题,使编程变得更加简略。 4. 解释执行 Java 程序在 Java 平台运行时会被编译成字节码文件,而后能够在有 Java 环境的操作系统上运行。在运行文件时,Java 的解释器对这些字节码进行解释执行,执行过程中须要退出的类在连贯阶段被载入到运行环境中。 5. 多线程 Java 语言是多线程的,这也是 Java 语言的一大个性,它必须由 Thread 类和它的子类来创立。Java 反对多个线程同时执行,并提供多线程之间的同步机制。任何一个线程都有本人的 run() 办法,要执行的办法就写在 run() 办法体内。 6. 分布式 Java 语言反对 Internet 利用的开发,在 Java 的根本利用编程接口中就有一个网络应用编程接口,它提供了网络应用编程的类库,包含 URL、URLConnection、Socket 等。Java 的 RIM 机制也是开发分布式应用的重要伎俩。 ...

April 5, 2021 · 5 min · jiezi

关于java:面试题-合并两个有序链表

问题: 合并两个有序链表链表L1: 1->2->4->9 链表L2: 3->5>6->10->13 合并后:1->2->3->4->5->6->9->10->13 1. 筹备数据结构 及测试数据Node节点 public class Node { public Integer value; public Node next; // 结构 public Node(){} public Node(Integer value) { this.value = value; } public Node(Integer value,Node next) { this.value = value; this.next = next; } // 打印链表 public void print() { Node n = this; System.out.println("------------------------------------------------"); while (n != null) { System.out.print(n.value); n = n.next; if (n != null) { System.out.print("-->"); } else { System.out.println(); } } System.out.println("------------------------------------------------"); }}筹备测试数据 ...

April 4, 2021 · 2 min · jiezi

关于java:面试题-一个单调递增的数组-随机拿出一个数-你怎么找到这个数

一个枯燥递增的数组 被人随机拿出一个数 你怎么找到这个数就以 1,2,3,4,5,6,7,8,9... 100为例吧 小强把88这个数拿了进去 我怎么能很快找到? 1. 循环遍历 实现认为的思维,我是想到了循环遍历,比拟后一个数字是不是比前一个数字大1 不是的话 那就是少了以后比拟值的后一个值 。 貌似可能解决问题,然而如果随机剔除两个呢? 那就废了 须要无休止的加if else /** * @author 木子的昼夜 */public class ConcurrnetTest { public static void main(String[] args){ ConcurrnetTest test = new ConcurrnetTest(); Integer[] arr = test.get(); System.out.println(test.findByFor(arr)); // 或者是间接比拟下标 System.out.println(test.findByFor02(arr)); } // 遍历找数 private Integer findByFor(Integer[] arr) { Integer res = null; // 头尾解决 如果剔除的是1或者100 if(arr[0] != 1) { return 1; } if (arr[arr.length-1] != 100) { return 100; } for (int i = 0; i < arr.length-1; i++) { // 如果后一个不等于前一个+1 那就是被剔除了 if (arr[i]+1 != arr[i+1]) { res = arr[i]+1; break; } } return res; } // 遍历找数 private Integer findByFor02(Integer[] arr) { Integer res = null; // 100如果被剔除 检测不到 须要非凡解决 if (arr[arr.length-1] != 100) { return 100; } for (int i = 0; i < arr.length; i++) { // 下标+1 不等于对应下表元素 就是有问题 // 0:1 1:2 2:3 .... if (arr[i] != (i+1)) { res = i+1; break; } } return res; } /** * 获取 1 到 100 剔除88 * @return */ public Integer[] get(){ List<Integer> list = new ArrayList<>(); for (int i = 1; i <= 100; i++) { if (i != 88) { list.add(i); } } return list.toArray(new Integer[0]); }}2. BitSet 实现能够想一下 1到100 是有序的枯燥递增的 咱们能够这样示意吗 ? ...

April 4, 2021 · 3 min · jiezi

关于java:面试题-String-23578-转int类型

给一个String str="123"; 转成int类型数据面试的时候问这个问题,可能考查的不仅仅是parseInt()、valueOf()、intValue等办法 这个面试官想要的答案我也没不明确 这里写几种转换形式(转换时不思考字符串非数字) 一、parseIntpublic int String2Int01(String str){ return Integer.parseInt(str);}二、valueOf intValue public int String2Int02(String str){ return Integer.valueOf(str).intValue(); }三、 new Integer(String str)public int String2Int03(String str){ return new Integer(str).intValue();}// 能够看源码 用的还是parseInt() public Integer(String s) throws NumberFormatException { this.value = parseInt(s, 10); }四、转数组 再位数求和public int String2Int04(String str){ char[] chars = str.toCharArray(); int res = 0; int basic= 1;// 基数1 每次累计*10 // 比方 123 合成开就是 3*1 + 2*10 + 1*100 for (int i = chars.length-1; i >= 0; i--) { // - '0' 是把char转换为0-9s res= res + (chars[i]-'0')*basic; basic = basic*10; } return res;}有问题能够留言哦,或者关注公众号(回复快): ...

April 4, 2021 · 1 min · jiezi

关于面试:话说-ReadWriteLock-第二篇

ReadWriteLock 第二篇提醒:看了 ReadWriteLock 第一篇 能力看这一篇 ,对于ReadWriteLock 知识点明确上一篇讲的内容应酬个别面试没什么问题了。 1. hasQueuedPredecessors上一篇在获取读共享锁流程中有一个判断 , if (!readerShouldBlock() && 如果readerShouldBlock返回false 那就失常获取锁,如果返回true那么就完结获取锁 这里说一下偏心锁这个办法的内容: // ReentrantReadWriteLock.FairSync#readerShouldBlockfinal boolean readerShouldBlock() { return hasQueuedPredecessors();}// 判断// 如果有线程在以后线程获取锁之前排队 也就是队列曾经有元素了 但不是本人 返回true (有人排队)// 其余状况 返回false(没人排队)public final boolean hasQueuedPredecessors() { Node t = tail; // 队列尾指针 Node h = head;// 队列头指针 Node s;// 长期变量 return h != t && // 比拟head tail 如果队列为空 h != t 为 false ((s = h.next) == null || // head的next为空 证实队列为空 s.thread != Thread.currentThread() // 如果head有next 也就是第一个期待线程 判断是不是本人 如果是本人 那嘿嘿 ); }2. 获取锁后一系列的设置 都有什么可说的if (r == 0) { firstReader = current; firstReaderHoldCount = 1;} else if (firstReader == current) { firstReaderHoldCount++;} else { HoldCounter rh = cachedHoldCounter; if (rh == null || rh.tid != getThreadId(current)) cachedHoldCounter = rh = readHolds.get(); else if (rh.count == 0) readHolds.set(rh); rh.count++;}firstReader:记录着第一个获取读锁的线程 ...

April 4, 2021 · 3 min · jiezi

关于java:话说-ReadWriteLock

读写锁:读读不互斥,读写互斥,写写互斥; 也就是说: A读的时候B能够读, A读的时候B不能够写, A写的时候B不能够写 这里举个例子:不同线程对变量x 读 写 public class ReadWriteLockTest { ReadWriteLock rw = new ReentrantReadWriteLock(); public int x = 0; public static void main(String[] args) { } // A读 public void A(){ try{ // 读锁 rw.readLock().lock(); System.out.println("A开始读: x="+x); sleep(5); System.out.println("A读完了: x="+x); } catch (Exception e) { e.printStackTrace(); }finally { rw.readLock().unlock(); } } // B读 public void B(){ try{ // 读锁 rw.readLock().lock(); System.out.println("B开始读: x="+x); sleep(5); System.out.println("B读完了: x="+x); } catch (Exception e) { e.printStackTrace(); }finally { rw.readLock().unlock(); } } // C写 public void C(){ try{ // 写锁 rw.writeLock().lock(); System.out.println("C开始写: x="+x); sleep(5); x = 10; System.out.println("C写完了: x="+x); } catch (Exception e) { e.printStackTrace(); }finally { rw.writeLock().unlock(); } } // D写 public void D(){ try{ // 写锁 rw.writeLock().lock(); System.out.println("D开始写: x="+x); sleep(5); x = 100; System.out.println("D写完了: x="+x); } catch (Exception e) { e.printStackTrace(); }finally { rw.writeLock().unlock(); } } // E 同一线程 读写不互斥 public void E(){ try{ // 写锁 rw.writeLock().lock(); System.out.println("E开始写: x="+x); x = 99; rw.readLock().lock(); System.out.println("E没写完呢 E开始读:x="+x); x = 100; System.out.println("E写完了: x="+x); } catch (Exception e) { e.printStackTrace(); }finally { rw.writeLock().unlock(); } } // 睡眠指定秒 public void sleep(int s){ try { Thread.sleep(s*1000); } catch (Exception e){ e.printStackTrace(); } }}1. A 读 B可读 读读共享 public static void main(String[] args) { ReadWriteLockTest test = new ReadWriteLockTest(); new Thread(test::A).start(); new Thread(test::B).start(); }输入后果:A开始读: x=0B开始读: x=0B读完了: x=0A读完了: x=0 2. A 读 C 不可写 读写互斥public static void main(String[] args) { ReadWriteLockTest test = new ReadWriteLockTest(); new Thread(test::A).start(); new Thread(test::C).start();}输入后果:A开始读: x=0A读完了: x=0C开始写: x=0C写完了: x=103. B 写 A 不可读 读写互斥public static void main(String[] args) { ReadWriteLockTest test = new ReadWriteLockTest(); new Thread(test::C).start(); new Thread(test::A).start();}输入后果:C开始写: x=0C写完了: x=10A开始读: x=10A读完了: x=104. C写 D不可写 写写互斥 public static void main(String[] args) { ReadWriteLockTest test = new ReadWriteLockTest(); new Thread(test::C).start(); new Thread(test::D).start(); }输入后果:C开始写: x=0C写完了: x=10D开始写: x=10D写完了: x=1005. 线程本人读写不互斥public static void main(String[] args) { ReadWriteLockTest test = new ReadWriteLockTest(); new Thread(test::E).start();}6. 总结读读共享,读写互斥,写写互斥 ...

April 4, 2021 · 4 min · jiezi

关于java:话说-Lock-condition

之前文章有写wait/notify/notifyAll Condition作用相似,可能会多一些性能 比方:反对不响应中断、可指定工夫点完结期待、可多条件(new 多个Condition) Condition的await 与wait相似 必须在获取锁的时候能力await 一、 应用/** * @author 木子的昼夜 */public class ConditionTest { public static Lock lock = new ReentrantLock(); // public static Condition cd01 = lock.newCondition(); public static void main(String[] args) throws InterruptedException { ConditionTest test = new ConditionTest(); new Thread(test::say01).start(); Thread.sleep(5000); new Thread(test::say02).start(); } /** * 说:我饿了 */ public void say01(){ try{ lock.lock(); System.out.println("我饿了"); cd01.await(); System.out.println("吃饱了"); } catch (Exception e){ e.printStackTrace(); } finally { lock.unlock(); } } /** * 说:饭好了 */ public void say02(){ try{ lock.lock(); cd01.signal(); System.out.println("开饭了"); } catch (Exception e){ e.printStackTrace(); } finally { lock.unlock(); } }}输入后果:我饿了开饭了吃饱了二、 不响应中断看一下say01 say02 可中断 say03 不可中断 ...

April 4, 2021 · 3 min · jiezi

关于java:话说-ReentrantLock源码

之前文章写AQS的时候有说过偏心锁的代码 这里以非偏心锁来看一下 面试的时候设计模式:模板办法 在AQS里体现的酣畅淋漓 ,你要是从设计模式扯到这里,而后你正好又看过AQS在ReentrantLock中的实现,那你就能够让面试官眼前一亮 Lock lock = new ReentrantLock(false);lock.lock();/** * 申请锁 * * <p>Acquires the lock if it is not held by another thread and returns * immediately, setting the lock hold count to one. * 如果没有其余线程持有这个锁,就马上返回,并设置锁持有数为1 * <p>If the current thread already holds the lock then the hold * count is incremented by one and the method returns immediately. * 如果以后线程持有锁,就吧持有数量+1(可重入) 而后立刻返回 * <p>If the lock is held by another thread then the * current thread becomes disabled for thread scheduling * purposes and lies dormant until the lock has been acquired, * at which time the lock hold count is set to one. * 如果锁被其余线程持有,以后线程对于调度就不可用,而后睡着, 直到获取锁,而后把锁持有数改为1 */// ReentrantLock.classpublic void lock() { sync.lock();}// NonfairSync.classfinal void lock() { // 先抢一下(上一篇说的 :小强二话不说先看看能不能跟老板选饼) if (compareAndSetState(0, 1)) setExclusiveOwnerThread(Thread.currentThread()); else // 如果没有抢到 再去申请 acquire(1);}// AbstractQueuedSynchronizer.class public final void acquire(int arg) { // 这个tryAcquire会再抢一次(小强还抱着插队的空想) if (!tryAcquire(arg) && // 抢不到 就后边排队吧 acquireQueued(addWaiter(Node.EXCLUSIVE), arg)) selfInterrupt(); } // ReentrantLock.class protected final boolean tryAcquire(int acquires) { return nonfairTryAcquire(acquires); }// ReentrantLock.class // 这里须要理解AQS 我其余文章有写 能够去看final boolean nonfairTryAcquire(int acquires) { // 获取以后线程 final Thread current = Thread.currentThread(); // 获取state标记位 int c = getState(); if (c == 0) { // 如果没有线程持有尝试获取锁(小强看见没人跟老板谈话 间接插队买饼) if (compareAndSetState(0, acquires)) { setExclusiveOwnerThread(current); return true; } } // 如果有线程持有 看一下是不是本人 else if (current == getExclusiveOwnerThread()) { // 如果是本人就批改持有数 int nextc = c + acquires; // 超过最大锁数 if (nextc < 0) // overflow throw new Error("Maximum lock count exceeded"); setState(nextc); return true; } return false;} ...

April 4, 2021 · 2 min · jiezi