const{createApp}=Vue const{createVuetify,useGoTo,useDisplay}=Vuetify var data={alert:{show:false,color:'success',text:'',timeout:0,},theme:{dark:false,},nav:{showDrawer:false,showTOC:true,tocPanel:0,tab:'account',post:{discussionId:4752,currentPage:1,targetPage:1,total:68,anchor:0,goToOptions:{container:null,duration:0,easing:'easeInOutCubic',offset:-100,},worker:null,task:[],active:[],apiLock:[],originLike:new Map([]),},related:{block:1,}},search:{width:80,text:null,loading:false,},tags:[{id:28,url:'/t/3d104b0f6a045c7568772c310313',name:'Java',color:'#FFA726',icon:'mdi-language-java',},],posts:[{id:53769,num:0,uid:11062,content:'\u003Cp\u003E深圳大部分的 J**a 岗位,中小公司的要求全都是要求有行业经验的优先。比如跨境电商公司,要求必须有跨境电商项目经验;物流公司,必须有物流项目经验;甚至完全不看学历,只要做过类似项目就能面试,难道现在都不看技术了吗\u003C/p\u003E',ipRegion:'',updatedByUid:0,createdAt:'2025-03-16 15:10:19',updatedAt:'2025-03-19 14:15:53',mentionNum:0,mentionedBy:[],mentionUsers:[],likeUsers:[],},{id:53770,num:1,uid:599,content:'进入存量期了,发展了那么多年,已经有足够的行业背景人才可供选择了',ipRegion:'',updatedByUid:0,createdAt:'2025-03-16 15:27:45',updatedAt:'2025-03-19 14:15:53',mentionNum:0,mentionedBy:[],mentionUsers:[],likeUsers:[],},{id:53771,num:2,uid:8744,content:'一直都是的,之前有类似经验或者竞对公司的人,面试只是走过场。可能之前岗位多,所以没有行业经验的人,公司也愿意要,可以培养的起,等你成长。但是现在岗位只有那么点,公司都面临压力,那么就只要行业经验的人,来了就直接能干活,对公司来说最划算的。至于技术,现在都是实用主义优先了,你做过这个类似 APP 有经验,你扭螺丝的技术肯定有,造火箭就不用了。业务 技术现在可能是 8 2 开了,除了那些纯技术公司',ipRegion:'',updatedByUid:0,createdAt:'2025-03-16 15:33:34',updatedAt:'2025-03-19 14:15:53',mentionNum:0,mentionedBy:[],mentionUsers:[],likeUsers:[],},{id:53772,num:3,uid:11062,content:'如果是初创的公司,或者新业务要从零开发,这个我能理解,但是如果不是的话,有相关的行业经验并不能通用,毕竟每个公司的技术架构和业务不一样,而且有产品经理的存在,就更不需要了解很深的业务了,最后也是按照产品的原型需求去开发的',ipRegion:'',updatedByUid:0,createdAt:'2025-03-16 15:46:19',updatedAt:'2025-03-19 14:15:53',mentionNum:0,mentionedBy:[],mentionUsers:[],likeUsers:[],},{id:53773,num:4,uid:58,content:'技术达标的有 100 个,业务经验匹配的也有 100 个,两项同时满足的有 20 个,招聘人数只有 1 个。\u003Cbr\u003E\u003Cbr\u003E同等条件,为什么要招一个需要培养的人?',ipRegion:'',updatedByUid:0,createdAt:'2025-03-16 15:50:16',updatedAt:'2025-03-19 14:15:53',mentionNum:0,mentionedBy:[],mentionUsers:[],likeUsers:[],},{id:53774,num:5,uid:5056,content:'当你招人的时候你也会明白,技术够用就行,了解业务的人才能快速融入整个工作流程,而教这个是很麻烦的,很可能并没有完整的流程让一个新人了解公司业务。',ipRegion:'',updatedByUid:0,createdAt:'2025-03-16 15:51:22',updatedAt:'2025-03-19 14:15:53',mentionNum:0,mentionedBy:[],mentionUsers:[],likeUsers:[],},{id:53775,num:6,uid:8744,content:'给你个场景你体会下:产品经理说要做个跨境的,然后评审需求。A 开发按产品的原型需求去开发,B 开发说我之前在蚂蚁做跨境的时候开始也这么设计的,你那块这块后面会有问题,你最好先考虑下我们再做。\u003Cbr\u003E你是老板你只能招一个开发,同时他们工资差不多,你会要谁?成熟的产品肯定是不断迭代优化的,但是如果有成熟的开发,一开始考虑到,后面重构优化的成本会小很多。不止是技术,各个职位有相关的行业经验都是优先考虑的。也反应出,现在对候选人的要求越来越高了。但是如果有行业经验,技术肯定是够用的(扭螺丝够用)。如果只有技术,那就不一定了。',ipRegion:'',updatedByUid:0,createdAt:'2025-03-16 16:14:24',updatedAt:'2025-03-19 14:15:53',mentionNum:0,mentionedBy:[],mentionUsers:[],likeUsers:[],},{id:53776,num:7,uid:1163,content:'说明基本个人卡死在某个行业上了,容错太低了',ipRegion:'',updatedByUid:0,createdAt:'2025-03-16 16:17:05',updatedAt:'2025-03-19 14:15:54',mentionNum:0,mentionedBy:[],mentionUsers:[],likeUsers:[],},{id:53777,num:8,uid:11063,content:'实际上我觉得都是 spring 那一套的话,业务是什么样的其实没影响,个人感受。',ipRegion:'',updatedByUid:0,createdAt:'2025-03-16 16:54:16',updatedAt:'2025-03-19 14:15:54',mentionNum:0,mentionedBy:[],mentionUsers:[],likeUsers:[],},{id:53778,num:9,uid:7375,content:'确实,所以我失业了,我还是用 cpp 的,更难找',ipRegion:'',updatedByUid:0,createdAt:'2025-03-16 17:45:35',updatedAt:'2025-03-19 14:15:54',mentionNum:0,mentionedBy:[],mentionUsers:[],likeUsers:[],},{id:53779,num:10,uid:13,content:'本质是供大于求,现在岗位太少了,自然要求就多了。\u003Cbr\u003E几年前我感觉大多也就是看学历和技术栈,现在基本都看年龄和行业经验,甚至行业经验划分的非常细。',ipRegion:'',updatedByUid:0,createdAt:'2025-03-16 17:54:36',updatedAt:'2025-03-19 14:15:54',mentionNum:0,mentionedBy:[],mentionUsers:[],likeUsers:[],},{id:53780,num:11,uid:3089,content:'还是人矿太多了 挖不完 要啥有啥',ipRegion:'',updatedByUid:0,createdAt:'2025-03-16 18:27:24',updatedAt:'2025-03-19 14:15:54',mentionNum:0,mentionedBy:[],mentionUsers:[],likeUsers:[],},{id:53781,num:12,uid:2703,content:'我做招聘,就是要看业务背景。\u003Cbr\u003E技术是顺便会考核的,但是你什么水平基本问一下你干什么就知道了。\u003Cbr\u003E招人就是买你时间产生收益,培训你是额外成本,为什么要承担这个成本。\u003Cbr\u003E最后,招到合适的人也很难。',ipRegion:'',updatedByUid:0,createdAt:'2025-03-16 18:29:48',updatedAt:'2025-03-19 14:15:54',mentionNum:0,mentionedBy:[27,],mentionUsers:[],likeUsers:[],},{id:53782,num:13,uid:11062,content:'你说的这种情况是招的架构师,技术总监,J**a 组长之类的岗位才会有这种要求,不能要求一个中高级开发设计整个架构,就算给我设计,也要看架构师脸色吧。一般中高级开发说白了就是增删改查这种工作。。。',ipRegion:'',updatedByUid:0,createdAt:'2025-03-16 19:52:24',updatedAt:'2025-03-19 14:15:54',mentionNum:0,mentionedBy:[15,],mentionUsers:[],likeUsers:[],},{id:53783,num:14,uid:11062,content:'招聘只看眼前的这点成本吗,比如一个人没啥技术水平,在一个相关行业的公司划水了几年,做的也是边缘业务,来到你们这就成香饽饽了?技术好的程序员学习能力很强,业务啥的也就 1 个月就完全熟悉了吧',ipRegion:'',updatedByUid:0,createdAt:'2025-03-16 20:02:34',updatedAt:'2025-03-19 14:15:54',mentionNum:0,mentionedBy:[30,],mentionUsers:[],likeUsers:[],},{id:53784,num:15,uid:8744,content:'#13 我不知道深圳那边,我没去过,但是我待过杭州和上海,现在的程序员危机主要在低中级,AI CRUD 很快的,但是架构和业务理解 AI 还是很难。我不知道 op 是多少年经验。如果中高级开发还是增删改查,现在是很难找到合适的工作,就像一个 30 的技术 P6 真的很难找到合适的公司,你的对手在变多,公司在变少',ipRegion:'',updatedByUid:0,createdAt:'2025-03-16 20:37:05',updatedAt:'2025-03-19 14:15:54',mentionNum:13,mentionedBy:[],mentionUsers:[],likeUsers:[],},{id:53785,num:16,uid:58,content:'候选人分 4 种\u003Cbr\u003E\u003Cbr\u003EA. 不懂业务,技术差\u003Cbr\u003EB. 不懂业务,技术好\u003Cbr\u003EC. 懂业务,技术差\u003Cbr\u003ED. 懂业务,技术好\u003Cbr\u003E\u003Cbr\u003E你以为是 B 和 C 在 PK ,但实际上 D 已经供大于求了。技术对标 P8 ,曾经年薪 100 多万甚至 200 万的资深技术,待业的也不是没有。',ipRegion:'',updatedByUid:0,createdAt:'2025-03-16 20:55:27',updatedAt:'2025-03-19 14:15:54',mentionNum:0,mentionedBy:[],mentionUsers:[],likeUsers:[],},{id:53786,num:17,uid:7966,content:'让你设计一个银行记账系统、保险公司处理系统、跨境支付系统、信用卡交易处理,说到底都是增删改查,但没有相关行业经验的话,会踩很多坑,前期的设计不合理后期用户量起来根本没法修正。',ipRegion:'',updatedByUid:0,createdAt:'2025-03-16 22:34:36',updatedAt:'2025-03-19 14:15:54',mentionNum:0,mentionedBy:[],mentionUsers:[],likeUsers:[],},{id:53787,num:18,uid:11064,content:'深有感触 技术达标的人太多了 现在更多需要的是有行业经验的人',ipRegion:'',updatedByUid:0,createdAt:'2025-03-16 22:36:18',updatedAt:'2025-03-19 14:15:54',mentionNum:0,mentionedBy:[],mentionUsers:[],likeUsers:[],},{id:53788,num:19,uid:4676,content:'做银行项目的,我们招聘的比重业务就是要大于技术,没办法',ipRegion:'',updatedByUid:0,createdAt:'2025-03-16 22:44:18',updatedAt:'2025-03-19 14:15:54',mentionNum:0,mentionedBy:[],mentionUsers:[],likeUsers:[],},],usersMap:new Map([[7966,{uid:7966,url:'/u/161162016a045c70696c506f1e2a1105',avatar:'/a/161162016a045c70696c506f1e2a1105',username:'git00ll🤖',}],[599,{uid:599,url:'/u/3f38425b6a045c7765635f6f12252176',avatar:'/a/3f38425b6a045c7765635f6f12252176',username:'iOCZS🤖',}],[2703,{uid:2703,url:'/u/2b1153296a045c75676a556f07051a00',avatar:'/a/2b1153296a045c75676a556f07051a00',username:'lixintcwdsg🤖',}],[4676,{uid:4676,url:'/u/37234a396a045c73666d506f1d586701',avatar:'/a/37234a396a045c73666d506f1d586701',username:'badreamm🤖',}],[8744,{uid:8744,url:'/u/6c317e086a045c7f676e526f06233e29',avatar:'/a/6c317e086a045c7f676e526f06233e29',username:'lwg🤖',}],[11064,{uid:11064,url:'/u/1522593c6a045d76606c526f251b192e',avatar:'/a/1522593c6a045d76606c526f251b192e',username:'akiradunncoco🤖',}],[11062,{uid:11062,url:'/u/332c433b6a045d76606c546f055a0b11',avatar:'/a/332c433b6a045d76606c546f055a0b11',username:'qmzhixu🤖',}],[58,{uid:58,url:'/u/6c314b256a045c77606f5e6f032a181e',avatar:'/a/6c314b256a045c77606f5e6f032a181e',username:'sagaxu🤖',}],[5056,{uid:5056,url:'/u/390e5e396a045c72606f506f100f090d',avatar:'/a/390e5e396a045c72606f506f100f090d',username:'Vegetable🤖',}],[585,{uid:585,url:'/u/021c7f256a045c776562536f300c317f',avatar:'/a/021c7f256a045c776562536f300c317f',username:'Meld🤖',}],[1163,{uid:1163,url:'/u/6b7159076a045c76616c556f222c1c06',avatar:'/a/6b7159076a045c76616c556f222c1c06',username:'yifangtongxing28🤖',}],[7375,{uid:7375,url:'/u/0970672e6a045c70636d536f01020622',avatar:'/a/0970672e6a045c70636d536f01020622',username:'FIllerFooo🤖',}],[11063,{uid:11063,url:'/u/103a591f6a045d76606c556f02311d28',avatar:'/a/103a591f6a045d76606c556f02311d28',username:'silencil🤖',}],[3089,{uid:3089,url:'/u/311a48356a045c7460625f6f1233193e',avatar:'/a/311a48356a045c7460625f6f1233193e',username:'leegradyllljjjj🤖',}],[13,{uid:13,url:'/u/1b0604176a045c77606b556f0750171d',avatar:'/a/1b0604176a045c77606b556f0750171d',username:'gransh🤖',}],[10505,{uid:10505,url:'/u/287f5f2f6a045d77656a536f022d3528',avatar:'/a/287f5f2f6a045d77656a536f022d3528',username:'Mrun🤖',}],]),related:[{title:'有在 vscode 上写 Java 的么?一个非常简单的扩展:可以一键复制 arthas 的 watch 命令。',url:'/d/0b26510b6a045c77606a567a455e606a5f011624',},{title:'「郑州」招聘高级 Java 15K 上下,看个人水平',url:'/d/6a2d46346a045c77606a56754e58616a0e216467',},{title:'技术栈选择: Java 还是 Python',url:'/d/2878683b6a045c77606a5675475d616a083a1603',},{title:'Java 开发,接下来的路咋走啊?',url:'/d/1f78462e6a045c77606a5675475b656a1c37230a',},{title:'windsurf 和 cursor 用来写 kotlin 后端还是不太行',url:'/d/2b780b5e6a045c77606a5674425a656a2d103a64',},{title:'Java 后端开发 , macbookAir m4 16+256G 入门款值得入手不,pdd6199 元,(之前那个 MacBookpro 2018 32G+512G 电脑坏了修起来要 4k 以上,没什么维修价值了)另外问一下够用不',url:'/d/200d00356a045c77606a5674435b6b6a0d276310',},{title:'C++ 开发不想 996,如何跳槽转到 Java ?',url:'/d/09207c086a045c77606a56744358646a1f292613',},{title:'Java 和 go 都会,以后找工作偏向哪个方面好呢',url:'/d/000b7b1b6a045c77606a5674445e656a1977262a',},{title:'作为一个传统开发者,如何使用 ai 或者机器学习实现一些简单事情',url:'/d/34015f186a045c77606a5674445e626a25016611',},{title:'Java 生态下想搞大流量下的 ws,是不是暂时只能 netty?',url:'/d/6c7f0b1a6a045c77606a56774251626a5b761219',},{title:'为什么很多人喷 Java 开发者离了 spring 框架就不会写代码了',url:'/d/2c795a5c6a045c77606a56764051666a58303c13',},{title:'小白发问,都说 C++开发效率比 Java 低,但 C++的 hello world 也没多几行代码啊',url:'/d/6f7157036a045c77606a5676425b616a342a1235',},{title:'作为 Java 狗的我,学习 rust 的时候为啥总念着 go 的好呢?',url:'/d/6f2a02176a045c77606a5671435d636a2f121465',},{title:'原 Java 刚学习 go, 自己在写项目, 针对 go 日志方面的疑惑',url:'/d/6b2c02596a045c77606a56714359626a0f361626',},{title:'Java ReentrantLock 冗余设计?',url:'/d/301a573d6a045c77606a56734759666a5c170733',},{title:'主力开发工具不是 VS 的比如 Java ,如何使用大模型辅助开发呢?转到 VS 或者 IDEA 有什么可以使用大模型 API 的插件?',url:'/d/332c065d6a045c77606a56734759676a2a021e61',},],} const App={setup(){const goTo=useGoTo() const{mdAndUp}=useDisplay() return{goTo,mdAndUp}},data(){return data;},mounted(){const themeDark=localStorage.getItem("themeDark") if(themeDark!==null){this.theme.dark=JSON.parse(themeDark)} if(this.nav.post.total>(this.nav.post.currentPage-1)*100+20){let moreLen=100 if(this.nav.post.total({id:null,num:(this.nav.post.currentPage-1)*100+v,uid:null,content:null,ipRegion:null,updatedByUid:null,createdAt:null,updatedAt:null,mentionNum:null,mentionedBy:null,mentionUsers:null,likeUsers:null,})) this.posts.push(...morePosts.slice(20))} this.workerStart() const hash=window.location.hash const match=hash.match(/#(\d+)/) if(match){const n=parseInt(match[1],10) if(n>=(this.nav.post.currentPage-1)*100&&n{this.jumpTo(n)})}} this.$nextTick(()=>{this.addHeadingIds() tocbot.init({tocSelector:'.toc',contentSelector:'#post-content-0',headingSelector:'h2, h3, h4',headingsOffset:100,scrollSmoothOffset:-100,scrollSmooth:true,collapseDepth:6,onClick:function(e){setTimeout(()=>{history.replaceState(null,'',window.location.pathname+window.location.search)},0)},}) tocbot.refresh()});},beforeUnmount(){this.workerStop() if(this.quill){this.quill.destroy() this.quill=null}},computed:{dposts(){return this.posts.slice(20);},},created(){},methods:{successAlert(msg){this.alert={show:true,color:'success',text:msg,timeout:1500,}},failureAlert(msg){this.alert={show:true,color:'error',text:msg,timeout:5000,}},flipThemeDark(){this.theme.dark=!this.theme.dark localStorage.setItem("themeDark",JSON.stringify(this.theme.dark))},toSearch(){if(!this.search.text){this.failureAlert('搜索词不能为空') return} let keywords=this.search.text.trim() if(keywords.length<1){this.failureAlert('搜索词不能为空') return} if(keywords.length>100){this.failureAlert('搜索词过长') return} this.doSearch(keywords)},toReg(){window.location.href="/reg"},toLogin(){window.location.href="/login"},toPage(){let url=window.location.href url=url.replace(/(\/\d+)?(#[0-9]+)?$/,this.nav.post.targetPage>1?`/${this.nav.post.targetPage}`:'') window.location.href=url},toLoadRelated({done}){if(this.my&&this.my.uid){this.apiLoadRelated({done})}else{done('ok')}},workerStart(){this.nav.post.worker=setInterval(()=>{this.workerLoad()},500);},workerStop(){if(this.nav.post.worker){clearInterval(this.nav.post.worker);this.nav.post.worker=null;}},async jumpTo(num){const page=Math.floor(num/100)+1 const i=num-(page-1)*100 if(page===this.nav.post.currentPage){this.goTo("#post-"+num,this.nav.post.goToOptions) if(!this.posts[i].id){const block=Math.floor(num/20)+1 this.nav.post.apiLock[block]=true await this.apiLoadPosts(block) this.$nextTick(()=>{this.goTo("#post-"+num,this.nav.post.goToOptions)})}}else{let url=window.location.href url=url.replace(/(\/\d+)?(#[0-9]+)?$/,page>1?`/${page}`:'') url=url+"#"+num window.location.href=url}},postIntersect(num){return(isIntersecting,entries,observer)=>{if(isIntersecting){this.nav.post.task.push(num) this.nav.post.active.push(num) this.nav.post.active=this.nav.post.active.filter(item=>Math.abs(item-num)<=5) this.nav.post.active.sort((a,b)=>a-b)}else{this.nav.post.active=this.nav.post.active.filter(item=>item!==num)} if(this.nav.post.active[0]){this.nav.post.anchor=this.nav.post.active[0]}else{this.nav.post.anchor=0}}},async apiLoadPosts(block){try{const response=await axios.post('/fapi/v1/post/block/'+block,{discussionId:this.nav.post.discussionId,}) if(response.data.code===0){response.data.data.posts.forEach(post=>{const i=post.num%100 Object.assign(this.posts[i],post)}) response.data.data.users.forEach(user=>{this.usersMap.set(user.uid,user)})}else{this.failureAlert('回帖数据加载失败: '+response.data.msg)}}catch(error){this.failureAlert('回帖数据加载失败: '+error)} this.nav.post.apiLock[block]=false},workerLoad(){while(this.nav.post.task.length){const num=this.nav.post.task.pop() const i=num-(this.nav.post.currentPage-1)*100 if(!this.posts[i].id){const block=Math.floor(num/20)+1 if(!this.nav.post.apiLock[block]){this.nav.post.apiLock[block]=true this.apiLoadPosts(block)}}}},getTimeInfo(t){if(!t){return ""} const now=new Date();const then=new Date(t);const diff=now-then;const minute=60*1000;const hour=minute*60;const day=hour*24;const month=day*30;const year=month*12;if(diffpost.num===num) if(!post){return "#"+num} const uid=post.uid const username=this.usersMap.get(uid)?.username if(!username){return "#"+num} return username},getUsernameByPostId(id){const post=this.posts.find(post=>post.id===id) if(!post){return "#"+this.getPostNumByPostId(id)} const uid=post.uid const username=this.usersMap.get(uid).username if(!username){return "#"+this.getPostNumByPostId(id)} return username},getPostNumByPostId(id){const post=this.posts.find(post=>post.id===id) return post.num},getPostById(id){const post=this.posts.find(post=>post.id===id) return post},getPostByNum(num){const post=this.posts.find(post=>post.num===num) return post},getAvatarByUid(uid){const avatar=this.usersMap.get(uid)?.avatar if(!avatar){return this.getRandomAvatar()} return avatar},getAvatarByPostNum(num){const post=this.posts.find(post=>post.num===num) if(!post){return this.getRandomAvatar()} const uid=post.uid return this.getAvatarByUid(uid)},getRandomAvatar(){const num=Math.floor(Math.random()*100) return "https://randomuser.me/api/portraits/men/"+num+".jpg"},getUrlByUid(uid){const url=this.usersMap.get(uid)?.url if(!url){return ""} return url},getTextByPostNum(num){const post=this.posts.find(post=>post.num===num) if(!post||!post.content){return '点击跳转到#'+num+'查看'} const parser=new DOMParser() const doc=parser.parseFromString(post.content,'text/html') const text=doc.body.textContent||'' return text.slice(0,100)},addHeadingIds(){const content=document.getElementById('post-content-0') if(!content){this.nav.showTOC=false return} const headings=content.querySelectorAll('h2, h3, h4') headings.forEach((heading,index)=>{if(!heading.id){heading.id=`toc-nav-${index}`}}) if(headings.length==0){this.nav.showTOC=false}},async doSearch(keywords){this.search.loading=true try{const response=await axios.post('/fapi/v1/search',{keywords:keywords,}) if(response.data.code===0){if(response.data.data.hash&&response.data.data.hash.length===32){window.location.href="/s/"+response.data.data.hash}else{this.failureAlert('搜索失败: 搜索服务异常')}}else{this.failureAlert('搜索失败: '+response.data.msg)}}catch(error){this.failureAlert('搜索失败: '+error)} this.search.loading=false},debounce(fn,delay){let timer=null return function(...args){if(timer)clearTimeout(timer) timer=setTimeout(()=>{fn.apply(this,args)},delay);};},},watch:{'nav.post.targetPage':{handler:async function(newV,oldV){this.toPage()},immediate:false},},} const vuetify=createVuetify({defaults:{global:{ripple:true,},},}) const app=createApp(App) app.use(vuetify).mount("#app")