我们如何拿到自己满意的薪资呢?这些套路还是需要掌握的_如何拿到心仪的薪资

网络安全学习资源与职业发展指南:系统化路径与薪资策略

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新网络安全全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上网络安全知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip204888 (备注网络安全)
img

正文

  1. 现在不达标
  2. 达标

能力匹配模型

拿公司分组与自己的能力分组做匹配,可以找到比较适合的公司或岗位。

再要评定市场价格

确定了目标公司或者目标岗位,接下来就需要搞清楚对应的薪资范围了。

之所以只能搞清楚范围,是因为大部分公司都是密薪,明文规定严禁同事之间讨论薪资,私下讨论的情况也存在,如果不是非常要好的朋友,你又怎知他说的是否有水分。还一个原因,薪资结构比较复杂,工资、年终奖、五险一金、期权、股票、过节费、房补、餐补、加班费……所以能够了解一个范围,就已经很好了。

再要评定市场价格

一般有下面几种方式:

  1. 咨询前同事。如果有一个恰好刚跳槽的同事,他跳槽的公司正好是你目标公司或者同类公司,那就可以问他了,约出来撸串吃饭,几杯酒下肚,大家就是兄弟。而且还能聊聊原来的薪资,如果聊得好,还能知道其他同事的薪资。
  2. 某脉职言挖掘信息。直接找在某脉的职言频道找人问,总会找到那种喜欢聊天的耿直 boy。多聊几个,聊聊基本工资,聊聊年终奖,期权和股票估计是问不到了。
  3. 某聘找职位。一般来说,招聘平台发布的职位信息,都是标着薪资面议。有的猎头发的职位会标注薪资范围,可以作为判定依据。多找一些相似岗位、相似量级的公司对比,通过取交集的方式,能够筛选出一个大概的数据范围。
  4. 根据自身薪资定位。如果准备是从互联网跳互联网,比较好的是可以根据自己的薪资做判断。目前很多人薪资涨幅比例是 20%,能够达到 50%的就比较少了,直接涨幅 100%就更少了。这个涨幅指的是工资,其他方面的涨幅就看个人了。

明确了心意,确定了薪资范围。那就需要给自己定一个比较靠谱的目标了,比如,目标公司是什么,期望薪资是多少,准备争取哪种岗位。

投递简历找准路

找到心仪的公司之后,接下来就是要投递简历。这里会有几种操作:

  1. 直接投递招聘信息
  2. 找朋友内推
  3. 联系猎头
自己敲门恐费时

刚毕业或者工作 1-3 年的,都会在招聘网站找工作。这个时候自己的履历一般,没有能够很吸引人的地方,挂在网上很久都不会有人看,主动投递也会被卡脖子。如果有岗位比较急的,从筛选简历到面试会进行的很快,否则就直接进人才库。这就是卖方市场。

3-5 年,会出现第一个分水岭,有的人简历一旦挂上去,就会很多人找过来;有的人却是无人问津。第一种,随着工作的深入,经历的项目多了,能力有了很大的提升,成为了大家都喜欢的香饽饽。第二种,5 年工作 1 年经验,一直在做重复的工作,没有什么技术含量,做的项目也都拿不出手。市场不缺普通工,缺的是高级工。

投递简历找准路

因此,给 3-5 年的小伙伴一个建议,不要虚度光阴,现在的你已经能够胜任大部分工作,那就去挑战更有难度的工作。走平路甚至走下坡路是最省事的,向上攀爬是辛苦的,“世之奇伟、瑰怪,非常之观,常在于险远”,不要只是羡慕别人看到了美丽的风景,自己也上去看看。

5-10 年及以后,自己刷简历找工作比较少了,一般会借助熟人内推或者通过猎头了。

熟人内推挺靠谱

熟人内推是比较推崇的一种,适合 3 年以后的同学。一般公司都会鼓励内推,理由是“物以类聚人以群分”,优秀的人周围一般也是优秀的人,有很大概率,被内推的人也是能够胜任工作的。而且,为了鼓励本公司内推,帮着公司挖人,还设置了内推奖之类的。

