从国企到互联网大厂,我肠子都悔青了!
lipiwang 2024-11-02 13:40 13 浏览 0 评论
大家好,我是程序员小孟。
最接有个小伙伴私聊我:从稳定的国企,跳到了心心向往的大厂,虽然薪资很高,但是很痛苦,怎么办。[流泪]
小镇做题家出身,还不容易考上了一本,大学还算努力,后来保研了,硕士毕业后进入了国企,工作没有很大的难度,工资也算稳定,然后业余时间接了不少私活,没有买房,三年攒了100w左右。
后来想挑战自己,业余时间开始刷题、刷项目,然后上岸到了杭州的一家大厂,我和女朋友也开始了异地之恋,薪资翻了一倍,但是从去年开始我特别特别的难受。
一方面,女友有点接受不了,出现了问题我也不能像以前一样立马到她身边,她给我说的最多一句话是:没有安全感了。另一方面,工作压力很大,工作时间很长。
我性格比较内向,这边没有什么朋友,我不喜欢社交,每个月只有冰冷的工资数字能让我开心3秒钟,生活一点趣味没有。
后来一直这个状态,导致了工作上的开发任务一直完不成,有一次项目就因为我没有按时上线,我和领导都背了考核,精神和身心都累,感觉活的好没意思……
我真的不想在这边呆了。
期待小孟的回复……
其实给过很多人建议,但是还是要经过自己的思考,自己想要什么样的生活才是最重要的。真的不能给你很多的建议,我说下我自己吧。
我呆过很多的公司,也有一些公司给到过七位数的薪资,我没被诱惑到,我太清楚高薪资的背后是什么!
那就是付出,资本家不会给你一份不辛苦的工资的,什么样的工资对应什么什么样的价值,5k的工资,一个月开发几个增删改查的模块即可,15k的薪资,一个月要开发高并发的薪资,50k的薪资,要管理20人的团队,出了问题想找你,100k的薪资,对接甲方、对接运营、不要断开会,屁事一大堆。但凡薪资高的,忙的不可开交。
后来我辗转国企,每天9点上班6点下班,很少加班,周末双休,再搞些外快,赚的也还可以。
没有最好的,只有最适合自己的,鞋适不适合只有自己知道!
我找到适合自己的鞋用了8年!
我上次写拼夕夕996、加班严重,一个周后给了我律师函,说要起诉我,不得不说大厂的公关是真的猛。
现在我写文章、写代码、618钻石VIP活动,项目经惊艳!,VIP的各种优质项目,我会不断更新,照顾更多小伙伴学习。至少是幸福的,不羡慕别人,做自己,爱生活,我成为不了别人,别人也为不了我。
所以如果我是那位小伙伴的话,会回到对象身边,或者让对象过来一起工作。
国企+业余私活其实比大厂更爽!
程序员这行还算赚钱,实在没钱了,我就接几个商业单或者小单子,再拍拍视频,或者发个广告恰个饭。
我们跌跌撞撞,从国企到大厂,从大厂到国企,或者到中小厂,到运营商,不是为了涨薪,还是找到舒适的、适合自己的工作。
如今小孟也去了国企,标准的9点上班6点下班,周末不加班,端午节三天海边游玩,想起当年在大厂假期除了加班就是项目上线。
其实在海边也可以写代码!!!
一个小伙伴去米哈游了,看一下他当时面试题,我整理了几个比较经典的问题,附带答案,感兴趣的小伙伴可以挑战下。
有哪些SQL优化策略?
1.1 优化 COUNT 查询
COUNT 的另?个作?是统计结果集的?数,当使? COUNT(*) 时,* 不会扩展成所有列,它会忽略所有的列?直接统计所有的?数。
但是某些业务不需要count值,用这个太浪费了,可以用explain替换,执行EXPLAIN 并不需要真正地执?查询。
1.2 优化关联查询
确保 ON 或 USING ?句中的列上有索引,在创建索引时就要考虑到关联的顺序。
如果在 MySQL 5.5 及以下版本尽量避免?查询,可以?关联查询代替。
1.3 优化limit分页
可以要么在页面中限制页的数量,要么是优化大偏移量的性能。最好的方法是尽可能地使用覆盖索引扫描,而不是查询所有的列,然后根据需要做?次关联操作再返回所需的列。
1.4 优化 UNION 查询
尽量使用UNION ALL,如果没有 ALL 关键字,MySQL 会给临时表加上 DISTINCT 选项,这会导致对整个临时表的数据做唯?性检查,这样做的代价非常高,得不偿失。
其他还有非常多的优化技巧,可以再多说几条。
进程和线程的区别是什么
线程是进程中执行运算的最小单位,是进程中的一个实体。
进程:每个进程都有独立的代码和数据空间(进程上下文),进程间的切换会有较大的开销,一个进程包含1–n个线程。
线程:同一类线程共享代码和数据空间,每个线程有独立的运行栈和程序计数器。
进程是程序的一次执行,是系统进行资源分配和调度的独立单位,他的作用是是程序能够并发执行提高资源利用率和吞吐率。
由于进程是资源分配和调度的基本单位,因为进程的创建、销毁、切换产生大量的时间和空间的开销,进程的数量不能太多,而线程是比进程更小的能独立运行的基本单位,他是进程的一个实体,可以减少程序并发执行时的时间和空间开销。
线程基本不拥有系统资源,只有一些运行时必不可少的资源,比如程序计数器、寄存器和栈,进程则占有堆、栈。
主线程的重要性体现在两个方面:
- 它是产生其他子线程的线程。
- 通常它必须最后完成执行,因为它执行各种关闭动作。
如何合并两个有序链表?
思路:首先,我们设定一个哨兵节点 dum,这可以在最后让我们比较容易地返回合并后的链表。我们维护一个 cur 指针,我们需要做的是调整它的 next 指针。然后,我们重复以下过程,直到 l1 或者 l2 指向了 null :如果 l1 当前节点的值小于等于 l2 ,我们就把 l1 当前的节点接在 cur 节点的后面同时将 l1 指针往后移一位。否则,我们对 l2 做同样的操作。不管我们将哪一个元素接在了后面,我们都需要把 cur 向后移一位。
在循环终止的时候,l1 和 l2 至多有一个是非空的。由于输入的两个链表都是有序的,所以不管哪个链表是非空的,它包含的所有元素都比前面已经合并链表中的所有元素都要大。这意味着我们只需要简单地将非空链表接在合并链表的后面,并返回合并链表即可。**注意最后返回的是 dum.next **
代码实现:
/**
*小孟微:fly996868
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
if(l1==null) {
return l2;
}else if(l2==null) {
return l1;
}
ListNode dum = new ListNode();
ListNode cur = dum;
while(l1!=null&&l2!=null) {
if(l1.val>l2.val) {
cur.next=l2;
cur=cur.next;
l2=l2.next;
}else {
cur.next=l1;
cur=cur.next;
l1=l1.next;
}
}
if(l1==null) {
cur.next=l2;
}else {
cur.next=l1;
}
return dum.next;
}
}
直接选择排序的原理是什么?
每次在未排序序列中找到最小元素,和未排序序列的第?个元素交换位置,再在剩余未排序序列中重复 该操作直到所有元素排序完毕。
public void selectSort(int[] nums)
{ int minIndex;
for (int index = 0; index < nums.le ngth - 1;index++)
{ minIndex = index;
for (int i = index + 1;i < nums.length; i++)
{
if(nums[i] < nums[minIndex])
minIndex = i;
}
if (index != minIndex){ swap(nums, index, minIndex);
}
}
}
说下Hash实现的原理?
1)HashMap 基于 Hash 算法实现的,我们通过 put(key,value)存储,get(key)来获取。
2)当传入 key 时,HashMap 会根据 key. hashCode() 计算出 hash 值,根据 hash 值将 value 保存在 bucket 里。
3)当计算出的 hash 值相同时,我们称之为 hash 冲突,HashMap 的做法是用链表和红黑树存储相同 hash 值的 value。当 hash 冲突的个数比较少时,使用链表否则使用红黑树。
介绍下你的项目,通过什么技术解决了什么问题?
- 使用分布式Seesion,可以实现让多台服务器同时可以响应。
- 使用redis做缓存提高访问速度和并发量,减少数据库压力,利用内存标记减少redis的访问。
- 使用页面静态化,加快用户访问速度,提高QPS,缓存页面至浏览器,前后端分离降低服务器压力。
- 使用消息队列完成异步下单,提升用户体验,削峰和降流。
- 安全性优化:双重md5密码校验,秒杀接口地址的隐藏,接口限流防刷,数学公式验证码。
Spring中用到了哪些设计模式?
工厂模式:Spring通过BeanFactory和ApplicationContext实现对象的创建。BeanFactory是Spring中最基础的容器,提供了最基本的依赖注入支持;而ApplicationContext是基于BeanFactory之上构建的,提供了更多企业级功能。
单例模式:在Spring中,默认bean的作用域是singleton,这意味着每个bean在Spring IoC容器中只有一个共享实例。这是通过使用ConcurrentHashMap维护单例注册表来实现的。
原型模式:与单例模式相对应,原型(prototype)作用域的bean每次请求都会创建一个新的实例,确保每个请求获得的是全新的对象副本。
代理模式:Spring广泛使用Java动态代理和CGLib来创建对象的代理,以实现诸如事务管理、权限检查等功能。
观察者模式:在Spring中,观察者模式可用于实现事件发布和监听机制,例如ApplicationListener用于监听应用程序上下文的事件。
适配器模式:Spring MVC中的Controller接口可以看作是适配器模式的一个应用,它允许将不同类型的请求处理逻辑适配到统一的接口下。
Spring框架通过运用多种设计模式,实现了代码的低耦合、高扩展性,并简化了开发过程。
设计模式,我们已经开源过完美的教程:
https://www.bilibili.com/video/BV1o441157xk/?spm_id_from=333.999.0.0
说说TCP3次握手的过程?为啥不4次呢?
第一次握手:客户端发送一个带有SYN标志的TCP段给服务器,询问它是否愿意建立连接。此段包含一个随机的序列号seq,这是TCP报文的初始序列号。
第二次握手:服务器以一个既确认客户端的SYN(ACK标志位为1),又对客户端发起自己的SYN进行响应的TCP段回复。这个段中的确认序号ack设置为客户端初始序列号加1(即seq+1),同时服务器也会设置自己的初始序列号在TCP段中。
第三次握手:客户端收到服务器的SYN-ACK报文后,会发送一个ACK报文回复服务器,确认号码ack设置为服务器的初始序列号加1(即服务器的seq+1)。
如果只有两次,无法做到双向连接的建立,从建立连接server回复的SYN和ACK合并成一次可以看出来,他也不需要4次。
三次握手确保了双方都有能力进行数据的发送和接收,这是通过第二次和第三次握手中双方分别确认对方的SYN和ACK消息来实现的。
TCP的三次握手过程是经过精心设计的,旨在确保连接的可靠性和安全性。
mysql主从同步的步骤是什么?
安装与配置
安装数据库
主数据库配置:在主库的配置文件my.cnf中设置server_id,开启并配置binlog相关参数,如log_bin, binlog_format, max_binlog_size等。
从数据库配置:在从库的配置文件中也需要设置server_id,并配置相关的复制参数,如relay_log_recovery, log_slave_updates等。
创建同步用户
锁定主库表:为了确保数据的一致性,需要先锁定主库的表,防止在备份过程中数据被修改。
备份数据:使用mysqldump工具备份需要同步的数据库。
导入到从库:在从库创建相应的数据库并导入备份数据。
设置同步信息
获取主库状态:通过show master status命令获取主库的二进制日志文件名和位置。
配置从库:在从库上设置主库的信息,包括master_host, master_user, master_password, master_log_file, master_log_pos等,然后启动从服务。
检查同步状态
查看同步状态:通过show slave status\G;命令检查从库的同步状态,确认Slave_IO_Running和Slave_SQL_Running状态均为Yes。
解锁主库表
解锁主库表:确认从库已经开始同步后,可以解锁主库的表,允许数据写入。
解决不同步问题
处理错误:如果发现主从数据不同步,可以通过设置sql_slave_skip_counter来跳过错误,或者重新进行数据同步。
欢迎一起学习
最近很多小伙伴需要很多项目,小孟弄了个VIP群,更新了四年半的项目都是原创,而且我在持续更新,都是优质项目,随便一个项目就回本了,目前有40几个,如果想学习随时找我:http://t.cn/A6HFehf3
技术改变世界,知识改变命运!!
- 上一篇:MySQL基础知识:启动管理和账号管理
- 下一篇:利用多实例数据库,建立主从数据库
相关推荐
- 一个简单便捷搭建个人知识库的开源项目(MDwiki)
-
这里我通过自动翻译软件,搬运总结MDwiki官网的部署和使用方法。第一步:下载编译好的后MDwiki文件,只有一个HTML文件“mdwiki.html”。第二步:在mdwiki.html同级目录创建“...
- 强大、简洁、快速、持续更新 PandaWiki新一代 AI 驱动的开源知识库
-
PandaWiki是什么PandaWiki是一款AI大模型驱动的开源知识库搭建系统,帮助你快速构建智能化的产品文档、技术文档、FAQ、博客系统,借助大模型的力量为你提供AI创作、AI问答...
- DeepWiki-Open: 开源版Deepwiki,可自己构建github文档库
-
Deepwiki是Devin团队开发的github文档库,用户能免费使用,但代码不是开源,而DeepWiki-Open侧是开源版本的实现。DeepWiki-Open旨在为GitHub和GitLa...
- 最近爆火的wiki知识管理开源项目PandaWiki
-
项目介绍PandaWiki是一款AI大模型驱动的开源知识库搭建系统,帮助你快速构建智能化的产品文档、技术文档、FAQ、博客系统,借助大模型的力量为你提供AI创作、AI问答、AI搜索等...
- 轻量级开源wiki系统介绍(轻量开源论坛系统)
-
wiki系统有很多DokuWiki、MediaWiki、MinDoc等等都是开源的wiki系统。商业版的wiki,像很多企业在用的confluence等。今天我们讲的是一款轻量级且开源的文档管理系统:...
- DNS解析错误要怎么处理(dns解析状态异常怎么办)
-
在互联网时代,网络已经成为人们生活和工作中不可或缺的一部分。然而,当遇到DNS解析错误时,原本畅通无阻的网络访问会突然陷入困境,让人感到十分困扰。DNS,即域名系统,它如同互联网的电话簿,将人们易于...
- 网页加载慢?这些方法让你秒开网页!
-
打开浏览器,信心满满地准备查资料、看视频或者追剧,却发现网页怎么都打不开!是不是瞬间感觉手足无措?别慌,这个问题其实挺常见,而且解决起来并没有你想象的那么复杂。今天就来聊聊网页打不开究竟是怎么回事,以...
- windows11 常用CMD命令大全(windows11msdn)
-
Windows11中的命令提示符(CMD)是一个强大的工具,可以通过命令行执行各种系统操作和管理任务。以下是一些常用的CMD命令,按功能分类整理,供你参考:一、系统信息与状态systeminfo显...
- 电脑提示DNS服务器未响应怎么解决?
-
我们在使用电脑的时候经常会遇到各种各样的网络问题,例如最近就有Win11电脑用户在使用的时候遇到了DNS未响应的问题,遇到这种情况我们应该怎么解决呢? 方法一:刷新DNS缓存 1、打开运行(W...
- 宽带拨号错误 651 全解析:故障定位与修复方案
-
在使用PPPoE拨号连接互联网时,错误651提示「调制解调器或其他连接设备报告错误」,通常表明从用户终端到运营商机房的链路中存在异常。以下从硬件、系统、网络三层维度展开排查:一、故障成因分类图...
- 如何正确清除 DNS 缓存吗?(解决你访问延时 )
-
DNS缓存是一个临时数据库,用于存储有关以前的DNS查找的信息。换句话说,每当你访问网站时,你的操作系统和网络浏览器都会保留该域和相应IP地址的记录。这消除了对远程DNS服务器重复查询的...
- 网络配置命令:ipconfig和ifconfig,两者有啥区别?
-
在计算机网络的世界里,网络接口就像是连接你电脑和外部网络的桥梁,而网络配置则是确保这座桥梁稳固、通信顺畅的关键。提到网络配置工具,ipconfig和ifconfig绝对是两个绕不开的名字。它们一...
- 救急的命令 你会几个?(救急一下)
-
很多人都说小编是注册表狂魔,其实不完全是,小编常用的命令行才是重点。其实所谓的命令行都是当初DOS时代的标准操作方式,随着Windows不断演化,DOS的命令早已成为Windows的一部分了——开始菜...
- 电脑有网却访问不了GitHub原来是这样
-
当满心欢喜打开电脑,准备在GitHub这个“开源宝藏库”里挖掘点超酷的项目,却遭遇了网页无法访问的尴尬。看着屏幕上那令人无奈的提示,原本高涨的热情瞬间被泼了一盆冷水,是不是感觉世界都不美好了...
- rockstargames更新慢| r星更新速度 怎么办 解决办法
-
rockstargames更新慢|r星更新速度怎么办解决办法说到RockstarGames,那可是游戏界的大佬,作品个顶个的经典。但话说回来,每当新内容更新时,那蜗牛般的下载速度,真是让人急得...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- maven镜像 (69)
- undefined reference to (60)
- zip格式 (63)
- oracle over (62)
- date_format函数用法 (67)
- 在线代理服务器 (60)
- shell 字符串比较 (74)
- x509证书 (61)
- localhost (65)
- java.awt.headless (66)
- syn_sent (64)
- settings.xml (59)
- 弹出窗口 (56)
- applicationcontextaware (72)
- my.cnf (73)
- httpsession (62)
- pkcs7 (62)
- session cookie (63)
- java 生成uuid (58)
- could not initialize class (58)
- beanpropertyrowmapper (58)
- word空格下划线不显示 (73)
- jar文件 (60)
- jsp内置对象 (58)
- makefile编写规则 (58)