文末
技术是没有终点的,也是学不完的,最重要的是活着、不秃。
零基础入门的时候看书还是看视频,我觉得成年人,何必做选择题呢,两个都要。喜欢看书就看书,喜欢看视频就看视频。
最重要的是在自学的过程中,一定不要眼高手低,要实战,把学到的技术投入到项目当中,解决问题,之后进一步锤炼自己的技术。
自学最怕的就是缺乏自驱力,一定要自律,杜绝“三天打鱼两天晒网”,到最后白忙活一场。
高度自律的同时,要保持耐心,不抛弃不放弃,切勿自怨自艾,每天给自己一点点鼓励,学习的劲头就会很足,不容易犯困。
技术学到手后,找工作的时候一定要好好准备一份简历,不要无头苍蝇一样去海投简历,容易“竹篮打水一场空”。好好的准备一下简历,毕竟是找工作的敲门砖。
拿到面试邀请后,在面试的过程中一定要大大方方,尽力把自己学到的知识舒适地表达出来,不要因为是自学就不够自信,给面试官一个好的印象,面试成功的几率就会大很多,加油吧,骚年!
开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】
5
9
提示
–
【数据说明】
对于 30%的数据,0 < n < 1,00,0 < m < 10,00;
对于 60%的数据,0 < n < 1,000,0 < m < 1000;
对于 100%的数据,0 < n < 200,000,0 < m < 50000,0 <=ai<=2^31-1。
分析:线段树问题(第一个线段树。。。各种bug频出。。。泪奔。。。无语)
应该算是线段树的单点更新吧,线段树里的水题
把left,right改成begin,end 然后c++运行超出空间。。。改过来竟然就好了,郁闷,
#include
#include
#include
using namespace std;
int segtree[800005];
void build(int left,int right,int node)
{
if(left == right)
{
scanf(“%d”,&segtree[node]); //边读边建立线段树
}
else
{
int m=(left+right)>>1;
build(left,m,node<<1);
build(m+1,right,node<<1|1); // | 按位取或
segtree[node]=max(segtree[node<<1],segtree[node<<1|1]); //建立最大值的线段树
}
}
void update(int p,int change,int left,int right,int node)
{
if(left==right)
{
segtree[node]=change;
}
else
{
int m=(left+right)>>1;
if(p<=m)update(p,change,left,m,node<<1);
else update(p,change,m+1,right,node<<1|1);
segtree[node]=max(segtree[node<<1],segtree[node<<1|1]); //回溯修改线段树
}
}
int query(int x,int y,int left,int right,int node)
{
if(x<=left && right<=y)
{
return segtree[node];
}
else
{
int sum=0,m=(left+right)>>1;
if(x<=m)sum=max(sum,query(x,y,left,m,node<<1));
if(y>m)sum=max(sum,query(x,y,m+1,right,node<<1|1));
return sum;
}
}
int main()
{
int n,m;
总结
面试前要精心做好准备,简历上写的知识点和原理都需要准备好,项目上多想想难点和亮点,这是面试时能和别人不一样的地方。
还有就是表现出自己的谦虚好学,以及对于未来持续进阶的规划,企业招人更偏爱稳定的人。
万事开头难,但是程序员这一条路坚持几年后发展空间还是非常大的,一切重在坚持。
开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】
前端面试题汇总
JavaScript
前端资料汇总