前几年有句话比较流行“花若盛开,蝴蝶自来”。你是什么样的人,决定了你周围人的样子,同样的,你周围是什么人,也决定了你的样子。我们都生活在社会中,每天与很多人擦肩而过,与很多人协作共事,我们所散发的能量,会吸引相同频率的人。不要去妄图结交大佬,加了微信好友,可能只是对方的小号,亦或是直接被收进某个群组、打上某个标签。当自己成为了大佬,他自然会是你的朋友。

熟人内推挺靠谱

话说想要内推的可以后台留言细聊

找找猎头也不错

找猎头也是个不错的选择,当然需要有一定能力后。如果是小白,那这一单成功率不高,猎头自然不会很上心。但这并不妨碍小白的时候就加一些猎头好友,你能够从他的朋友圈一些业内动态。而且,可以告诉他自己的下一个目标,问问有没有什么要求(一定会有的),然后就可以有的放矢的朝着那个方向使劲了。

这里给猎头同学正名,不要把他们当成假想敌,其实你和猎头才是一伙的。因为最后拿提成时,猎头的提成是根据你的职级和薪资确定的。明白了吧,在你拿到 offer 入职之前,他都会帮你很多。我认识好几个这么优秀的猎头,如果需要可以加我微信,推荐给你。

找找猎头也不错

面试博弈小妙招

前面都做好了之后,就该进入到面试环节,面试就是纯看实力和运气的过程,没有什么取巧的妙招,只能稳扎稳打的准备。所以,这里只有正常面试 ok 之后的谈薪技巧。

谈薪博弈先锚定

有的面试技巧会告诉你,被问到期望薪资的时候,要说一个范围,不要直接说固定值,这样也能有迂回的空间。但是,是否有想过,你给自己的迂回空间,恰恰让对方知道了你的底线。比如 5000-8000,对方给出 5000 的薪资,这个 offer 你是接还是不接,接了心理不舒服,不接又在自己给出的范围。所以,直接给出一个自己的期望值,这个值是高于你的底线的。

这里需要强调一下,我们所给出的期望薪资,不是拍脑袋的,而是根据前期的调研给出的相对合理的薪资。比如市场普遍的范围在 6000-9000,你直接要 10000。这样不会让对方高看你,只是从侧面告诉对方你不懂行情,可以随意忽悠你了。

心理学上有个锚定效应,简单的说,结果会偏向先提出期望值的一方。

谈薪博弈先锚定

这里再说一个技巧,就是告诉对方期望薪资之前,要问一下面试公司的薪酬结构、五险一金缴纳情况、福利情况等,最好在眉头紧锁,假装自己核算(真的算也行,但这需要一定的心算能力),然后给出结果。是不是显得很专业,是不是这样的结果更能让对方信服。

入职时间留出 buffer

有时候,在最终发 offer 前,面试官会问入职时间。假设你现在是离职状态,非常急着找工作,也不要直接回答随时,因为你不可能随时。我所面试的公司,都会在发 offer 之后,要求背调,一般会委托背调公司进行,时间大约在 2-3 天。然后入职需要的手续、证件等,公司还需要提前准备,所以完全不可能今天发 offer,明天就能入职。

回答随时,只会让面试官感觉你很着急入职,可能在薪资上再压一压。这里再给 HR 正名,压薪资的真不一定是 HR,也有可能是你的上级领导。上级领导需要控人力成本,HR 负责你入离职,所以,谁最有可能压你的工资呢?

如果是在职,标准的回答是:收到 offer 之后,会立马提交离职信息,准备交接工作,按照规定,需要 1 个月的离职交接时间,我会争取能够提前,所以月内可以到岗。

如果是离职状态,标准回答是:收到 offer 之后,会开始为入职做准备,同时也会协调好自己的时间,如果公司比较着急,可以 1 周内到岗。

晋升路径问清楚

这是一个建议,是可选项。问情况晋升路径。我们工作说白了就是升职加薪,然后实现自我价值。如果不能升职,很有可能加薪无望。所以,一定要知道升职的路径。

晋升路径问清楚

说起这个,奉劝一下小伙伴,换工作,我们不能只考虑加薪,不考虑职位。有时候,我们在原单位职位已经达到一定等级,然后开始找到一个薪资不错的工作,但是职级降了。如果是你,你会怎么选?

我的建议是,如果原来只是个小组长,降为普通组员,那无关痛痒,自己看心情决定。但是如果原来是总监,降为小组长,就需要考虑一下了。这种变动差距太大,你的话语权、决策权,甚至是你所能产生的能量,都缩小太多。这个时候不是考虑是否要换工作,而是需要认真思考自己的定位是否准确。是原来的职位太高,还是自己面试时候降得太低?如果这点没有想清楚,建议还是不要一时冲动。

祝君早日心自由

一、网安学习成长路线图

网安所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
在这里插入图片描述

二、网安视频合集

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
在这里插入图片描述

三、精品网安学习书籍

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。
在这里插入图片描述

四、网络安全源码合集+工具包

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
在这里插入图片描述

五、网络安全面试题

最后就是大家最关心的网络安全面试题板块
在这里插入图片描述在这里插入图片描述

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注网络安全)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

究,那么很难做到真正的技术提升。**

需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注网络安全)
[外链图片转存中…(img-1AIW52gL-1713373553605)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

<think>我们正在处理一个Android开发问题:Activity如何获取通过startService()启动的Service中的值。根据提供的引用,我们得知:引用[1]提到在Android8.0以后,在Activity中直接调用startService可能会报错(IllegalStateException),这提示我们需要注意后台服务的限制。引用[2]展示了在Service中启动Activity时需要注意添加FLAG_ACTIVITY_NEW_TASK标志,否则会报错。引用[3]介绍了ActivityManagerService(AMS)的相关信息,但当前问题可能不需要深入AMS。用户的核心问题是:Activity如何获取由startService启动的Service中的值。分析:startService()启动的Service与启动它的组件(如Activity)并不直接建立连接(与bindService不同),因此无法直接通过Service的Binder对象获取返回值。常见的方法是通过广播(Broadcast)、文件共享、全局变量(单例模式)、EventBus等事件总线方式,或者使用回调(但回调在非绑定模式下需谨慎使用,因为Service生命周期独立)。方案步骤:1.在Service中,当有需要传递的值时,发送一个广播(Broadcast),并在广播中包含要传递的值。2.在Activity中注册一个广播接收器(BroadcastReceiver),用于接收该广播并获取值。3.注意在Activity的onResume()中注册广播,在onPause()中注销,避免内存泄漏和无效接收。4.由于Android8.0(API26)开始对隐式广播有限制,因此需要使用显式广播(指定包名或ComponentName)或者使用LocalBroadcastManager(但LocalBroadcastManager已被弃用,推荐使用LiveData或EventBus等替代方案,或者在应用内使用显式广播)。另一种方案(推荐):使用回调机制,但需要考虑Service的生命周期独立于Activity,因此要防止内存泄漏。可以采用弱引用或软引用的方式,或者使用LiveData(结合ViewModel)来实现观察。然而,由于问题中强调是通过startService启动的服务,我们无法直接获取Service的实例,因此广播或事件总线是常用方法。示例代码:我们使用广播方式来实现(注意:如果针对Android8.0及以上,发送广播时最好使用显式Intent):步骤1:在Service中发送广播```javapublicclassMyServiceextendsService{//...其他代码privatevoidsendValueToActivity(Stringvalue){Intentintent=newIntent("com.example.ACTION_MY_BROADCAST");intent.putExtra("value_key",value);//针对Android8.0及以上,需要设置包名,确保广播是显式的intent.setPackage(getPackageName());sendBroadcast(intent);}}```步骤2:在Activity中注册广播接收器```javapublicclassMyActivityextendsAppCompatActivity{privateBroadcastReceiverreceiver=newBroadcastReceiver(){@OverridepublicvoidonReceive(Contextcontext,Intentintent){if(intent!=null&&intent.getAction()!=null&&intent.getAction().equals("com.example.ACTION_MY_BROADCAST")){Stringvalue=intent.getStringExtra("value_key");//更新UI}}};@OverrideprotectedvoidonResume(){super.onResume();IntentFilterfilter=newIntentFilter("com.example.ACTION_MY_BROADCAST");//注册广播接收器registerReceiver(receiver,filter);}@OverrideprotectedvoidonPause(){super.onPause();//注销广播接收器unregisterReceiver(receiver);}//启动服务privatevoidstartMyService(){IntentserviceIntent=newIntent(this,MyService.class);//处理Android8.0及以上启动服务的限制if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.O){startForegroundService(serviceIntent);}else{startService(serviceIntent);}}}```注意:在Android8.0(Oreo)及以上,后台启动服务受限制,如果Service不需要在前台运行,那么不能通过startService()启动,除非应用处于前台(比如Activity处于前台)。因此,我们通常使用startForegroundService(),并且Service必须在创建后5秒内调用startForeground(),否则会出现ANR。但是,如果只是需要传递一次数据(比如Service执行一个任务后返回结果),那么可以考虑使用IntentService(在Android8.0上也被限制)或JobIntentService(兼容方案)。不过IntentService在API30已被弃用。因此,更推荐使用WorkManager来处理后台任务,并通过LiveData等方式传递结果。根据用户问题,我们主要关注如何获取值,所以提供广播方案。相关问题:由于用户可能想了解其他方法,我们生成以下问题:§§相关问题§§1.除了广播,还有哪些方法可以在Activity中获取startService启动的Service传递的值?2.如何解决Android8.0及以上版本后台启动服务的限制?3.如何防止在广播接收器中因为Activity关闭而导致的异常?</think> 在Android中,Activity获取通过`startService()`启动的Service中的值,需要通过**跨进程通信机制**实现。以下是具体方案和步骤: --- ### 解决方案(基于广播或绑定服务) #### 方法1:使用广播(Broadcast) 1. **Service端**:当Service完成数据处理后,发送携带数据的广播 ```java // 在Service中 Intent broadcastIntent = new Intent("com.example.DATA_UPDATE_ACTION"); broadcastIntent.putExtra("key", dataValue); // 添加要传递的数据 sendBroadcast(broadcastIntent); // 发送广播 ``` 2. **Activity端**:动态注册广播接收器 ```java // 在Activity中 private BroadcastReceiver receiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { if ("com.example.DATA_UPDATE_ACTION".equals(intent.getAction())) { String value = intent.getStringExtra("key"); // 获取数据 // 更新UI或处理数据 } } }; @Override protected void onResume() { super.onResume(); registerReceiver(receiver, new IntentFilter("com.example.DATA_UPDATE_ACTION")); } @Override protected void onPause() { super.onPause(); unregisterReceiver(receiver); // 避免内存泄漏 } ``` #### 方法2:绑定服务(BindService + Messenger) 1. **Service端**:创建Messenger ```java public class MyService extends Service { private final Messenger messenger = new Messenger(new IncomingHandler()); class IncomingHandler extends Handler { @Override public void handleMessage(Message msg) { // 可在此处理Activity的请求 } } @Override public IBinder onBind(Intent intent) { return messenger.getBinder(); } } ``` 2. **Activity端**:绑定并获取数据 ```java private Messenger serviceMessenger; private ServiceConnection connection = new ServiceConnection() { @Override public void onServiceConnected(ComponentName name, IBinder binder) { serviceMessenger = new Messenger(binder); // 发送消息请求数据 Message msg = Message.obtain(null, REQUEST_DATA); msg.replyTo = activityMessenger; // 设置回复通道 serviceMessenger.send(msg); } }; // 启动并绑定服务 Intent serviceIntent = new Intent(this, MyService.class); startService(serviceIntent); // 保持后台运行 bindService(serviceIntent, connection, Context.BIND_AUTO_CREATE); ``` --- ### ⚠️ 关键注意事项 1. **Android 8.0+限制**: - 后台启动服务需使用`startForegroundService()`并显示通知 - 5秒内必须调用`startForeground()`,否则会报`ANR`[^1] 2. **跨进程数据传递**: - 复杂对象需实现`Parcelable`接口 - 大数据量考虑`ContentProvider`或`SharedPreferences` 3. **生命周期同步**: - 使用`LiveData`或`RxJava`可简化数据观察 - 结合`ViewModel`避免内存泄漏 --- ### 示例时序 ```mermaid sequenceDiagram Activity->>Service: startService(intent) Service-->>Activity: 发送广播(携带数据) Activity->>BroadcastReceiver: 接收并处理数据 Activity->>Service: unbindService() // 及时解绑 ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值